intentkit 0.6.9.dev2__py3-none-any.whl → 0.6.10.dev1__py3-none-any.whl
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.
Potentially problematic release.
This version of intentkit might be problematic. Click here for more details.
- intentkit/__init__.py +1 -1
- intentkit/abstracts/graph.py +17 -2
- intentkit/core/engine.py +29 -30
- intentkit/core/node.py +10 -20
- intentkit/models/agent.py +3 -0
- intentkit/models/chat.py +9 -1
- intentkit/skills/acolyt/ask.py +2 -5
- intentkit/skills/acolyt/base.py +16 -6
- intentkit/skills/aixbt/__init__.py +3 -7
- intentkit/skills/aixbt/projects.py +12 -36
- intentkit/skills/allora/base.py +16 -6
- intentkit/skills/allora/price.py +2 -4
- intentkit/skills/base.py +8 -1
- intentkit/skills/carv/base.py +12 -10
- intentkit/skills/carv/fetch_news.py +90 -92
- intentkit/skills/carv/onchain_query.py +162 -164
- intentkit/skills/carv/token_info_and_price.py +108 -110
- intentkit/skills/chainlist/chain_lookup.py +1 -2
- intentkit/skills/common/current_time.py +1 -2
- intentkit/skills/cookiefun/base.py +20 -12
- intentkit/skills/cookiefun/get_account_details.py +1 -3
- intentkit/skills/cookiefun/get_account_feed.py +1 -3
- intentkit/skills/cookiefun/get_account_smart_followers.py +1 -3
- intentkit/skills/cookiefun/get_sectors.py +2 -3
- intentkit/skills/cookiefun/search_accounts.py +1 -3
- intentkit/skills/cryptocompare/fetch_news.py +3 -4
- intentkit/skills/cryptocompare/fetch_price.py +3 -4
- intentkit/skills/cryptocompare/fetch_top_exchanges.py +3 -4
- intentkit/skills/cryptocompare/fetch_top_market_cap.py +3 -4
- intentkit/skills/cryptocompare/fetch_top_volume.py +3 -4
- intentkit/skills/cryptocompare/fetch_trading_signals.py +3 -4
- intentkit/skills/cryptopanic/base.py +13 -9
- intentkit/skills/cryptopanic/fetch_crypto_news.py +150 -153
- intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +133 -136
- intentkit/skills/dapplooker/base.py +16 -6
- intentkit/skills/dapplooker/dapplooker_token_data.py +2 -4
- intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +2 -3
- intentkit/skills/defillama/coins/fetch_block.py +2 -3
- intentkit/skills/defillama/coins/fetch_current_prices.py +2 -5
- intentkit/skills/defillama/coins/fetch_first_price.py +2 -5
- intentkit/skills/defillama/coins/fetch_historical_prices.py +2 -3
- intentkit/skills/defillama/coins/fetch_price_chart.py +2 -5
- intentkit/skills/defillama/coins/fetch_price_percentage.py +2 -5
- intentkit/skills/defillama/fees/fetch_fees_overview.py +2 -3
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +2 -3
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +2 -3
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +2 -3
- intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +2 -3
- intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -5
- intentkit/skills/defillama/tvl/fetch_chains.py +2 -3
- intentkit/skills/defillama/tvl/fetch_historical_tvl.py +2 -3
- intentkit/skills/defillama/tvl/fetch_protocol.py +2 -5
- intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +2 -5
- intentkit/skills/defillama/tvl/fetch_protocols.py +2 -3
- intentkit/skills/defillama/volumes/fetch_dex_overview.py +2 -3
- intentkit/skills/defillama/volumes/fetch_dex_summary.py +2 -5
- intentkit/skills/defillama/volumes/fetch_options_overview.py +2 -3
- intentkit/skills/defillama/yields/fetch_pool_chart.py +2 -5
- intentkit/skills/defillama/yields/fetch_pools.py +2 -3
- intentkit/skills/dune_analytics/base.py +15 -9
- intentkit/skills/dune_analytics/fetch_kol_buys.py +125 -128
- intentkit/skills/dune_analytics/fetch_nation_metrics.py +234 -237
- intentkit/skills/elfa/base.py +16 -6
- intentkit/skills/elfa/mention.py +2 -7
- intentkit/skills/elfa/stats.py +2 -6
- intentkit/skills/elfa/tokens.py +1 -4
- intentkit/skills/enso/base.py +25 -13
- intentkit/skills/enso/best_yield.py +1 -4
- intentkit/skills/enso/networks.py +2 -5
- intentkit/skills/enso/prices.py +1 -5
- intentkit/skills/enso/route.py +2 -5
- intentkit/skills/enso/tokens.py +1 -4
- intentkit/skills/enso/wallet.py +3 -9
- intentkit/skills/firecrawl/base.py +16 -6
- intentkit/skills/firecrawl/clear.py +1 -3
- intentkit/skills/firecrawl/crawl.py +7 -8
- intentkit/skills/firecrawl/query.py +7 -9
- intentkit/skills/firecrawl/scrape.py +7 -8
- intentkit/skills/github/github_search.py +1 -3
- intentkit/skills/heurist/base.py +15 -0
- intentkit/skills/heurist/image_generation_animagine_xl.py +3 -4
- intentkit/skills/heurist/image_generation_arthemy_comics.py +3 -4
- intentkit/skills/heurist/image_generation_arthemy_real.py +3 -4
- intentkit/skills/heurist/image_generation_braindance.py +3 -4
- intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +3 -4
- intentkit/skills/heurist/image_generation_flux_1_dev.py +3 -4
- intentkit/skills/heurist/image_generation_sdxl.py +3 -4
- intentkit/skills/http/get.py +0 -2
- intentkit/skills/http/post.py +0 -2
- intentkit/skills/http/put.py +0 -2
- intentkit/skills/lifi/token_execute.py +1 -3
- intentkit/skills/lifi/token_quote.py +0 -2
- intentkit/skills/moralis/base.py +15 -1
- intentkit/skills/nation/nft_check.py +2 -5
- intentkit/skills/openai/base.py +14 -5
- intentkit/skills/openai/dalle_image_generation.py +6 -5
- intentkit/skills/openai/gpt_image_generation.py +6 -5
- intentkit/skills/openai/gpt_image_to_image.py +6 -5
- intentkit/skills/openai/image_to_text.py +6 -6
- intentkit/skills/portfolio/base.py +4 -3
- intentkit/skills/portfolio/token_balances.py +2 -4
- intentkit/skills/portfolio/wallet_approvals.py +2 -4
- intentkit/skills/portfolio/wallet_defi_positions.py +3 -4
- intentkit/skills/portfolio/wallet_history.py +2 -4
- intentkit/skills/portfolio/wallet_net_worth.py +2 -4
- intentkit/skills/portfolio/wallet_nfts.py +2 -4
- intentkit/skills/portfolio/wallet_profitability.py +2 -4
- intentkit/skills/portfolio/wallet_profitability_summary.py +2 -4
- intentkit/skills/portfolio/wallet_stats.py +2 -4
- intentkit/skills/portfolio/wallet_swaps.py +2 -4
- intentkit/skills/slack/base.py +18 -0
- intentkit/skills/slack/get_channel.py +3 -4
- intentkit/skills/slack/get_message.py +3 -4
- intentkit/skills/slack/schedule_message.py +3 -4
- intentkit/skills/slack/send_message.py +3 -4
- intentkit/skills/supabase/delete_data.py +3 -6
- intentkit/skills/supabase/fetch_data.py +3 -6
- intentkit/skills/supabase/insert_data.py +3 -6
- intentkit/skills/supabase/invoke_function.py +3 -6
- intentkit/skills/supabase/update_data.py +3 -6
- intentkit/skills/supabase/upsert_data.py +3 -6
- intentkit/skills/system/add_autonomous_task.py +1 -3
- intentkit/skills/system/delete_autonomous_task.py +1 -3
- intentkit/skills/system/edit_autonomous_task.py +1 -3
- intentkit/skills/system/list_autonomous_tasks.py +1 -3
- intentkit/skills/system/read_agent_api_key.py +2 -3
- intentkit/skills/system/regenerate_agent_api_key.py +2 -5
- intentkit/skills/tavily/base.py +14 -5
- intentkit/skills/tavily/tavily_extract.py +7 -8
- intentkit/skills/tavily/tavily_search.py +11 -9
- intentkit/skills/token/base.py +4 -6
- intentkit/skills/token/erc20_transfers.py +2 -4
- intentkit/skills/token/token_analytics.py +2 -4
- intentkit/skills/token/token_price.py +2 -4
- intentkit/skills/token/token_search.py +2 -4
- intentkit/skills/twitter/base.py +41 -0
- intentkit/skills/twitter/follow_user.py +4 -4
- intentkit/skills/twitter/get_mentions.py +4 -4
- intentkit/skills/twitter/get_timeline.py +4 -4
- intentkit/skills/twitter/get_user_by_username.py +4 -4
- intentkit/skills/twitter/get_user_tweets.py +4 -4
- intentkit/skills/twitter/like_tweet.py +4 -4
- intentkit/skills/twitter/post_tweet.py +3 -4
- intentkit/skills/twitter/reply_tweet.py +3 -4
- intentkit/skills/twitter/retweet.py +4 -4
- intentkit/skills/twitter/search_tweets.py +4 -4
- intentkit/skills/unrealspeech/base.py +16 -0
- intentkit/skills/unrealspeech/text_to_speech.py +4 -4
- intentkit/skills/venice_audio/base.py +11 -9
- intentkit/skills/venice_audio/venice_audio.py +238 -240
- intentkit/skills/venice_image/base.py +23 -19
- intentkit/skills/venice_image/image_enhance/image_enhance.py +78 -80
- intentkit/skills/venice_image/image_generation/image_generation_base.py +115 -117
- intentkit/skills/venice_image/image_upscale/image_upscale.py +88 -90
- intentkit/skills/venice_image/image_vision/image_vision.py +98 -100
- intentkit/skills/web_scraper/document_indexer.py +3 -5
- intentkit/skills/web_scraper/scrape_and_index.py +14 -17
- intentkit/skills/web_scraper/website_indexer.py +8 -10
- intentkit/skills/xmtp/README.md +110 -0
- intentkit/skills/xmtp/__init__.py +82 -0
- intentkit/skills/xmtp/base.py +13 -0
- intentkit/skills/xmtp/schema.json +41 -0
- intentkit/skills/xmtp/transfer.py +170 -0
- intentkit/skills/xmtp/xmtp.svg +26 -0
- {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/METADATA +3 -3
- {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/RECORD +168 -162
- {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/WHEEL +0 -0
- {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
from typing import Any, List, Optional, Tuple
|
|
2
|
+
|
|
3
|
+
from langchain_core.runnables import RunnableConfig
|
|
4
|
+
from pydantic import BaseModel, Field
|
|
5
|
+
|
|
6
|
+
from intentkit.models.chat import ChatMessageAttachment, ChatMessageAttachmentType
|
|
7
|
+
from intentkit.skills.xmtp.base import XmtpBaseTool
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TransferInput(BaseModel):
|
|
11
|
+
"""Input for XMTP transfer skill."""
|
|
12
|
+
|
|
13
|
+
from_address: str = Field(description="The sender address for the transfer")
|
|
14
|
+
to_address: str = Field(description="The recipient address for the transfer")
|
|
15
|
+
amount: str = Field(
|
|
16
|
+
description="The amount to transfer (as string to handle large numbers)"
|
|
17
|
+
)
|
|
18
|
+
decimals: int = Field(
|
|
19
|
+
description="Number of decimal places for the token (18 for ETH, varies for ERC20 tokens)"
|
|
20
|
+
)
|
|
21
|
+
currency: str = Field(description="Currency symbol (e.g., 'ETH', 'USDC', 'DAI')")
|
|
22
|
+
token_contract_address: Optional[str] = Field(
|
|
23
|
+
default=None,
|
|
24
|
+
description="Token contract address for ERC20 transfers. Leave empty for ETH transfers.",
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class XmtpTransfer(XmtpBaseTool):
|
|
29
|
+
"""Skill for creating XMTP transfer transactions."""
|
|
30
|
+
|
|
31
|
+
name: str = "xmtp_transfer"
|
|
32
|
+
description: str = """Create an XMTP transaction request for transferring ETH or ERC20 tokens on Base mainnet.
|
|
33
|
+
|
|
34
|
+
This skill generates a wallet_sendCalls transaction request according to XMTP protocol
|
|
35
|
+
that can be sent to users for signing. The transaction can transfer:
|
|
36
|
+
- ETH (when token_contract_address is not provided)
|
|
37
|
+
- ERC20 tokens (when token_contract_address is provided)
|
|
38
|
+
|
|
39
|
+
Only supports Base mainnet network.
|
|
40
|
+
"""
|
|
41
|
+
args_schema = TransferInput
|
|
42
|
+
|
|
43
|
+
async def _arun(
|
|
44
|
+
self,
|
|
45
|
+
from_address: str,
|
|
46
|
+
to_address: str,
|
|
47
|
+
amount: str,
|
|
48
|
+
decimals: int,
|
|
49
|
+
currency: str,
|
|
50
|
+
token_contract_address: Optional[str],
|
|
51
|
+
config: RunnableConfig,
|
|
52
|
+
**kwargs: Any,
|
|
53
|
+
) -> Tuple[str, List[ChatMessageAttachment]]:
|
|
54
|
+
"""Create an XMTP transfer transaction request.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
from_address: The sender address
|
|
58
|
+
to_address: The recipient address
|
|
59
|
+
amount: Amount to transfer
|
|
60
|
+
decimals: Token decimals
|
|
61
|
+
currency: Currency symbol
|
|
62
|
+
token_contract_address: Token contract address (None for ETH)
|
|
63
|
+
config: LangChain runnable config
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
Tuple of (content_message, list_of_attachments)
|
|
67
|
+
"""
|
|
68
|
+
# Get context and check network
|
|
69
|
+
context = self.context_from_config(config)
|
|
70
|
+
agent = context.agent
|
|
71
|
+
|
|
72
|
+
# Check if agent is on base mainnet
|
|
73
|
+
if agent.network_id != "base-mainnet" and agent.network_id != "base-sepolia":
|
|
74
|
+
raise ValueError(
|
|
75
|
+
f"XMTP transfer only supports base-mainnet or base-sepolia network. "
|
|
76
|
+
f"Current agent network: {agent.network_id}"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Check if agent has EVM wallet address
|
|
80
|
+
if not agent.evm_wallet_address:
|
|
81
|
+
raise ValueError(
|
|
82
|
+
"Agent must have an EVM wallet address to create XMTP transactions"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# Validate from_address matches agent's wallet
|
|
86
|
+
if from_address.lower() != agent.evm_wallet_address.lower():
|
|
87
|
+
raise ValueError(
|
|
88
|
+
f"from_address must match agent's EVM wallet address: {agent.evm_wallet_address}"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# Calculate amount in smallest unit (wei for ETH, token units for ERC20)
|
|
92
|
+
amount_int = int(float(amount) * (10**decimals))
|
|
93
|
+
|
|
94
|
+
if token_contract_address:
|
|
95
|
+
# ERC20 Token Transfer
|
|
96
|
+
transaction_to = token_contract_address
|
|
97
|
+
transaction_value = "0x0" # No ETH value for token transfers
|
|
98
|
+
|
|
99
|
+
# Create ERC20 transfer function call data
|
|
100
|
+
# Function signature: transfer(address,uint256)
|
|
101
|
+
# Method ID: First 4 bytes of keccak256("transfer(address,uint256)")
|
|
102
|
+
method_id = "0xa9059cbb" # transfer(address,uint256) method ID
|
|
103
|
+
|
|
104
|
+
# Encode to_address (32 bytes, left-padded)
|
|
105
|
+
to_address_clean = to_address.replace("0x", "")
|
|
106
|
+
to_address_padded = to_address_clean.zfill(64)
|
|
107
|
+
|
|
108
|
+
# Encode amount (32 bytes, left-padded)
|
|
109
|
+
amount_hex = hex(amount_int)[2:] # Remove 0x prefix
|
|
110
|
+
amount_padded = amount_hex.zfill(64)
|
|
111
|
+
|
|
112
|
+
# Combine method ID + padded address + padded amount
|
|
113
|
+
call_data = method_id + to_address_padded + amount_padded
|
|
114
|
+
|
|
115
|
+
description = f"Send {amount} {currency} to {to_address}"
|
|
116
|
+
metadata = {
|
|
117
|
+
"description": description,
|
|
118
|
+
"transactionType": "erc20_transfer",
|
|
119
|
+
"currency": currency,
|
|
120
|
+
"amount": amount_int,
|
|
121
|
+
"decimals": decimals,
|
|
122
|
+
"toAddress": to_address,
|
|
123
|
+
"tokenContract": token_contract_address,
|
|
124
|
+
}
|
|
125
|
+
else:
|
|
126
|
+
# ETH Transfer
|
|
127
|
+
transaction_to = to_address
|
|
128
|
+
transaction_value = hex(amount_int)
|
|
129
|
+
call_data = "0x" # No call data for simple ETH transfer
|
|
130
|
+
|
|
131
|
+
description = f"Send {amount} {currency} to {to_address}"
|
|
132
|
+
metadata = {
|
|
133
|
+
"description": description,
|
|
134
|
+
"transactionType": "transfer",
|
|
135
|
+
"currency": currency,
|
|
136
|
+
"amount": amount_int,
|
|
137
|
+
"decimals": decimals,
|
|
138
|
+
"toAddress": to_address,
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
# Create XMTP wallet_sendCalls transaction request
|
|
142
|
+
wallet_send_calls = {
|
|
143
|
+
"version": "1.0",
|
|
144
|
+
"from": from_address,
|
|
145
|
+
"chainId": "0x2105", # Base mainnet chain ID (8453 in hex)
|
|
146
|
+
"calls": [
|
|
147
|
+
{
|
|
148
|
+
"to": transaction_to,
|
|
149
|
+
"value": transaction_value,
|
|
150
|
+
"data": call_data,
|
|
151
|
+
"metadata": metadata,
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
# Create ChatMessageAttachment
|
|
157
|
+
attachment: ChatMessageAttachment = {
|
|
158
|
+
"type": ChatMessageAttachmentType.XMTP,
|
|
159
|
+
"url": None,
|
|
160
|
+
"json": wallet_send_calls,
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
# Create user message
|
|
164
|
+
content_message = (
|
|
165
|
+
f"I have created a transaction request for transferring {amount} {currency} "
|
|
166
|
+
f"to {to_address} on Base mainnet. "
|
|
167
|
+
f"Please review the transaction details and sign to execute the transfer."
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
return content_message, [attachment]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<!-- Background circle -->
|
|
4
|
+
<circle cx="50" cy="50" r="45" fill="#1DB584" stroke="#0F7B5C" stroke-width="2"/>
|
|
5
|
+
|
|
6
|
+
<!-- XMTP messaging icon -->
|
|
7
|
+
<g transform="translate(20, 25)">
|
|
8
|
+
<!-- Chat bubble 1 -->
|
|
9
|
+
<rect x="5" y="15" width="35" height="20" rx="10" fill="white" opacity="0.9"/>
|
|
10
|
+
<circle cx="10" cy="23" r="2" fill="#1DB584"/>
|
|
11
|
+
<circle cx="16" cy="23" r="2" fill="#1DB584"/>
|
|
12
|
+
<circle cx="22" cy="23" r="2" fill="#1DB584"/>
|
|
13
|
+
|
|
14
|
+
<!-- Chat bubble 2 -->
|
|
15
|
+
<rect x="20" y="35" width="35" height="20" rx="10" fill="white" opacity="0.8"/>
|
|
16
|
+
<path d="M 25 42 L 50 42" stroke="#1DB584" stroke-width="2" stroke-linecap="round"/>
|
|
17
|
+
<path d="M 25 47 L 45 47" stroke="#1DB584" stroke-width="2" stroke-linecap="round"/>
|
|
18
|
+
</g>
|
|
19
|
+
|
|
20
|
+
<!-- Protocol symbol -->
|
|
21
|
+
<g transform="translate(35, 60)">
|
|
22
|
+
<circle cx="15" cy="15" r="12" fill="white" opacity="0.2"/>
|
|
23
|
+
<path d="M 8 12 L 15 8 L 22 12 L 15 16 Z" fill="white"/>
|
|
24
|
+
<path d="M 8 16 L 15 12 L 22 16 L 15 20 Z" fill="white" opacity="0.7"/>
|
|
25
|
+
</g>
|
|
26
|
+
</svg>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.10.dev1
|
|
4
4
|
Summary: Intent-based AI Agent Platform - Core Package
|
|
5
5
|
Project-URL: Homepage, https://github.com/crestal-network/intentkit
|
|
6
6
|
Project-URL: Repository, https://github.com/crestal-network/intentkit
|
|
@@ -64,8 +64,8 @@ Requires-Dist: langchain-xai>=0.2.1
|
|
|
64
64
|
Requires-Dist: langchain<0.4.0,>=0.3.25
|
|
65
65
|
Requires-Dist: langgraph-checkpoint-postgres<2.0.23,>=2.0.16
|
|
66
66
|
Requires-Dist: langgraph-checkpoint>=2.0.18
|
|
67
|
-
Requires-Dist: langgraph-prebuilt<0.
|
|
68
|
-
Requires-Dist: langgraph<0.
|
|
67
|
+
Requires-Dist: langgraph-prebuilt<0.7.0,>=0.6.1
|
|
68
|
+
Requires-Dist: langgraph<0.7.0,>=0.6.1
|
|
69
69
|
Requires-Dist: langmem>=0.0.27
|
|
70
70
|
Requires-Dist: mypy-boto3-s3<2.0.0,>=1.37.24
|
|
71
71
|
Requires-Dist: openai>=1.59.6
|