intentkit 0.6.20.dev1__py3-none-any.whl → 0.6.21.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/skills/base.py +25 -33
- intentkit/skills/defillama/base.py +3 -2
- intentkit/skills/supabase/base.py +8 -6
- intentkit/skills/supabase/delete_data.py +1 -2
- intentkit/skills/supabase/fetch_data.py +1 -2
- intentkit/skills/supabase/insert_data.py +1 -2
- intentkit/skills/supabase/invoke_function.py +1 -2
- intentkit/skills/supabase/update_data.py +1 -2
- intentkit/skills/supabase/upsert_data.py +1 -2
- intentkit/skills/xmtp/transfer.py +60 -6
- {intentkit-0.6.20.dev1.dist-info → intentkit-0.6.21.dev1.dist-info}/METADATA +1 -1
- {intentkit-0.6.20.dev1.dist-info → intentkit-0.6.21.dev1.dist-info}/RECORD +15 -15
- {intentkit-0.6.20.dev1.dist-info → intentkit-0.6.21.dev1.dist-info}/WHEEL +0 -0
- {intentkit-0.6.20.dev1.dist-info → intentkit-0.6.21.dev1.dist-info}/licenses/LICENSE +0 -0
intentkit/__init__.py
CHANGED
intentkit/skills/base.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import asyncio
|
|
2
1
|
import logging
|
|
3
2
|
from typing import Any, Callable, Dict, Literal, NotRequired, Optional, TypedDict, Union
|
|
4
3
|
|
|
@@ -6,18 +5,21 @@ from langchain_core.tools import BaseTool
|
|
|
6
5
|
from langchain_core.tools.base import ToolException
|
|
7
6
|
from langgraph.runtime import get_runtime
|
|
8
7
|
from pydantic import (
|
|
9
|
-
BaseModel,
|
|
10
8
|
ValidationError,
|
|
11
9
|
)
|
|
12
10
|
from pydantic.v1 import ValidationError as ValidationErrorV1
|
|
13
11
|
from redis.exceptions import RedisError
|
|
12
|
+
from web3 import Web3
|
|
14
13
|
|
|
15
14
|
from intentkit.abstracts.graph import AgentContext
|
|
16
15
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
17
|
-
from intentkit.models.agent import Agent
|
|
18
16
|
from intentkit.models.redis import get_redis
|
|
17
|
+
from intentkit.utils.chain import ChainProvider
|
|
19
18
|
from intentkit.utils.error import RateLimitExceeded
|
|
20
19
|
|
|
20
|
+
# Global cache for Web3 clients by network_id
|
|
21
|
+
_web3_client_cache: Dict[str, Web3] = {}
|
|
22
|
+
|
|
21
23
|
SkillState = Literal["disabled", "public", "private"]
|
|
22
24
|
SkillOwnerState = Literal["disabled", "private"]
|
|
23
25
|
APIKeyProviderValue = Literal["platform", "agent_owner"]
|
|
@@ -32,36 +34,6 @@ class SkillConfig(TypedDict):
|
|
|
32
34
|
__extra__: NotRequired[Dict[str, Any]]
|
|
33
35
|
|
|
34
36
|
|
|
35
|
-
class SkillContext(BaseModel):
|
|
36
|
-
skill_category: str
|
|
37
|
-
agent_id: str
|
|
38
|
-
user_id: Optional[str] = None
|
|
39
|
-
chat_id: Optional[str] = None
|
|
40
|
-
app_id: Optional[str] = None
|
|
41
|
-
entrypoint: Literal["web", "twitter", "telegram", "trigger", "api"]
|
|
42
|
-
is_private: bool
|
|
43
|
-
payer: Optional[str] = None
|
|
44
|
-
_agent: Optional[Agent] = None
|
|
45
|
-
|
|
46
|
-
@property
|
|
47
|
-
def agent(self) -> Agent:
|
|
48
|
-
if self._agent is None:
|
|
49
|
-
self._agent = asyncio.run(Agent.get(self.agent_id))
|
|
50
|
-
return self._agent
|
|
51
|
-
|
|
52
|
-
@property
|
|
53
|
-
def config(self) -> Dict[str, Any]:
|
|
54
|
-
agent = self.agent
|
|
55
|
-
config = None
|
|
56
|
-
if agent.skills:
|
|
57
|
-
config = agent.skills.get(self.skill_category)
|
|
58
|
-
if not config:
|
|
59
|
-
raise ValueError(
|
|
60
|
-
f"Skill {self.skill_category} not found in agent {self.agent_id}"
|
|
61
|
-
)
|
|
62
|
-
return config
|
|
63
|
-
|
|
64
|
-
|
|
65
37
|
class IntentKitSkill(BaseTool):
|
|
66
38
|
"""Abstract base class for IntentKit skills.
|
|
67
39
|
Will have predefined abilities.
|
|
@@ -185,3 +157,23 @@ class IntentKitSkill(BaseTool):
|
|
|
185
157
|
if runtime.context is None or not isinstance(runtime.context, AgentContext):
|
|
186
158
|
raise ValueError("No AgentContext found")
|
|
187
159
|
return runtime.context
|
|
160
|
+
|
|
161
|
+
def web3_client(self) -> Web3:
|
|
162
|
+
"""Get a Web3 client for the skill."""
|
|
163
|
+
context = self.get_context()
|
|
164
|
+
agent = context.agent
|
|
165
|
+
network_id = agent.network_id
|
|
166
|
+
|
|
167
|
+
# Check global cache first
|
|
168
|
+
if network_id in _web3_client_cache:
|
|
169
|
+
return _web3_client_cache[network_id]
|
|
170
|
+
|
|
171
|
+
# Create new Web3 client and cache it
|
|
172
|
+
chain_provider: ChainProvider = self.skill_store.get_system_config(
|
|
173
|
+
"chain_provider"
|
|
174
|
+
)
|
|
175
|
+
chain = chain_provider.get_chain_config(network_id)
|
|
176
|
+
web3_client = Web3(Web3.HTTPProvider(chain.rpc_url))
|
|
177
|
+
_web3_client_cache[network_id] = web3_client
|
|
178
|
+
|
|
179
|
+
return web3_client
|
|
@@ -5,8 +5,9 @@ from typing import Type
|
|
|
5
5
|
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
7
7
|
|
|
8
|
+
from intentkit.abstracts.graph import AgentContext
|
|
8
9
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
9
|
-
from intentkit.skills.base import IntentKitSkill
|
|
10
|
+
from intentkit.skills.base import IntentKitSkill
|
|
10
11
|
from intentkit.skills.defillama.config.chains import (
|
|
11
12
|
get_chain_from_alias,
|
|
12
13
|
)
|
|
@@ -39,7 +40,7 @@ class DefiLlamaBaseTool(IntentKitSkill):
|
|
|
39
40
|
return "defillama"
|
|
40
41
|
|
|
41
42
|
async def check_rate_limit(
|
|
42
|
-
self, context:
|
|
43
|
+
self, context: AgentContext, max_requests: int = 30, interval: int = 5
|
|
43
44
|
) -> tuple[bool, str | None]:
|
|
44
45
|
"""Check if the rate limit has been exceeded.
|
|
45
46
|
|
|
@@ -3,8 +3,9 @@ from typing import Type
|
|
|
3
3
|
from langchain_core.tools import ToolException
|
|
4
4
|
from pydantic import BaseModel, Field
|
|
5
5
|
|
|
6
|
+
from intentkit.abstracts.graph import AgentContext
|
|
6
7
|
from intentkit.abstracts.skill import SkillStoreABC
|
|
7
|
-
from intentkit.skills.base import IntentKitSkill
|
|
8
|
+
from intentkit.skills.base import IntentKitSkill
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class SupabaseBaseTool(IntentKitSkill):
|
|
@@ -21,9 +22,7 @@ class SupabaseBaseTool(IntentKitSkill):
|
|
|
21
22
|
def category(self) -> str:
|
|
22
23
|
return "supabase"
|
|
23
24
|
|
|
24
|
-
def get_supabase_config(
|
|
25
|
-
self, config: dict, context: SkillContext
|
|
26
|
-
) -> tuple[str, str]:
|
|
25
|
+
def get_supabase_config(self, context: AgentContext) -> tuple[str, str]:
|
|
27
26
|
"""Get Supabase URL and key from config.
|
|
28
27
|
|
|
29
28
|
Args:
|
|
@@ -36,6 +35,7 @@ class SupabaseBaseTool(IntentKitSkill):
|
|
|
36
35
|
Raises:
|
|
37
36
|
ValueError: If required config is missing
|
|
38
37
|
"""
|
|
38
|
+
config = context.agent.skill_config(self.category)
|
|
39
39
|
supabase_url = config.get("supabase_url")
|
|
40
40
|
|
|
41
41
|
# Use public_key for public operations if available, otherwise fall back to supabase_key
|
|
@@ -52,7 +52,7 @@ class SupabaseBaseTool(IntentKitSkill):
|
|
|
52
52
|
|
|
53
53
|
return supabase_url, supabase_key
|
|
54
54
|
|
|
55
|
-
def validate_table_access(self, table: str, context:
|
|
55
|
+
def validate_table_access(self, table: str, context: AgentContext) -> None:
|
|
56
56
|
"""Validate if the table can be accessed for write operations in public mode.
|
|
57
57
|
|
|
58
58
|
Args:
|
|
@@ -66,8 +66,10 @@ class SupabaseBaseTool(IntentKitSkill):
|
|
|
66
66
|
if context.is_private:
|
|
67
67
|
return
|
|
68
68
|
|
|
69
|
+
config = context.agent.skill_config(self.category)
|
|
70
|
+
|
|
69
71
|
# In public mode, check if table is in allowed list
|
|
70
|
-
public_write_tables =
|
|
72
|
+
public_write_tables = config.get("public_write_tables", "")
|
|
71
73
|
if not public_write_tables:
|
|
72
74
|
return
|
|
73
75
|
|
|
@@ -45,12 +45,11 @@ class SupabaseDeleteData(SupabaseBaseTool):
|
|
|
45
45
|
):
|
|
46
46
|
try:
|
|
47
47
|
context = self.get_context()
|
|
48
|
-
skill_config = context.agent.skill_config(self.category)
|
|
49
48
|
|
|
50
49
|
# Validate table access for public mode
|
|
51
50
|
self.validate_table_access(table, context)
|
|
52
51
|
|
|
53
|
-
supabase_url, supabase_key = self.get_supabase_config(
|
|
52
|
+
supabase_url, supabase_key = self.get_supabase_config(context)
|
|
54
53
|
|
|
55
54
|
# Create Supabase client
|
|
56
55
|
supabase: Client = create_client(supabase_url, supabase_key)
|
|
@@ -60,8 +60,7 @@ class SupabaseFetchData(SupabaseBaseTool):
|
|
|
60
60
|
):
|
|
61
61
|
try:
|
|
62
62
|
context = self.get_context()
|
|
63
|
-
|
|
64
|
-
supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
|
|
63
|
+
supabase_url, supabase_key = self.get_supabase_config(context)
|
|
65
64
|
|
|
66
65
|
# Create Supabase client
|
|
67
66
|
supabase: Client = create_client(supabase_url, supabase_key)
|
|
@@ -45,12 +45,11 @@ class SupabaseInsertData(SupabaseBaseTool):
|
|
|
45
45
|
):
|
|
46
46
|
try:
|
|
47
47
|
context = self.get_context()
|
|
48
|
-
skill_config = context.agent.skill_config(self.category)
|
|
49
48
|
|
|
50
49
|
# Validate table access for public mode
|
|
51
50
|
self.validate_table_access(table, context)
|
|
52
51
|
|
|
53
|
-
supabase_url, supabase_key = self.get_supabase_config(
|
|
52
|
+
supabase_url, supabase_key = self.get_supabase_config(context)
|
|
54
53
|
|
|
55
54
|
# Create Supabase client
|
|
56
55
|
supabase: Client = create_client(supabase_url, supabase_key)
|
|
@@ -44,8 +44,7 @@ class SupabaseInvokeFunction(SupabaseBaseTool):
|
|
|
44
44
|
):
|
|
45
45
|
try:
|
|
46
46
|
context = self.get_context()
|
|
47
|
-
|
|
48
|
-
supabase_url, supabase_key = self.get_supabase_config(skill_config, context)
|
|
47
|
+
supabase_url, supabase_key = self.get_supabase_config(context)
|
|
49
48
|
|
|
50
49
|
# Create Supabase client
|
|
51
50
|
supabase: Client = create_client(supabase_url, supabase_key)
|
|
@@ -48,12 +48,11 @@ class SupabaseUpdateData(SupabaseBaseTool):
|
|
|
48
48
|
):
|
|
49
49
|
try:
|
|
50
50
|
context = self.get_context()
|
|
51
|
-
skill_config = context.agent.skill_config(self.category)
|
|
52
51
|
|
|
53
52
|
# Validate table access for public mode
|
|
54
53
|
self.validate_table_access(table, context)
|
|
55
54
|
|
|
56
|
-
supabase_url, supabase_key = self.get_supabase_config(
|
|
55
|
+
supabase_url, supabase_key = self.get_supabase_config(context)
|
|
57
56
|
|
|
58
57
|
# Create Supabase client
|
|
59
58
|
supabase: Client = create_client(supabase_url, supabase_key)
|
|
@@ -50,12 +50,11 @@ class SupabaseUpsertData(SupabaseBaseTool):
|
|
|
50
50
|
):
|
|
51
51
|
try:
|
|
52
52
|
context = self.get_context()
|
|
53
|
-
skill_config = context.agent.skill_config(self.category)
|
|
54
53
|
|
|
55
54
|
# Validate table access for public mode
|
|
56
55
|
self.validate_table_access(table, context)
|
|
57
56
|
|
|
58
|
-
supabase_url, supabase_key = self.get_supabase_config(
|
|
57
|
+
supabase_url, supabase_key = self.get_supabase_config(context)
|
|
59
58
|
|
|
60
59
|
# Create Supabase client
|
|
61
60
|
supabase: Client = create_client(supabase_url, supabase_key)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from typing import List, Optional, Tuple, Type
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel, Field
|
|
4
|
+
from web3.exceptions import ContractLogicError
|
|
4
5
|
|
|
5
6
|
from intentkit.models.chat import ChatMessageAttachment, ChatMessageAttachmentType
|
|
6
7
|
from intentkit.skills.xmtp.base import XmtpBaseTool
|
|
@@ -14,9 +15,6 @@ class TransferInput(BaseModel):
|
|
|
14
15
|
amount: str = Field(
|
|
15
16
|
description="The amount to transfer (as string to handle large numbers)"
|
|
16
17
|
)
|
|
17
|
-
decimals: int = Field(
|
|
18
|
-
description="Number of decimal places for the token (18 for ETH, varies for ERC20 tokens)"
|
|
19
|
-
)
|
|
20
18
|
currency: str = Field(description="Currency symbol (e.g., 'ETH', 'USDC', 'DAI')")
|
|
21
19
|
token_contract_address: Optional[str] = Field(
|
|
22
20
|
default=None,
|
|
@@ -44,7 +42,6 @@ class XmtpTransfer(XmtpBaseTool):
|
|
|
44
42
|
from_address: str,
|
|
45
43
|
to_address: str,
|
|
46
44
|
amount: str,
|
|
47
|
-
decimals: int,
|
|
48
45
|
currency: str,
|
|
49
46
|
token_contract_address: Optional[str],
|
|
50
47
|
) -> Tuple[str, List[ChatMessageAttachment]]:
|
|
@@ -54,10 +51,8 @@ class XmtpTransfer(XmtpBaseTool):
|
|
|
54
51
|
from_address: The sender address
|
|
55
52
|
to_address: The recipient address
|
|
56
53
|
amount: Amount to transfer
|
|
57
|
-
decimals: Token decimals
|
|
58
54
|
currency: Currency symbol
|
|
59
55
|
token_contract_address: Token contract address (None for ETH)
|
|
60
|
-
config: LangChain runnable config
|
|
61
56
|
|
|
62
57
|
Returns:
|
|
63
58
|
Tuple of (content_message, list_of_attachments)
|
|
@@ -80,6 +75,65 @@ class XmtpTransfer(XmtpBaseTool):
|
|
|
80
75
|
|
|
81
76
|
chain_id_hex = chain_id_hex_by_network[agent.network_id]
|
|
82
77
|
|
|
78
|
+
# Validate token contract and get decimals
|
|
79
|
+
if token_contract_address:
|
|
80
|
+
# Validate ERC20 contract and get token info
|
|
81
|
+
web3 = self.web3_client()
|
|
82
|
+
|
|
83
|
+
# ERC20 ABI for symbol() and decimals() functions
|
|
84
|
+
erc20_abi = [
|
|
85
|
+
{
|
|
86
|
+
"constant": True,
|
|
87
|
+
"inputs": [],
|
|
88
|
+
"name": "symbol",
|
|
89
|
+
"outputs": [{"name": "", "type": "string"}],
|
|
90
|
+
"type": "function",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"constant": True,
|
|
94
|
+
"inputs": [],
|
|
95
|
+
"name": "decimals",
|
|
96
|
+
"outputs": [{"name": "", "type": "uint8"}],
|
|
97
|
+
"type": "function",
|
|
98
|
+
},
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
try:
|
|
102
|
+
# Create contract instance
|
|
103
|
+
contract = web3.eth.contract(
|
|
104
|
+
address=web3.to_checksum_address(token_contract_address),
|
|
105
|
+
abi=erc20_abi,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
# Get token symbol and decimals
|
|
109
|
+
token_symbol = contract.functions.symbol().call()
|
|
110
|
+
decimals = contract.functions.decimals().call()
|
|
111
|
+
|
|
112
|
+
# Validate symbol matches currency (case insensitive)
|
|
113
|
+
if token_symbol.upper() != currency.upper():
|
|
114
|
+
raise ValueError(
|
|
115
|
+
f"Token symbol mismatch: contract symbol is '{token_symbol}', "
|
|
116
|
+
f"but currency parameter is '{currency}'"
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
except ContractLogicError:
|
|
120
|
+
raise ValueError(
|
|
121
|
+
f"Invalid ERC20 contract address: {token_contract_address}. "
|
|
122
|
+
"The address does not point to a valid ERC20 token contract."
|
|
123
|
+
)
|
|
124
|
+
except Exception as e:
|
|
125
|
+
raise ValueError(
|
|
126
|
+
f"Failed to validate ERC20 contract {token_contract_address}: {str(e)}"
|
|
127
|
+
)
|
|
128
|
+
else:
|
|
129
|
+
# For ETH transfers, use 18 decimals
|
|
130
|
+
decimals = 18
|
|
131
|
+
# Validate currency is ETH for native transfers
|
|
132
|
+
if currency.upper() != "ETH":
|
|
133
|
+
raise ValueError(
|
|
134
|
+
f"For native transfers, currency must be 'ETH', got '{currency}'"
|
|
135
|
+
)
|
|
136
|
+
|
|
83
137
|
# Calculate amount in smallest unit (wei for ETH, token units for ERC20)
|
|
84
138
|
amount_int = int(float(amount) * (10**decimals))
|
|
85
139
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intentkit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.21.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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
intentkit/__init__.py,sha256=
|
|
1
|
+
intentkit/__init__.py,sha256=QEhgtBUptnUt512WzzDehT2foX-2-54HSasqRgAVfJw,384
|
|
2
2
|
intentkit/abstracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
intentkit/abstracts/agent.py,sha256=108gb5W8Q1Sy4G55F2_ZFv2-_CnY76qrBtpIr0Oxxqk,1489
|
|
4
4
|
intentkit/abstracts/api.py,sha256=ZUc24vaQvQVbbjznx7bV0lbbQxdQPfEV8ZxM2R6wZWo,166
|
|
@@ -36,7 +36,7 @@ intentkit/models/redis.py,sha256=UoN8jqLREO1VO9_w6m-JhldpP19iEHj4TiGVCMutQW4,370
|
|
|
36
36
|
intentkit/models/skill.py,sha256=h_2wtKEbYE29TLsMdaSnjfOv6vXY6GwMU_abw-ONX28,16374
|
|
37
37
|
intentkit/models/user.py,sha256=P7l6LOsZmXZ5tDPTczTbqDtDB_MKc_9_ddZkAB2npPk,9288
|
|
38
38
|
intentkit/skills/__init__.py,sha256=WkjmKB4xvy36zyXMroPMf_DTPgQloNS3L73nVnBmuQI,303
|
|
39
|
-
intentkit/skills/base.py,sha256=
|
|
39
|
+
intentkit/skills/base.py,sha256=s3gY5y7u7vEQsplDm-iYfs_hrWaHJRs4Bd-XZvqE-G0,6223
|
|
40
40
|
intentkit/skills/skills.toml,sha256=BCqO6nQVaU3wSpY0Js1xjakLzfttsq6hcHcJbw7q958,2734
|
|
41
41
|
intentkit/skills/acolyt/__init__.py,sha256=qHQXFlqyyx4deRxC0rts_ZEEpDVV-vWXPncqI_ZMOi4,2074
|
|
42
42
|
intentkit/skills/acolyt/acolyt.jpg,sha256=CwrrouzXzYvnHi1rprYruvZqPopG06ppMczEZmZ7D2s,11559
|
|
@@ -124,7 +124,7 @@ intentkit/skills/dapplooker/dapplooker_token_data.py,sha256=TtxdK2nRoEi5rxFJhMDD
|
|
|
124
124
|
intentkit/skills/dapplooker/schema.json,sha256=OdlkQqTEK42Zop4RfnU7pMM8frSzH29ti2MHmNAgq5I,2227
|
|
125
125
|
intentkit/skills/defillama/__init__.py,sha256=Q8s7r6MITlM_cXVb43dYzYP-xtx3HKBGECPDFDR6WUM,10121
|
|
126
126
|
intentkit/skills/defillama/api.py,sha256=_dgNEjMFD_y5Z0y4lh1Vd1JrkRn_wFyaUShKaTf5DtE,11617
|
|
127
|
-
intentkit/skills/defillama/base.py,sha256=
|
|
127
|
+
intentkit/skills/defillama/base.py,sha256=IHYwrvN12JE3qdqpWP__4RGzeeNobj5VS-tnCT5yLGs,4139
|
|
128
128
|
intentkit/skills/defillama/defillama.jpeg,sha256=n5u5PgvsUVwX9Q2-Gh_fe6YKxWjBsNEnbKaf2X3yJC0,4629
|
|
129
129
|
intentkit/skills/defillama/schema.json,sha256=cRxah1E_rFndjTT5ukp8aiVWOwyMwLUHfz1T2ux_K_E,10561
|
|
130
130
|
intentkit/skills/defillama/coins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -291,15 +291,15 @@ intentkit/skills/slack/schema.json,sha256=zaWSka1GM6_X-xNQBeIAn8lovskZo78stklBoH
|
|
|
291
291
|
intentkit/skills/slack/send_message.py,sha256=esspr3NygCVa9rEYULWdVnP2jFnLH3CxepI8R3bsC7g,2507
|
|
292
292
|
intentkit/skills/slack/slack.jpg,sha256=b_tlvObAfE2KL-D9jhZQ8qAlc1UnXStvF3TENqFtTNE,10818
|
|
293
293
|
intentkit/skills/supabase/__init__.py,sha256=CCdOpA4g27MxaUrYSMh8KgjHez7De0PNtlscoPX7Hh8,3417
|
|
294
|
-
intentkit/skills/supabase/base.py,sha256=
|
|
295
|
-
intentkit/skills/supabase/delete_data.py,sha256=
|
|
296
|
-
intentkit/skills/supabase/fetch_data.py,sha256=
|
|
297
|
-
intentkit/skills/supabase/insert_data.py,sha256=
|
|
298
|
-
intentkit/skills/supabase/invoke_function.py,sha256=
|
|
294
|
+
intentkit/skills/supabase/base.py,sha256=fY_Dk6yOOWgOgFqUSlN6MqnDDC6Lee37sT5gO83wPN4,2933
|
|
295
|
+
intentkit/skills/supabase/delete_data.py,sha256=nraDtSx40Fu9yB8iBD-0-Dc9LLp4U1W1lb75e1MSSVw,3737
|
|
296
|
+
intentkit/skills/supabase/fetch_data.py,sha256=v67g_-k77SYLSpeWBFZnOoia3uSZApjGR-i0g-jjxmY,4623
|
|
297
|
+
intentkit/skills/supabase/insert_data.py,sha256=v6Hau9dPOoejKMLg4DWQqRQbOBPqHwFq-OlwzwnkzM4,2117
|
|
298
|
+
intentkit/skills/supabase/invoke_function.py,sha256=1km5yswfLRapNcVbXQsSVlt6ZikPGFUOmwnwLj9gLIQ,2410
|
|
299
299
|
intentkit/skills/supabase/schema.json,sha256=cqjo20flg6Xlv6b-2nrsJAbdCMBCJfmlfz8tGFJIlGY,5194
|
|
300
300
|
intentkit/skills/supabase/supabase.svg,sha256=65_80QCtJiKKV4EAuny_xbOD5JlTONEiq9xqO00hDtM,1107
|
|
301
|
-
intentkit/skills/supabase/update_data.py,sha256=
|
|
302
|
-
intentkit/skills/supabase/upsert_data.py,sha256=
|
|
301
|
+
intentkit/skills/supabase/update_data.py,sha256=IOB78dSbP3yrsNuE2DH5z-UztADXpu890myq42c4hQU,3872
|
|
302
|
+
intentkit/skills/supabase/upsert_data.py,sha256=tZOch4jOfXwrk6V-1D6UIWXRRgpgfO9dIXWZLnEJvyw,2387
|
|
303
303
|
intentkit/skills/system/__init__.py,sha256=bqNYJCjLx9p23E21ELLP-T0B_NP0ltzT0TMqsBI-9Bg,3668
|
|
304
304
|
intentkit/skills/system/add_autonomous_task.py,sha256=YnkxBaNLPUEPt7rWWWKFVXugdb_wCcxCpSr1cuCSPio,3164
|
|
305
305
|
intentkit/skills/system/base.py,sha256=Sm4lSNgbxwGK5YimnBfwi3Hc8E1EwSMZIXsCJbIPiLM,700
|
|
@@ -401,7 +401,7 @@ intentkit/skills/xmtp/base.py,sha256=85ZEuNLJmI_NmBPkbvDXQrNvJNG8dp9MbcbQYQQ3QZ8
|
|
|
401
401
|
intentkit/skills/xmtp/price.py,sha256=LqM3tWiW42bYIRqfvsZUvYpG5H5ife3WUhR-pxiS9I8,2648
|
|
402
402
|
intentkit/skills/xmtp/schema.json,sha256=GFJKYPQVAcfiybL1uhAHANYeQUR0JWWxPgPhXW92N0s,3089
|
|
403
403
|
intentkit/skills/xmtp/swap.py,sha256=8YEjfOTS-BtKKuXT1QLedBTM9h4QUF0rVYtLkC7WPG0,8412
|
|
404
|
-
intentkit/skills/xmtp/transfer.py,sha256=
|
|
404
|
+
intentkit/skills/xmtp/transfer.py,sha256=GSo6xJ2RjSbeLsz4jXaod5g6NXnqm2KgEzvMrAs8SgM,8308
|
|
405
405
|
intentkit/skills/xmtp/xmtp.png,sha256=vQzT-71zIb8aPodg-GkGSQbBnjGAPczWGm3es2ZkJe8,6681
|
|
406
406
|
intentkit/utils/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
407
407
|
intentkit/utils/chain.py,sha256=3GBHuAbXxQr_HlOvkbB2kruYSkweucfxI5u-swXzY40,15135
|
|
@@ -411,7 +411,7 @@ intentkit/utils/random.py,sha256=DymMxu9g0kuQLgJUqalvgksnIeLdS-v0aRk5nQU0mLI,452
|
|
|
411
411
|
intentkit/utils/s3.py,sha256=9trQNkKQ5VgxWsewVsV8Y0q_pXzGRvsCYP8xauyUYkg,8549
|
|
412
412
|
intentkit/utils/slack_alert.py,sha256=s7UpRgyzLW7Pbmt8cKzTJgMA9bm4EP-1rQ5KXayHu6E,2264
|
|
413
413
|
intentkit/utils/tx.py,sha256=2yLLGuhvfBEY5n_GJ8wmIWLCzn0FsYKv5kRNzw_sLUI,1454
|
|
414
|
-
intentkit-0.6.
|
|
415
|
-
intentkit-0.6.
|
|
416
|
-
intentkit-0.6.
|
|
417
|
-
intentkit-0.6.
|
|
414
|
+
intentkit-0.6.21.dev1.dist-info/METADATA,sha256=jVCR2IIIJHNVxdwBySRRt_shQxkTXgOp_Nykh3Xr37U,6414
|
|
415
|
+
intentkit-0.6.21.dev1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
416
|
+
intentkit-0.6.21.dev1.dist-info/licenses/LICENSE,sha256=Bln6DhK-LtcO4aXy-PBcdZv2f24MlJFm_qn222biJtE,1071
|
|
417
|
+
intentkit-0.6.21.dev1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|