intentkit 0.17.43__tar.gz → 0.17.45__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {intentkit-0.17.43 → intentkit-0.17.45}/PKG-INFO +3 -3
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/__init__.py +1 -1
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/__init__.py +8 -1
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/management.py +45 -1
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/avatar.py +63 -12
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/engine.py +12 -1
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/team/membership.py +61 -17
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/llm.py +43 -41
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/team.py +8 -1
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/base.py +104 -83
- {intentkit-0.17.43 → intentkit-0.17.45}/pyproject.toml +3 -3
- {intentkit-0.17.43 → intentkit-0.17.45}/.gitignore +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/LICENSE +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/app/team/intentkit/docker-compose.yml +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/.dockerignore +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/LICENSE +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/MANIFEST.in +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/engine.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/graph.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/skill.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/twitter.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/abstracts/wallet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/mcp/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/mcp/client.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/mcp/registry.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/mcp/tool.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/mcp/wrapper.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/moralis.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/s3.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/s3_setup.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/supabase.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/twitter.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/clients/web3_ens.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/config/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/config/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/config/config.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/config/db.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/config/db_mig.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/config/redis.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/account_checking.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/analytics.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/notifications.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/public_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/queries.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent/wallet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent_activity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/agent_post.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/asset.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/autonomous.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/budget.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/chat.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/cleanup.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/client.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/adjustment.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/expense.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/list_events.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/plan_credit.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/recharge.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/refill.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/reward.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/credit/withdraw.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/draft.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/draft_chat.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/executor.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/cache.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/engine.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/service.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/add_autonomous_task.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/call_agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/create_team_agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/delete_autonomous_task.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/edit_autonomous_task.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/get_post.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/get_self_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/get_team_agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/get_team_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/list_autonomous_tasks.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/list_skills.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/list_team_agents.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/llm.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/recent_team_activities.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/recent_team_posts.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/update_self.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/update_self_memory.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/skills/update_team_agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/sub_agents/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/sub_agents/agent_manager.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/sub_agents/content_manager.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/sub_agents/self_updater.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/lead/sub_agents/task_manager.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/engine.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/service.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/add_autonomous_task.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/delete_autonomous_task.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/draft.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/edit_autonomous_task.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/list_autonomous_tasks.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/llm.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/manager/skills/public_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/memory.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/middleware.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/prompt.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/public_agents.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/public_api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/scheduler.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/statistics.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/call_agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/create_activity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/create_post.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/current_time.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/get_post.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/read_webpage.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/recent_activities.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/recent_posts.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/search_web.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/system_skills/update_memory.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/task_registry.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/team/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/team/channel.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/team/feed.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/team/push.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/team/subscription.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/template.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/core/user.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/agent.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/autonomous.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/core.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/db.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/public.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/public_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/response.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent/user_input.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent_activity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/agent_post.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/app_setting.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/chat.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/credit/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/credit/account.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/credit/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/credit/event.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/credit/price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/credit/transaction.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/draft.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/llm.csv +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/llm_picker.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/skill.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/team_channel.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/team_feed.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/template.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/user.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/user_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/models/x402_order.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/aave_v3.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/borrow.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/get_reserve_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/get_user_account_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/repay.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/set_collateral.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/supply.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aave_v3/withdraw.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/acp.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/cancel_checkout.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/complete_checkout.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/create_checkout.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/get_checkout.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/list_products.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/acp/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/add_liquidity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/aerodrome.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/get_positions.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/quote.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/remove_liquidity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/swap.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aerodrome/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aixbt/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aixbt/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aixbt/aixbt.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aixbt/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aixbt/projects.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/aixbt/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/allora/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/allora/allora.jpeg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/allora/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/allora/price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/allora/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/basename/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/basename/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/basename/basename.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/basename/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/basename/register.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/basename/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/carv.webp +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/fetch_news.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/onchain_query.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/carv/token_info_and_price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/casino.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/deck_draw.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/deck_shuffle.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/dice_roll.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/casino/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/cdp.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/get_balance.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/get_wallet_details.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/native_transfer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cdp/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/chainlist/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/chainlist/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/chainlist/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/chainlist/chain_lookup.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/chainlist/chainlist.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/chainlist/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/cookiefun.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/get_account_details.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/get_account_feed.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/get_account_smart_followers.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/get_sectors.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cookiefun/search_accounts.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/cryptocompare.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/fetch_news.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/fetch_price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/fetch_top_exchanges.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/fetch_top_market_cap.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/fetch_top_volume.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/fetch_trading_signals.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptocompare/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptopanic/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptopanic/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptopanic/cryptopanic.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptopanic/fetch_crypto_news.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/cryptopanic/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dapplooker/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dapplooker/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dapplooker/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dapplooker/dapplooker.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dapplooker/dapplooker_token_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dapplooker/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_block.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_current_prices.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_first_price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_historical_prices.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_price_chart.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/coins/fetch_price_percentage.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/config/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/config/chains.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/defillama.jpeg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/fees/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/fees/fetch_fees_overview.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/stablecoins/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tests/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tests/api_integration.test.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tests/api_unit.test.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/fetch_chains.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/fetch_historical_tvl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/fetch_protocol.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/tvl/fetch_protocols.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/volumes/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/volumes/fetch_dex_overview.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/volumes/fetch_dex_summary.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/volumes/fetch_options_overview.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/yields/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/yields/fetch_pool_chart.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/defillama/yields/fetch_pools.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/dexscreener.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/get_pair_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/get_token_pairs.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/get_tokens_info.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/model/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/model/search_token_response.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/search_token.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dexscreener/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/dune.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/execute_query.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/get_query_results.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/run_sql.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/dune/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/elfa.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/mention.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/stats.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/tokens.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/elfa/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/abi/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/abi/approval.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/abi/erc20.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/abi/route.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/best_yield.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/enso.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/networks.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/prices.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/route.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/tokens.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/enso/wallet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/erc20.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/get_balance.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/get_token_address.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/transfer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc20/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/erc721.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/get_balance.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/mint.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/erc721/transfer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/clear.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/crawl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/firecrawl.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/query.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/scrape.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/firecrawl/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/github/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/github/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/github/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/github/github.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/github/github_search.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/github/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/heurist.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_animagine_xl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_arthemy_comics.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_arthemy_real.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_braindance.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_flux_1_dev.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/image_generation_sdxl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/heurist/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/get.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/http.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/post.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/put.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/http/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/gemini.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/gpt.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/grok.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/image.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/minimax.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/openrouter.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/image/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/jupiter.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/jupiter/swap.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/lifi.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/token_execute.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/token_quote.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/lifi/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/mcp_coingecko/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/mcp_coingecko/coingecko.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/mcp_coingecko/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/fetch_chain_portfolio.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/fetch_nft_portfolio.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/fetch_solana_portfolio.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/fetch_wallet_portfolio.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/moralis.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/moralis/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/borrow.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/deposit.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/get_position.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/get_vault_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/morpho.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/repay.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/supply_collateral.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/withdraw.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/morpho/withdraw_collateral.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/onchain.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/buy_nft.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/cancel_listing.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/create_listing.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_collection.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_collection_stats.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_events.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_listings.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_nft.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_nfts_by_account.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/get_offers.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/onchain_base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/opensea.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/opensea/update_listing.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/add_liquidity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/get_positions.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/pancakeswap.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/quote.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/remove_liquidity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/swap.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pancakeswap/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/cancel_order.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/get_market.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/get_orderbook.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/get_orders.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/get_positions.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/get_price_history.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/get_trades.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/place_order.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/polymarket.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/polymarket/search_markets.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/moralis.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/token_balances.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_approvals.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_defi_positions.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_history.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_net_worth.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_nfts.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_profitability.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_profitability_summary.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_stats.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/portfolio/wallet_swaps.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pyth/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pyth/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pyth/fetch_price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pyth/fetch_price_feed.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pyth/pyth.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/pyth/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/get_channel.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/get_message.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/schedule_message.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/send_message.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/slack/slack.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/delete_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/fetch_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/insert_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/invoke_function.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/supabase.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/update_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/supabase/upsert_data.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/create_flow.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/delete_flow.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/superfluid.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/superfluid/update_flow.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/tavily.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/tavily_extract.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/tavily/tavily_search.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/erc20_transfers.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/moralis.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/token_analytics.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/token_price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/token/token_search.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/follow_user.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/get_mentions.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/get_timeline.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/get_user_by_username.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/get_user_tweets.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/like_tweet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/post_tweet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/reply_tweet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/retweet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/search_tweets.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/twitter/twitter.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/ui/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/ui/ask_user.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/ui/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/ui/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/ui/show_card.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/ui/ui.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/add_liquidity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/get_positions.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/quote.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/remove_liquidity.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/swap.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/uniswap.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/uniswap/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/unrealspeech/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/unrealspeech/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/unrealspeech/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/unrealspeech/text_to_speech.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/unrealspeech/unrealspeech.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_audio/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_audio/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_audio/input.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_audio/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_audio/venice_audio.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_audio/venice_logo.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/api.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/config.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_enhance/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_enhance/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_enhance/image_enhance.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_enhance/image_enhance_base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_enhance/image_enhance_input.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_input.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_upscale/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_upscale/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_upscale/image_upscale.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_upscale/image_upscale_base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_upscale/image_upscale_input.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_vision/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_vision/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_vision/image_vision.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_vision/image_vision_base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/image_vision/image_vision_input.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/venice_image/venice_image.jpg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/gemini.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/gpt.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/grok.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/minimax.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/video/video.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/document_indexer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/langchain.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/scrape_and_index.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/web_scraper/website_indexer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/constants.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/unwrap_eth.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/weth.svg +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/weth/wrap_eth.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/check_price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/get_orders.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/http_request.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/httpx_compat.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/pay.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/x402/x402.webp +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/README.md +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/base.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/price.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/schema.json +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/swap.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/transfer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/skills/xmtp/xmtp.png +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/alert.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/alert_handler.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/chain.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/ens.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/error.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/logging.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/opengraph.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/pdf.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/random.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/s3_setup.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/schema.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/slack_alert.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/telegram_alert.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/templates/post_pdf.html +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/time.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/tx.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/utils/upload.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/__init__.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/cdp.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/evm_wallet.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/native.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy_client.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy_nonce.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy_safe.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy_signer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy_types.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/privy_utils.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/signer.py +0 -0
- {intentkit-0.17.43 → intentkit-0.17.45}/intentkit/wallets/web3.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.45
|
|
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
|
|
@@ -60,7 +60,7 @@ Requires-Dist: langchain-core>=0.3.43
|
|
|
60
60
|
Requires-Dist: langchain-deepseek>=0.1.4
|
|
61
61
|
Requires-Dist: langchain-google-genai>=3.2.0
|
|
62
62
|
Requires-Dist: langchain-openai>=0.3.8
|
|
63
|
-
Requires-Dist: langchain-openrouter>=0.
|
|
63
|
+
Requires-Dist: langchain-openrouter>=0.2.1
|
|
64
64
|
Requires-Dist: langchain-text-splitters>=0.3.8
|
|
65
65
|
Requires-Dist: langchain-xai>=0.2.1
|
|
66
66
|
Requires-Dist: langchain>=0.3.25
|
|
@@ -71,7 +71,7 @@ Requires-Dist: langgraph>=0.6.1
|
|
|
71
71
|
Requires-Dist: mcp>=1.0.0
|
|
72
72
|
Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
|
|
73
73
|
Requires-Dist: openai>=1.59.6
|
|
74
|
-
Requires-Dist: openrouter
|
|
74
|
+
Requires-Dist: openrouter>=0.9.0
|
|
75
75
|
Requires-Dist: pillow<13.0.0,>=11.1.0
|
|
76
76
|
Requires-Dist: psycopg-pool>=3.2.4
|
|
77
77
|
Requires-Dist: psycopg>=3.2.9
|
|
@@ -5,7 +5,13 @@ from .analytics import (
|
|
|
5
5
|
update_agents_assets,
|
|
6
6
|
update_agents_statistics,
|
|
7
7
|
)
|
|
8
|
-
from .management import
|
|
8
|
+
from .management import (
|
|
9
|
+
backfill_agent_avatar,
|
|
10
|
+
create_agent,
|
|
11
|
+
deploy_agent,
|
|
12
|
+
override_agent,
|
|
13
|
+
patch_agent,
|
|
14
|
+
)
|
|
9
15
|
from .notifications import send_agent_notification
|
|
10
16
|
from .public_info import override_public_info, update_public_info
|
|
11
17
|
from .queries import get_agent, get_agent_by_id_or_slug, iterate_agent_id_batches
|
|
@@ -21,6 +27,7 @@ __all__ = [
|
|
|
21
27
|
"override_agent",
|
|
22
28
|
"patch_agent",
|
|
23
29
|
"create_agent",
|
|
30
|
+
"backfill_agent_avatar",
|
|
24
31
|
"deploy_agent",
|
|
25
32
|
"agent_action_cost",
|
|
26
33
|
"update_agent_action_cost",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
|
|
3
|
-
from sqlalchemy import func, select
|
|
3
|
+
from sqlalchemy import func, or_, select, update
|
|
4
4
|
from sqlalchemy.exc import IntegrityError
|
|
5
5
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
6
6
|
|
|
@@ -320,6 +320,50 @@ async def create_agent(agent: AgentCreate) -> tuple[Agent, AgentData]:
|
|
|
320
320
|
return latest_agent, agent_data
|
|
321
321
|
|
|
322
322
|
|
|
323
|
+
async def backfill_agent_avatar(agent_id: str) -> None:
|
|
324
|
+
"""Generate an avatar for an agent and write it back if still empty.
|
|
325
|
+
|
|
326
|
+
Intended to be scheduled as a background task after agent create/override/
|
|
327
|
+
patch. No-ops (and swallows all errors) if the agent is gone, already has a
|
|
328
|
+
picture, or the generation/upload fails.
|
|
329
|
+
"""
|
|
330
|
+
# Deferred import: intentkit.core.avatar pulls in heavy optional deps
|
|
331
|
+
# (PIL, google.genai, openai) that would otherwise load on every cold
|
|
332
|
+
# start of any service importing core.agent.
|
|
333
|
+
from intentkit.core.avatar import generate_avatar
|
|
334
|
+
|
|
335
|
+
async with get_session() as db:
|
|
336
|
+
db_agent = await db.get(AgentTable, agent_id)
|
|
337
|
+
if not db_agent or db_agent.picture:
|
|
338
|
+
return
|
|
339
|
+
agent_snapshot = Agent.model_validate(db_agent)
|
|
340
|
+
|
|
341
|
+
try:
|
|
342
|
+
avatar_path = await generate_avatar(agent_id, agent_snapshot)
|
|
343
|
+
except Exception as e:
|
|
344
|
+
logger.warning("Agent avatar backfill generate failed for %s: %s", agent_id, e)
|
|
345
|
+
return
|
|
346
|
+
if not avatar_path:
|
|
347
|
+
return
|
|
348
|
+
|
|
349
|
+
try:
|
|
350
|
+
async with get_session() as db:
|
|
351
|
+
# Match both NULL and empty-string so a prior PATCH that cleared the
|
|
352
|
+
# column to "" still gets backfilled; the scheduling sites treat
|
|
353
|
+
# empty string as missing, and the write must agree.
|
|
354
|
+
await db.execute(
|
|
355
|
+
update(AgentTable)
|
|
356
|
+
.where(
|
|
357
|
+
AgentTable.id == agent_id,
|
|
358
|
+
or_(AgentTable.picture.is_(None), AgentTable.picture == ""),
|
|
359
|
+
)
|
|
360
|
+
.values(picture=avatar_path)
|
|
361
|
+
)
|
|
362
|
+
await db.commit()
|
|
363
|
+
except Exception as e:
|
|
364
|
+
logger.warning("Agent avatar backfill write failed for %s: %s", agent_id, e)
|
|
365
|
+
|
|
366
|
+
|
|
323
367
|
async def deploy_agent(
|
|
324
368
|
agent_id: str, agent: AgentUpdate, owner: str | None = None
|
|
325
369
|
) -> tuple[Agent, AgentData]:
|
|
@@ -4,6 +4,7 @@ import logging
|
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
6
|
import httpx
|
|
7
|
+
import openrouter
|
|
7
8
|
from google import genai
|
|
8
9
|
from google.genai import types
|
|
9
10
|
from openai import AsyncOpenAI
|
|
@@ -14,6 +15,8 @@ from intentkit.config.config import config
|
|
|
14
15
|
|
|
15
16
|
logger = logging.getLogger(__name__)
|
|
16
17
|
|
|
18
|
+
OPENROUTER_IMAGE_MODEL = "bytedance-seed/seedream-4.5"
|
|
19
|
+
|
|
17
20
|
# Prompt fields to extract from agent objects for avatar generation.
|
|
18
21
|
# These are (field_name, display_label) pairs.
|
|
19
22
|
_PROMPT_FIELDS: list[tuple[str, str]] = [
|
|
@@ -81,27 +84,75 @@ async def _download_image(url: str) -> bytes:
|
|
|
81
84
|
|
|
82
85
|
|
|
83
86
|
async def generate_image_openrouter(prompt: str) -> bytes | None:
|
|
84
|
-
"""Generate image using OpenRouter
|
|
87
|
+
"""Generate image using OpenRouter (bytedance-seed/seedream-4.5).
|
|
88
|
+
|
|
89
|
+
OpenRouter does not expose an OpenAI-compatible `/images/generations`
|
|
90
|
+
endpoint; image generation routes through chat completions with the
|
|
91
|
+
`modalities` parameter. Image-only models reject `["image", "text"]`,
|
|
92
|
+
so we ask for `["image"]` which is accepted by all image-output models.
|
|
93
|
+
"""
|
|
85
94
|
try:
|
|
86
|
-
client =
|
|
95
|
+
client = openrouter.OpenRouter(
|
|
87
96
|
api_key=config.openrouter_api_key,
|
|
88
|
-
|
|
97
|
+
http_referer="https://github.com/crestalnetwork/intentkit",
|
|
98
|
+
x_open_router_title="IntentKit",
|
|
99
|
+
x_open_router_categories="cloud-agent",
|
|
100
|
+
timeout_ms=120_000,
|
|
89
101
|
)
|
|
90
|
-
response = await client.
|
|
91
|
-
model=
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
n=1,
|
|
102
|
+
response = await client.chat.send_async(
|
|
103
|
+
model=OPENROUTER_IMAGE_MODEL,
|
|
104
|
+
modalities=["image"],
|
|
105
|
+
messages=[{"role": "user", "content": prompt}],
|
|
95
106
|
)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return
|
|
107
|
+
url = _extract_openrouter_image_url(response)
|
|
108
|
+
if not url:
|
|
109
|
+
logger.error("OpenRouter image generation returned no image url")
|
|
110
|
+
return None
|
|
111
|
+
if url.startswith("data:"):
|
|
112
|
+
return base64.b64decode(url.split(",", 1)[1])
|
|
113
|
+
return await _download_image(url)
|
|
100
114
|
except Exception as e:
|
|
101
115
|
logger.error("OpenRouter image generation failed: %s", e)
|
|
102
116
|
return None
|
|
103
117
|
|
|
104
118
|
|
|
119
|
+
def _extract_openrouter_image_url(response: Any) -> str | None:
|
|
120
|
+
"""Pull the first image URL from an OpenRouter chat-completions response.
|
|
121
|
+
|
|
122
|
+
Different image models put the result in different places: most use
|
|
123
|
+
``message.images[0].image_url.url``, a few return it as an ``image_url``
|
|
124
|
+
content part. Check both so avatar and skill callers stay consistent.
|
|
125
|
+
"""
|
|
126
|
+
try:
|
|
127
|
+
message = response.choices[0].message
|
|
128
|
+
except (AttributeError, IndexError):
|
|
129
|
+
return None
|
|
130
|
+
|
|
131
|
+
images = getattr(message, "images", None) or []
|
|
132
|
+
if images:
|
|
133
|
+
url = getattr(getattr(images[0], "image_url", None), "url", None)
|
|
134
|
+
if url:
|
|
135
|
+
return url
|
|
136
|
+
|
|
137
|
+
content = getattr(message, "content", None)
|
|
138
|
+
if isinstance(content, list):
|
|
139
|
+
for part in content:
|
|
140
|
+
part_type = getattr(part, "type", None) or (
|
|
141
|
+
part.get("type") if isinstance(part, dict) else None
|
|
142
|
+
)
|
|
143
|
+
if part_type != "image_url":
|
|
144
|
+
continue
|
|
145
|
+
image_url = getattr(part, "image_url", None) or (
|
|
146
|
+
part.get("image_url") if isinstance(part, dict) else None
|
|
147
|
+
)
|
|
148
|
+
url = getattr(image_url, "url", None) or (
|
|
149
|
+
image_url.get("url") if isinstance(image_url, dict) else None
|
|
150
|
+
)
|
|
151
|
+
if url:
|
|
152
|
+
return url
|
|
153
|
+
return None
|
|
154
|
+
|
|
155
|
+
|
|
105
156
|
async def generate_image_google(prompt: str) -> bytes | None:
|
|
106
157
|
"""Generate image using Google Gemini gemini-3.1-flash-image-preview."""
|
|
107
158
|
try:
|
|
@@ -378,6 +378,15 @@ async def _handle_model_chunk(
|
|
|
378
378
|
user_id=user_message.user_id,
|
|
379
379
|
)
|
|
380
380
|
logger.info("[%s] expense message: %s", user_message.agent_id, amount)
|
|
381
|
+
# Reconciliation: log OpenRouter-reported cost alongside our
|
|
382
|
+
# token-based calculation so discrepancies can be audited.
|
|
383
|
+
or_cost = (getattr(msg, "response_metadata", None) or {}).get("cost")
|
|
384
|
+
if or_cost is not None:
|
|
385
|
+
logger.info(
|
|
386
|
+
"[%s] openrouter reported cost: %s",
|
|
387
|
+
user_message.agent_id,
|
|
388
|
+
or_cost,
|
|
389
|
+
)
|
|
381
390
|
chat_message_create.credit_event_id = credit_event.id
|
|
382
391
|
chat_message_create.credit_cost = credit_event.total_amount
|
|
383
392
|
chat_message = await chat_message_create.save_in_session(session)
|
|
@@ -651,7 +660,8 @@ async def stream_agent_raw(
|
|
|
651
660
|
|
|
652
661
|
# Determine payer team (needed for credit event recording regardless of payment_enabled)
|
|
653
662
|
# Normal user conversations: user's team pays
|
|
654
|
-
# Platform channels (Telegram/Discord/Twitter/API/X402)
|
|
663
|
+
# Platform channels (Telegram/Discord/Twitter/API/X402) and autonomous triggers:
|
|
664
|
+
# agent's team pays
|
|
655
665
|
payer = message.team_id
|
|
656
666
|
if user_message.author_type in [
|
|
657
667
|
AuthorType.TELEGRAM,
|
|
@@ -659,6 +669,7 @@ async def stream_agent_raw(
|
|
|
659
669
|
AuthorType.TWITTER,
|
|
660
670
|
AuthorType.API,
|
|
661
671
|
AuthorType.X402,
|
|
672
|
+
AuthorType.TRIGGER,
|
|
662
673
|
]:
|
|
663
674
|
payer = agent.team_id
|
|
664
675
|
|
|
@@ -7,6 +7,8 @@ import re
|
|
|
7
7
|
from datetime import UTC, datetime
|
|
8
8
|
from typing import TYPE_CHECKING
|
|
9
9
|
|
|
10
|
+
from sqlalchemy import or_, update
|
|
11
|
+
|
|
10
12
|
from intentkit.config.db import get_session
|
|
11
13
|
from intentkit.config.redis import get_redis
|
|
12
14
|
from intentkit.models.team import (
|
|
@@ -137,7 +139,12 @@ async def generate_team_avatar(team_id: str, team_name: str) -> str | None:
|
|
|
137
139
|
|
|
138
140
|
|
|
139
141
|
async def create_team(team_id: str, name: str, creator_user_id: str) -> Team:
|
|
140
|
-
"""Create a new team
|
|
142
|
+
"""Create a new team without avatar.
|
|
143
|
+
|
|
144
|
+
Avatar generation is deferred to a background task triggered by the
|
|
145
|
+
caller (see `backfill_team_avatar`), since generating a team picture
|
|
146
|
+
involves slow LLM + image-gen + S3 I/O that should not block the
|
|
147
|
+
creation response or widen the window for concurrent-create races.
|
|
141
148
|
|
|
142
149
|
Raises:
|
|
143
150
|
ValueError: If team ID format is invalid or already taken.
|
|
@@ -146,23 +153,58 @@ async def create_team(team_id: str, name: str, creator_user_id: str) -> Team:
|
|
|
146
153
|
if not validation["valid"]:
|
|
147
154
|
raise ValueError(str(validation["reason"]))
|
|
148
155
|
|
|
149
|
-
# Generate avatar (failure does not block creation)
|
|
150
|
-
avatar: str | None = None
|
|
151
|
-
try:
|
|
152
|
-
avatar = await generate_team_avatar(team_id, name)
|
|
153
|
-
except Exception as e:
|
|
154
|
-
logger.warning("Avatar generation failed for team %s: %s", team_id, e)
|
|
155
|
-
|
|
156
156
|
team_create = TeamCreate(
|
|
157
157
|
id=team_id,
|
|
158
158
|
name=name,
|
|
159
|
-
avatar=
|
|
159
|
+
avatar=None,
|
|
160
160
|
default_channel=None,
|
|
161
161
|
default_channel_chat_id=None,
|
|
162
162
|
)
|
|
163
163
|
return await team_create.save(creator_user_id)
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
async def backfill_team_avatar(team_id: str) -> None:
|
|
167
|
+
"""Generate an avatar for a team and write it back if still empty.
|
|
168
|
+
|
|
169
|
+
Intended to be scheduled as a background task after team creation.
|
|
170
|
+
No-ops (and swallows all errors) if the team is gone, already has an
|
|
171
|
+
avatar, or the generation/upload fails.
|
|
172
|
+
"""
|
|
173
|
+
async with get_session() as db:
|
|
174
|
+
team_row = await db.get(TeamTable, team_id)
|
|
175
|
+
if not team_row or team_row.avatar:
|
|
176
|
+
return
|
|
177
|
+
team_name = team_row.name
|
|
178
|
+
|
|
179
|
+
try:
|
|
180
|
+
avatar_path = await generate_team_avatar(team_id, team_name)
|
|
181
|
+
except Exception as e:
|
|
182
|
+
logger.warning("Team avatar backfill generate failed for %s: %s", team_id, e)
|
|
183
|
+
return
|
|
184
|
+
if not avatar_path:
|
|
185
|
+
return
|
|
186
|
+
|
|
187
|
+
try:
|
|
188
|
+
async with get_session() as db:
|
|
189
|
+
# Match both NULL and empty-string so a prior PATCH that cleared
|
|
190
|
+
# the column to "" still gets backfilled; the scheduling site
|
|
191
|
+
# treats empty string as missing, and the write must agree.
|
|
192
|
+
await db.execute(
|
|
193
|
+
update(TeamTable)
|
|
194
|
+
.where(
|
|
195
|
+
TeamTable.id == team_id,
|
|
196
|
+
or_(TeamTable.avatar.is_(None), TeamTable.avatar == ""),
|
|
197
|
+
)
|
|
198
|
+
.values(avatar=avatar_path)
|
|
199
|
+
)
|
|
200
|
+
await db.commit()
|
|
201
|
+
except Exception as e:
|
|
202
|
+
logger.warning("Team avatar backfill write failed for %s: %s", team_id, e)
|
|
203
|
+
return
|
|
204
|
+
|
|
205
|
+
await _invalidate_team_cache(team_id)
|
|
206
|
+
|
|
207
|
+
|
|
166
208
|
async def get_team(team_id: str) -> Team | None:
|
|
167
209
|
"""Get a team by ID, with Redis caching (TTL 3600s)."""
|
|
168
210
|
redis = get_redis()
|
|
@@ -199,8 +241,6 @@ async def update_team(
|
|
|
199
241
|
if name is None and avatar is None:
|
|
200
242
|
raise ValueError("No updates provided")
|
|
201
243
|
|
|
202
|
-
from sqlalchemy import update
|
|
203
|
-
|
|
204
244
|
async with get_session() as db:
|
|
205
245
|
values: dict[str, str] = {}
|
|
206
246
|
if name is not None:
|
|
@@ -214,12 +254,7 @@ async def update_team(
|
|
|
214
254
|
raise ValueError(f"Team {team_id} not found")
|
|
215
255
|
await db.commit()
|
|
216
256
|
|
|
217
|
-
|
|
218
|
-
try:
|
|
219
|
-
redis = get_redis()
|
|
220
|
-
await redis.delete(f"{_CACHE_TEAM_PREFIX}{team_id}")
|
|
221
|
-
except Exception as e:
|
|
222
|
-
logger.warning("Failed to invalidate team cache for %s: %s", team_id, e)
|
|
257
|
+
await _invalidate_team_cache(team_id)
|
|
223
258
|
|
|
224
259
|
team = await Team.get(team_id)
|
|
225
260
|
if not team:
|
|
@@ -384,6 +419,15 @@ async def _invalidate_role_cache(team_id: str, user_id: str) -> None:
|
|
|
384
419
|
)
|
|
385
420
|
|
|
386
421
|
|
|
422
|
+
async def _invalidate_team_cache(team_id: str) -> None:
|
|
423
|
+
"""Delete cached team entry from Redis."""
|
|
424
|
+
try:
|
|
425
|
+
redis = get_redis()
|
|
426
|
+
await redis.delete(f"{_CACHE_TEAM_PREFIX}{team_id}")
|
|
427
|
+
except Exception as e:
|
|
428
|
+
logger.warning("Failed to invalidate team cache for %s: %s", team_id, e)
|
|
429
|
+
|
|
430
|
+
|
|
387
431
|
async def change_member_role(team_id: str, user_id: str, new_role: TeamRole) -> None:
|
|
388
432
|
"""Change a team member's role.
|
|
389
433
|
|
|
@@ -834,6 +834,11 @@ class OpenRouterLLM(LLMModel):
|
|
|
834
834
|
"api_key": config.openrouter_api_key,
|
|
835
835
|
"timeout": info.timeout * 1000,
|
|
836
836
|
"max_retries": 3,
|
|
837
|
+
# Attribution headers so OpenRouter dashboard credits IntentKit
|
|
838
|
+
# instead of the LangChain defaults baked into langchain-openrouter.
|
|
839
|
+
"app_url": "https://github.com/crestalnetwork/intentkit",
|
|
840
|
+
"app_title": "IntentKit",
|
|
841
|
+
"app_categories": ["cloud-agent"],
|
|
837
842
|
}
|
|
838
843
|
|
|
839
844
|
# Add optional parameters based on model support
|
|
@@ -855,48 +860,44 @@ class OpenRouterLLM(LLMModel):
|
|
|
855
860
|
return _create_openrouter_with_server_tools(**kwargs)
|
|
856
861
|
|
|
857
862
|
|
|
858
|
-
|
|
863
|
+
_openrouter_usage_cost_fields_injected = False
|
|
859
864
|
|
|
860
865
|
|
|
861
|
-
def
|
|
862
|
-
"""
|
|
866
|
+
def _inject_cost_fields_into_chat_usage() -> None:
|
|
867
|
+
"""Add ``cost`` / ``cost_details`` to the SDK's ``ChatUsage`` schema.
|
|
863
868
|
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
the
|
|
869
|
+
OpenRouter's ``/chat/completions`` response includes ``cost`` inside the
|
|
870
|
+
``usage`` object, but ``openrouter`` SDK's generated ``ChatUsage`` model
|
|
871
|
+
(v0.9.1) does not declare those fields, so Pydantic validation drops them
|
|
872
|
+
and ``langchain-openrouter`` never surfaces them in ``response_metadata``.
|
|
873
|
+
|
|
874
|
+
Injecting the fields lets cost round-trip without a fork. Remove this
|
|
875
|
+
helper once the SDK adds the fields natively.
|
|
870
876
|
"""
|
|
871
|
-
global
|
|
872
|
-
if
|
|
877
|
+
global _openrouter_usage_cost_fields_injected # noqa: PLW0603
|
|
878
|
+
if _openrouter_usage_cost_fields_injected:
|
|
873
879
|
return
|
|
874
880
|
try:
|
|
875
|
-
from openrouter.components import
|
|
876
|
-
|
|
877
|
-
)
|
|
881
|
+
from openrouter.components import ChatUsage # type: ignore[import-untyped]
|
|
882
|
+
from pydantic.fields import FieldInfo
|
|
878
883
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
func_field = tool_model.model_fields.get("function")
|
|
882
|
-
if type_field is None or func_field is None:
|
|
883
|
-
logger.warning(
|
|
884
|
-
"OpenRouter SDK ToolDefinitionJSON schema changed — "
|
|
885
|
-
"server tools patch skipped; update the integration"
|
|
886
|
-
)
|
|
884
|
+
if "cost" in ChatUsage.model_fields:
|
|
885
|
+
_openrouter_usage_cost_fields_injected = True
|
|
887
886
|
return
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
887
|
+
cost_type: Any = float | None
|
|
888
|
+
cost_details_type: Any = dict[str, Any] | None
|
|
889
|
+
ChatUsage.__annotations__["cost"] = cost_type
|
|
890
|
+
ChatUsage.__annotations__["cost_details"] = cost_details_type
|
|
891
|
+
ChatUsage.model_fields["cost"] = FieldInfo(annotation=cost_type, default=None)
|
|
892
|
+
ChatUsage.model_fields["cost_details"] = FieldInfo(
|
|
893
|
+
annotation=cost_details_type, default=None
|
|
894
|
+
)
|
|
895
|
+
ChatUsage.model_rebuild(force=True)
|
|
896
|
+
_openrouter_usage_cost_fields_injected = True
|
|
898
897
|
except Exception:
|
|
899
|
-
logger.warning(
|
|
898
|
+
logger.warning(
|
|
899
|
+
"Failed to inject cost fields into OpenRouter ChatUsage", exc_info=True
|
|
900
|
+
)
|
|
900
901
|
|
|
901
902
|
|
|
902
903
|
def _create_openrouter_with_server_tools(**kwargs: Any) -> BaseChatModel:
|
|
@@ -904,17 +905,18 @@ def _create_openrouter_with_server_tools(**kwargs: Any) -> BaseChatModel:
|
|
|
904
905
|
|
|
905
906
|
OpenRouter server tools (e.g. ``{"type": "openrouter:web_search"}``) are
|
|
906
907
|
not recognised by ``convert_to_openai_tool`` used inside the upstream
|
|
907
|
-
``ChatOpenRouter.bind_tools``.
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
908
|
+
``ChatOpenRouter.bind_tools``. This subclass overrides ``bind_tools`` to
|
|
909
|
+
pull server-tool dicts out, delegate the rest to the parent, and re-inject
|
|
910
|
+
the server tools into the bound kwargs so they are sent as-is in the API
|
|
911
|
+
request.
|
|
912
|
+
|
|
913
|
+
The underlying ``openrouter`` SDK (>=0.8.0) exposes ``ChatFunctionTool`` as
|
|
914
|
+
a discriminated union that natively accepts the ``openrouter:`` server-tool
|
|
915
|
+
types we use, so no SDK-level patch is required for tool types.
|
|
914
916
|
"""
|
|
915
917
|
from langchain_openrouter import ChatOpenRouter
|
|
916
918
|
|
|
917
|
-
|
|
919
|
+
_inject_cost_fields_into_chat_usage()
|
|
918
920
|
|
|
919
921
|
class _WithServerTools(ChatOpenRouter):
|
|
920
922
|
@override
|
|
@@ -18,6 +18,7 @@ from pydantic import (
|
|
|
18
18
|
)
|
|
19
19
|
from sqlalchemy import DateTime, Index, Integer, String, func, select
|
|
20
20
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
21
|
+
from sqlalchemy.exc import IntegrityError
|
|
21
22
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
22
23
|
|
|
23
24
|
from intentkit.config.base import Base
|
|
@@ -326,7 +327,13 @@ class TeamCreate(BaseModel):
|
|
|
326
327
|
)
|
|
327
328
|
db.add(member_record)
|
|
328
329
|
|
|
329
|
-
|
|
330
|
+
try:
|
|
331
|
+
await db.commit()
|
|
332
|
+
except IntegrityError as e:
|
|
333
|
+
# Concurrent request with the same team_id committed first; map
|
|
334
|
+
# to the same validation error so the endpoint returns 400 instead
|
|
335
|
+
# of leaking a 500.
|
|
336
|
+
raise ValueError("Team ID is already taken") from e
|
|
330
337
|
await db.refresh(team_record)
|
|
331
338
|
return Team.model_validate(team_record)
|
|
332
339
|
|