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.

Files changed (168) hide show
  1. intentkit/__init__.py +1 -1
  2. intentkit/abstracts/graph.py +17 -2
  3. intentkit/core/engine.py +29 -30
  4. intentkit/core/node.py +10 -20
  5. intentkit/models/agent.py +3 -0
  6. intentkit/models/chat.py +9 -1
  7. intentkit/skills/acolyt/ask.py +2 -5
  8. intentkit/skills/acolyt/base.py +16 -6
  9. intentkit/skills/aixbt/__init__.py +3 -7
  10. intentkit/skills/aixbt/projects.py +12 -36
  11. intentkit/skills/allora/base.py +16 -6
  12. intentkit/skills/allora/price.py +2 -4
  13. intentkit/skills/base.py +8 -1
  14. intentkit/skills/carv/base.py +12 -10
  15. intentkit/skills/carv/fetch_news.py +90 -92
  16. intentkit/skills/carv/onchain_query.py +162 -164
  17. intentkit/skills/carv/token_info_and_price.py +108 -110
  18. intentkit/skills/chainlist/chain_lookup.py +1 -2
  19. intentkit/skills/common/current_time.py +1 -2
  20. intentkit/skills/cookiefun/base.py +20 -12
  21. intentkit/skills/cookiefun/get_account_details.py +1 -3
  22. intentkit/skills/cookiefun/get_account_feed.py +1 -3
  23. intentkit/skills/cookiefun/get_account_smart_followers.py +1 -3
  24. intentkit/skills/cookiefun/get_sectors.py +2 -3
  25. intentkit/skills/cookiefun/search_accounts.py +1 -3
  26. intentkit/skills/cryptocompare/fetch_news.py +3 -4
  27. intentkit/skills/cryptocompare/fetch_price.py +3 -4
  28. intentkit/skills/cryptocompare/fetch_top_exchanges.py +3 -4
  29. intentkit/skills/cryptocompare/fetch_top_market_cap.py +3 -4
  30. intentkit/skills/cryptocompare/fetch_top_volume.py +3 -4
  31. intentkit/skills/cryptocompare/fetch_trading_signals.py +3 -4
  32. intentkit/skills/cryptopanic/base.py +13 -9
  33. intentkit/skills/cryptopanic/fetch_crypto_news.py +150 -153
  34. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +133 -136
  35. intentkit/skills/dapplooker/base.py +16 -6
  36. intentkit/skills/dapplooker/dapplooker_token_data.py +2 -4
  37. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +2 -3
  38. intentkit/skills/defillama/coins/fetch_block.py +2 -3
  39. intentkit/skills/defillama/coins/fetch_current_prices.py +2 -5
  40. intentkit/skills/defillama/coins/fetch_first_price.py +2 -5
  41. intentkit/skills/defillama/coins/fetch_historical_prices.py +2 -3
  42. intentkit/skills/defillama/coins/fetch_price_chart.py +2 -5
  43. intentkit/skills/defillama/coins/fetch_price_percentage.py +2 -5
  44. intentkit/skills/defillama/fees/fetch_fees_overview.py +2 -3
  45. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +2 -3
  46. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +2 -3
  47. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +2 -3
  48. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +2 -3
  49. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +2 -5
  50. intentkit/skills/defillama/tvl/fetch_chains.py +2 -3
  51. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +2 -3
  52. intentkit/skills/defillama/tvl/fetch_protocol.py +2 -5
  53. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +2 -5
  54. intentkit/skills/defillama/tvl/fetch_protocols.py +2 -3
  55. intentkit/skills/defillama/volumes/fetch_dex_overview.py +2 -3
  56. intentkit/skills/defillama/volumes/fetch_dex_summary.py +2 -5
  57. intentkit/skills/defillama/volumes/fetch_options_overview.py +2 -3
  58. intentkit/skills/defillama/yields/fetch_pool_chart.py +2 -5
  59. intentkit/skills/defillama/yields/fetch_pools.py +2 -3
  60. intentkit/skills/dune_analytics/base.py +15 -9
  61. intentkit/skills/dune_analytics/fetch_kol_buys.py +125 -128
  62. intentkit/skills/dune_analytics/fetch_nation_metrics.py +234 -237
  63. intentkit/skills/elfa/base.py +16 -6
  64. intentkit/skills/elfa/mention.py +2 -7
  65. intentkit/skills/elfa/stats.py +2 -6
  66. intentkit/skills/elfa/tokens.py +1 -4
  67. intentkit/skills/enso/base.py +25 -13
  68. intentkit/skills/enso/best_yield.py +1 -4
  69. intentkit/skills/enso/networks.py +2 -5
  70. intentkit/skills/enso/prices.py +1 -5
  71. intentkit/skills/enso/route.py +2 -5
  72. intentkit/skills/enso/tokens.py +1 -4
  73. intentkit/skills/enso/wallet.py +3 -9
  74. intentkit/skills/firecrawl/base.py +16 -6
  75. intentkit/skills/firecrawl/clear.py +1 -3
  76. intentkit/skills/firecrawl/crawl.py +7 -8
  77. intentkit/skills/firecrawl/query.py +7 -9
  78. intentkit/skills/firecrawl/scrape.py +7 -8
  79. intentkit/skills/github/github_search.py +1 -3
  80. intentkit/skills/heurist/base.py +15 -0
  81. intentkit/skills/heurist/image_generation_animagine_xl.py +3 -4
  82. intentkit/skills/heurist/image_generation_arthemy_comics.py +3 -4
  83. intentkit/skills/heurist/image_generation_arthemy_real.py +3 -4
  84. intentkit/skills/heurist/image_generation_braindance.py +3 -4
  85. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +3 -4
  86. intentkit/skills/heurist/image_generation_flux_1_dev.py +3 -4
  87. intentkit/skills/heurist/image_generation_sdxl.py +3 -4
  88. intentkit/skills/http/get.py +0 -2
  89. intentkit/skills/http/post.py +0 -2
  90. intentkit/skills/http/put.py +0 -2
  91. intentkit/skills/lifi/token_execute.py +1 -3
  92. intentkit/skills/lifi/token_quote.py +0 -2
  93. intentkit/skills/moralis/base.py +15 -1
  94. intentkit/skills/nation/nft_check.py +2 -5
  95. intentkit/skills/openai/base.py +14 -5
  96. intentkit/skills/openai/dalle_image_generation.py +6 -5
  97. intentkit/skills/openai/gpt_image_generation.py +6 -5
  98. intentkit/skills/openai/gpt_image_to_image.py +6 -5
  99. intentkit/skills/openai/image_to_text.py +6 -6
  100. intentkit/skills/portfolio/base.py +4 -3
  101. intentkit/skills/portfolio/token_balances.py +2 -4
  102. intentkit/skills/portfolio/wallet_approvals.py +2 -4
  103. intentkit/skills/portfolio/wallet_defi_positions.py +3 -4
  104. intentkit/skills/portfolio/wallet_history.py +2 -4
  105. intentkit/skills/portfolio/wallet_net_worth.py +2 -4
  106. intentkit/skills/portfolio/wallet_nfts.py +2 -4
  107. intentkit/skills/portfolio/wallet_profitability.py +2 -4
  108. intentkit/skills/portfolio/wallet_profitability_summary.py +2 -4
  109. intentkit/skills/portfolio/wallet_stats.py +2 -4
  110. intentkit/skills/portfolio/wallet_swaps.py +2 -4
  111. intentkit/skills/slack/base.py +18 -0
  112. intentkit/skills/slack/get_channel.py +3 -4
  113. intentkit/skills/slack/get_message.py +3 -4
  114. intentkit/skills/slack/schedule_message.py +3 -4
  115. intentkit/skills/slack/send_message.py +3 -4
  116. intentkit/skills/supabase/delete_data.py +3 -6
  117. intentkit/skills/supabase/fetch_data.py +3 -6
  118. intentkit/skills/supabase/insert_data.py +3 -6
  119. intentkit/skills/supabase/invoke_function.py +3 -6
  120. intentkit/skills/supabase/update_data.py +3 -6
  121. intentkit/skills/supabase/upsert_data.py +3 -6
  122. intentkit/skills/system/add_autonomous_task.py +1 -3
  123. intentkit/skills/system/delete_autonomous_task.py +1 -3
  124. intentkit/skills/system/edit_autonomous_task.py +1 -3
  125. intentkit/skills/system/list_autonomous_tasks.py +1 -3
  126. intentkit/skills/system/read_agent_api_key.py +2 -3
  127. intentkit/skills/system/regenerate_agent_api_key.py +2 -5
  128. intentkit/skills/tavily/base.py +14 -5
  129. intentkit/skills/tavily/tavily_extract.py +7 -8
  130. intentkit/skills/tavily/tavily_search.py +11 -9
  131. intentkit/skills/token/base.py +4 -6
  132. intentkit/skills/token/erc20_transfers.py +2 -4
  133. intentkit/skills/token/token_analytics.py +2 -4
  134. intentkit/skills/token/token_price.py +2 -4
  135. intentkit/skills/token/token_search.py +2 -4
  136. intentkit/skills/twitter/base.py +41 -0
  137. intentkit/skills/twitter/follow_user.py +4 -4
  138. intentkit/skills/twitter/get_mentions.py +4 -4
  139. intentkit/skills/twitter/get_timeline.py +4 -4
  140. intentkit/skills/twitter/get_user_by_username.py +4 -4
  141. intentkit/skills/twitter/get_user_tweets.py +4 -4
  142. intentkit/skills/twitter/like_tweet.py +4 -4
  143. intentkit/skills/twitter/post_tweet.py +3 -4
  144. intentkit/skills/twitter/reply_tweet.py +3 -4
  145. intentkit/skills/twitter/retweet.py +4 -4
  146. intentkit/skills/twitter/search_tweets.py +4 -4
  147. intentkit/skills/unrealspeech/base.py +16 -0
  148. intentkit/skills/unrealspeech/text_to_speech.py +4 -4
  149. intentkit/skills/venice_audio/base.py +11 -9
  150. intentkit/skills/venice_audio/venice_audio.py +238 -240
  151. intentkit/skills/venice_image/base.py +23 -19
  152. intentkit/skills/venice_image/image_enhance/image_enhance.py +78 -80
  153. intentkit/skills/venice_image/image_generation/image_generation_base.py +115 -117
  154. intentkit/skills/venice_image/image_upscale/image_upscale.py +88 -90
  155. intentkit/skills/venice_image/image_vision/image_vision.py +98 -100
  156. intentkit/skills/web_scraper/document_indexer.py +3 -5
  157. intentkit/skills/web_scraper/scrape_and_index.py +14 -17
  158. intentkit/skills/web_scraper/website_indexer.py +8 -10
  159. intentkit/skills/xmtp/README.md +110 -0
  160. intentkit/skills/xmtp/__init__.py +82 -0
  161. intentkit/skills/xmtp/base.py +13 -0
  162. intentkit/skills/xmtp/schema.json +41 -0
  163. intentkit/skills/xmtp/transfer.py +170 -0
  164. intentkit/skills/xmtp/xmtp.svg +26 -0
  165. {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/METADATA +3 -3
  166. {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/RECORD +168 -162
  167. {intentkit-0.6.9.dev2.dist-info → intentkit-0.6.10.dev1.dist-info}/WHEEL +0 -0
  168. {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.9.dev2
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.6.0,>=0.5.1
68
- Requires-Dist: langgraph<0.6.0,>=0.5.1
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