intentkit 0.6.0.dev18__py3-none-any.whl → 0.6.1__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 CHANGED
@@ -3,7 +3,7 @@
3
3
  A powerful platform for building AI agents with blockchain and cryptocurrency capabilities.
4
4
  """
5
5
 
6
- __version__ = "0.6.0-dev.18"
6
+ __version__ = "0.6.1"
7
7
  __author__ = "hyacinthus"
8
8
  __email__ = "hyacinthus@gmail.com"
9
9
 
intentkit/clients/cdp.py CHANGED
@@ -114,6 +114,9 @@ class CdpClient:
114
114
  )
115
115
  address = new_account.address
116
116
  logger.info("Created new wallet: %s", address)
117
+
118
+ # close client
119
+ await cdp_client.close()
117
120
  # now it should be created or migrated, store it
118
121
  agent_data.evm_wallet_address = address
119
122
  await agent_data.save()
intentkit/core/node.py CHANGED
@@ -135,9 +135,7 @@ class PreModelNode(RunnableCallable):
135
135
  f"Trimmed messages: {len(messages)} -> {len(trimmed_messages)}"
136
136
  )
137
137
  if len(trimmed_messages) <= 3:
138
- logger.error(
139
- f"Too few messages after trim: {len(trimmed_messages)}"
140
- )
138
+ logger.info(f"Too few messages after trim: {len(trimmed_messages)}")
141
139
  return {}
142
140
  return {
143
141
  "messages": [RemoveMessage(REMOVE_ALL_MESSAGES)] + trimmed_messages,
@@ -1,6 +1,5 @@
1
1
  from typing import Optional, Type
2
2
 
3
- from cdp import EvmServerAccount
4
3
  from pydantic import BaseModel, Field
5
4
 
6
5
  from intentkit.abstracts.skill import SkillStoreABC
@@ -49,85 +48,63 @@ class GetBalance(CDPBaseTool):
49
48
  Returns:
50
49
  str: A message containing the balance information or error message.
51
50
  """
52
- try:
53
- # Get network information from CDP client
54
- cdp_client = await get_cdp_client(self.agent_id, self.skill_store)
55
- provider = await cdp_client.get_wallet_provider()
56
- account: EvmServerAccount = provider._account
57
- provider_config = await cdp_client.get_provider_config()
58
- network_id = provider_config.network_id
59
-
60
- # Map network_id to the format expected by the API
61
- network_mapping = {
62
- "base-mainnet": "base",
63
- "ethereum-mainnet": "ethereum",
64
- }
65
- api_network = network_mapping.get(network_id, network_id)
51
+ # Get network information from CDP client
52
+ cdp_client = await get_cdp_client(self.agent_id, self.skill_store)
53
+ provider = await cdp_client.get_wallet_provider()
54
+ provider_config = await cdp_client.get_provider_config()
55
+ network_id = provider_config.network_id
56
+
57
+ # Map network_id to the format expected by the API
58
+ network_mapping = {
59
+ "base-mainnet": "base",
60
+ "ethereum-mainnet": "ethereum",
61
+ }
62
+ api_network = network_mapping.get(network_id, network_id)
63
+
64
+ # For native ETH balance, use the account's balance directly
65
+ if asset_id and asset_id.lower() == "eth":
66
+ try:
67
+ # Get native balance using Web3
68
+ balance_wei = provider.get_balance()
69
+ balance_eth = balance_wei / (10**18) # Convert from wei to ETH
70
+ return f"ETH balance: {balance_eth} ETH"
71
+ except Exception as e:
72
+ return f"Error getting ETH balance: {e!s}"
66
73
 
74
+ client = provider.get_client()
75
+ async with client:
76
+ account = await client.evm.get_account(provider.get_address())
67
77
  # If no asset_id provided, return all token balances
68
78
  if asset_id is None:
69
- try:
70
- # Get native ETH balance
71
- balance_wei = provider.get_balance()
72
- balance_eth = balance_wei / (10**18) # Convert from wei to ETH
73
-
74
- # Get all token balances
75
- token_balances = await account.list_token_balances(api_network)
79
+ # Get native ETH balance
80
+ balance_wei = provider.get_balance()
81
+ balance_eth = balance_wei / (10**18) # Convert from wei to ETH
76
82
 
77
- result = [f"ETH balance: {balance_eth} ETH"]
83
+ # Get all token balances
84
+ token_balances = await account.list_token_balances(api_network)
78
85
 
79
- for balance in token_balances.balances:
80
- result.append(
81
- f"{balance.token.symbol} balance: {balance.amount.decimals} {balance.token.name}"
82
- )
86
+ result = [f"ETH balance: {balance_eth} ETH"]
83
87
 
84
- return f"All balances for account {account.address}:\n" + "\n".join(
85
- result
88
+ for balance in token_balances.balances:
89
+ result.append(
90
+ f"{balance.token.symbol} balance: {balance.amount.decimals} {balance.token.name}"
86
91
  )
87
92
 
88
- except Exception as e:
89
- return f"Error getting all balances: {e!s}"
90
-
91
- # For native ETH balance, use the account's balance directly
92
- if asset_id.lower() == "eth":
93
- try:
94
- # Get native balance using Web3
95
- balance_wei = provider.get_balance()
96
- balance_eth = balance_wei / (10**18) # Convert from wei to ETH
97
- return (
98
- f"ETH balance for account {account.address}: {balance_eth} ETH"
99
- )
100
- except Exception as e:
101
- return f"Error getting ETH balance: {e!s}"
93
+ return f"All balances for account {account.address}:\n" + "\n".join(
94
+ result
95
+ )
102
96
 
103
97
  # For other tokens, try the list_token_balances API
104
- try:
105
- # list_token_balances returns all token balances for the account
106
- token_balances = await account.list_token_balances(api_network)
107
-
108
- # Find the balance for the specific asset
109
- target_balance = None
110
- for balance in token_balances.balances:
111
- if balance.token.symbol.lower() == asset_id.lower():
112
- target_balance = balance
113
- break
114
-
115
- if target_balance:
116
- return f"Balance for {asset_id} in account {account.address}: {target_balance.amount.decimals} {target_balance.token.name}"
117
- else:
118
- return f"No balance found for asset {asset_id} in account {account.address}"
119
-
120
- except Exception as e:
121
- return f"Error getting balance for account: {e!s}"
122
-
123
- except Exception as e:
124
- return f"Error getting balance: {str(e)}"
125
-
126
- def _run(self, asset_id: Optional[str] = None) -> str:
127
- """Sync implementation of the tool.
128
-
129
- This method is deprecated since we now have native async implementation in _arun.
130
- """
131
- raise NotImplementedError(
132
- "Use _arun instead, which is the async implementation"
133
- )
98
+ token_balances = await account.list_token_balances(api_network)
99
+
100
+ # Find the balance for the specific asset
101
+ target_balance = None
102
+ for balance in token_balances.balances:
103
+ if balance.token.symbol.lower() == asset_id.lower():
104
+ target_balance = balance
105
+ break
106
+
107
+ if target_balance:
108
+ return f"Balance for {asset_id} in account {account.address}: {target_balance.amount.decimals} {target_balance.token.name}"
109
+ else:
110
+ return f"No balance found for asset {asset_id} in account {account.address}"
@@ -16,7 +16,7 @@
16
16
  "type": "boolean",
17
17
  "title": "Enabled",
18
18
  "description": "Whether this skill is enabled",
19
- "default": true
19
+ "default": false
20
20
  },
21
21
  "states": {
22
22
  "type": "object",
@@ -150,4 +150,4 @@
150
150
  }
151
151
  },
152
152
  "additionalProperties": true
153
- }
153
+ }
@@ -1,7 +1,7 @@
1
1
  """Supabase skills."""
2
2
 
3
3
  import logging
4
- from typing import TypedDict
4
+ from typing import NotRequired, TypedDict
5
5
 
6
6
  from intentkit.abstracts.skill import SkillStoreABC
7
7
  from intentkit.skills.base import SkillConfig, SkillState
@@ -34,7 +34,8 @@ class Config(SkillConfig):
34
34
  states: SkillStates
35
35
  supabase_url: str
36
36
  supabase_key: str
37
- public_write_tables: str = ""
37
+ public_write_tables: NotRequired[str]
38
+ public_key: NotRequired[str]
38
39
 
39
40
 
40
41
  async def get_skills(
@@ -21,11 +21,14 @@ class SupabaseBaseTool(IntentKitSkill):
21
21
  def category(self) -> str:
22
22
  return "supabase"
23
23
 
24
- def get_supabase_config(self, config: dict) -> tuple[str, str]:
24
+ def get_supabase_config(
25
+ self, config: dict, context: SkillContext
26
+ ) -> tuple[str, str]:
25
27
  """Get Supabase URL and key from config.
26
28
 
27
29
  Args:
28
30
  config: The agent configuration
31
+ context: The skill context containing configuration and mode info
29
32
 
30
33
  Returns:
31
34
  Tuple of (supabase_url, supabase_key)
@@ -34,7 +37,13 @@ class SupabaseBaseTool(IntentKitSkill):
34
37
  ValueError: If required config is missing
35
38
  """
36
39
  supabase_url = config.get("supabase_url")
37
- supabase_key = config.get("supabase_key")
40
+
41
+ # Use public_key for public operations if available, otherwise fall back to supabase_key
42
+ if context.is_private:
43
+ supabase_key = config.get("supabase_key")
44
+ else:
45
+ # Try public_key first, fall back to supabase_key if public_key doesn't exist
46
+ supabase_key = config.get("public_key") or config.get("supabase_key")
38
47
 
39
48
  if not supabase_url:
40
49
  raise ValueError("supabase_url is required in config")
@@ -51,7 +51,9 @@ class SupabaseDeleteData(SupabaseBaseTool):
51
51
  # Validate table access for public mode
52
52
  self.validate_table_access(table, context)
53
53
 
54
- supabase_url, supabase_key = self.get_supabase_config(context.config)
54
+ supabase_url, supabase_key = self.get_supabase_config(
55
+ context.config, context
56
+ )
55
57
 
56
58
  # Create Supabase client
57
59
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -62,7 +62,9 @@ class SupabaseFetchData(SupabaseBaseTool):
62
62
  ):
63
63
  try:
64
64
  context = self.context_from_config(config)
65
- supabase_url, supabase_key = self.get_supabase_config(context.config)
65
+ supabase_url, supabase_key = self.get_supabase_config(
66
+ context.config, context
67
+ )
66
68
 
67
69
  # Create Supabase client
68
70
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -51,7 +51,9 @@ class SupabaseInsertData(SupabaseBaseTool):
51
51
  # Validate table access for public mode
52
52
  self.validate_table_access(table, context)
53
53
 
54
- supabase_url, supabase_key = self.get_supabase_config(context.config)
54
+ supabase_url, supabase_key = self.get_supabase_config(
55
+ context.config, context
56
+ )
55
57
 
56
58
  # Create Supabase client
57
59
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -46,7 +46,9 @@ class SupabaseInvokeFunction(SupabaseBaseTool):
46
46
  ):
47
47
  try:
48
48
  context = self.context_from_config(config)
49
- supabase_url, supabase_key = self.get_supabase_config(context.config)
49
+ supabase_url, supabase_key = self.get_supabase_config(
50
+ context.config, context
51
+ )
50
52
 
51
53
  # Create Supabase client
52
54
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -143,11 +143,17 @@
143
143
  "x-sensitive": true,
144
144
  "format": "password"
145
145
  },
146
+ "public_key": {
147
+ "type": "string",
148
+ "title": "Public API Key",
149
+ "description": "You can add a key with more restrictive permissions for public skills. If not provided, supabase_key will be used.",
150
+ "x-sensitive": true,
151
+ "format": "password"
152
+ },
146
153
  "public_write_tables": {
147
154
  "type": "string",
148
155
  "title": "Public Write Tables",
149
- "description": "Add tables separated by commas. When insert, update, upsert, or delete operations are enabled for public use, only tables from this list can be used. This list does not restrict the skills executed by the owner or in autonomous chat.",
150
- "default": ""
156
+ "description": "Add tables separated by commas. When insert, update, upsert, or delete operations are enabled for public use, only tables from this list can be used. This list does not restrict the skills executed by the owner or in autonomous chat."
151
157
  }
152
158
  },
153
159
  "required": [
@@ -54,7 +54,9 @@ class SupabaseUpdateData(SupabaseBaseTool):
54
54
  # Validate table access for public mode
55
55
  self.validate_table_access(table, context)
56
56
 
57
- supabase_url, supabase_key = self.get_supabase_config(context.config)
57
+ supabase_url, supabase_key = self.get_supabase_config(
58
+ context.config, context
59
+ )
58
60
 
59
61
  # Create Supabase client
60
62
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -56,7 +56,9 @@ class SupabaseUpsertData(SupabaseBaseTool):
56
56
  # Validate table access for public mode
57
57
  self.validate_table_access(table, context)
58
58
 
59
- supabase_url, supabase_key = self.get_supabase_config(context.config)
59
+ supabase_url, supabase_key = self.get_supabase_config(
60
+ context.config, context
61
+ )
60
62
 
61
63
  # Create Supabase client
62
64
  supabase: Client = create_client(supabase_url, supabase_key)
@@ -14,7 +14,7 @@
14
14
  "type": "boolean",
15
15
  "title": "Enabled",
16
16
  "description": "Whether this skill is enabled",
17
- "default": true
17
+ "default": false
18
18
  },
19
19
  "states": {
20
20
  "type": "object",
@@ -16,7 +16,7 @@
16
16
  "type": "boolean",
17
17
  "title": "Enabled",
18
18
  "description": "Whether this skill is enabled",
19
- "default": true
19
+ "default": false
20
20
  },
21
21
  "states": {
22
22
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: intentkit
3
- Version: 0.6.0.dev18
3
+ Version: 0.6.1
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=IyGegFUuu3eVl1hNwwS8XT0f62Iz4DMDQmvX6OjejFM,385
1
+ intentkit/__init__.py,sha256=-3Un4YJwcb3e0Uok1j5DREXHBSd5AtyTZOdqwc8ZpuU,378
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
@@ -8,7 +8,7 @@ intentkit/abstracts/graph.py,sha256=QhaVLtKyo9iTotIWhjgUi7BbmRCcb8yrHCTSq4Hsvnw,
8
8
  intentkit/abstracts/skill.py,sha256=WS8G_XP0Ukw1eUB-dhbx6FrJUbvV4tqzRnkWa2dt9ck,3573
9
9
  intentkit/abstracts/twitter.py,sha256=cEtP7ygR_b-pHdc9i8kBuyooz1cPoGUGwsBHDpowJyY,1262
10
10
  intentkit/clients/__init__.py,sha256=sQ_6_bRC2MPWLPH-skQ3qsEe8ce-dUGL7i8VJOautHg,298
11
- intentkit/clients/cdp.py,sha256=P-JbnrATEJhczsgByhnioZEkYKsMvI6TtCqV8AszXHY,5856
11
+ intentkit/clients/cdp.py,sha256=_CkvnBkzdq7-sFMGct4lz85FpaOoHxOGstWubhClzrA,5921
12
12
  intentkit/clients/twitter.py,sha256=JAc-skIhZZjAFcwzLSTiOPOonteGjrl_JwXoA8IVBmI,16934
13
13
  intentkit/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  intentkit/config/config.py,sha256=6RreVvQH1xuHVOnIJ3AcaRYzdMw1RLo0vYYtvPKvTds,7453
@@ -18,7 +18,7 @@ intentkit/core/api.py,sha256=3GIMJpwduLUSbVPNW6mQVxZncYHH3OlLwdiqFtYtEAE,1208
18
18
  intentkit/core/client.py,sha256=rIwtJVVm-7piXtFNDbeykt9vWdNTecgjW0aA3N-lHnM,1495
19
19
  intentkit/core/credit.py,sha256=fpRe8BRNGGaumAvJFgce1T2zkclExSFWQdoUVnl6k5g,60789
20
20
  intentkit/core/engine.py,sha256=ZoMk8fBUg1fqbELT8Pi8vB667ytFqAT4mQfUNt5g_H0,41192
21
- intentkit/core/node.py,sha256=30ivwRfVRBCMrzgzXlBKfkkobZVbpIon5E4cuavmvvA,9155
21
+ intentkit/core/node.py,sha256=RqAdcR1Fcpgw4k7q9l1Sry8LgcuZWdNxSjOHDcoavCI,9108
22
22
  intentkit/core/prompt.py,sha256=RfLhlUktkB2kCr3wfldqq6ZP2l8heZIMc8jVp31KIyQ,3631
23
23
  intentkit/core/skill.py,sha256=fFM_HVc8Qam2zICb_dH3nRcInEXdtfgzFnL0vvMNz2Y,3830
24
24
  intentkit/models/agent.py,sha256=I9wAsDqdfILpXsj5H0sE0fNwX-enzuEdEvmx-rWt_5E,57221
@@ -66,7 +66,7 @@ intentkit/skills/carv/token_info_and_price.py,sha256=R7M5-nkjrauvxaNkORYtLcP9yOY
66
66
  intentkit/skills/cdp/__init__.py,sha256=sBuRJdpCrqDQUY576GCph_VS2vnDTGeBnriSfSv7S3A,4399
67
67
  intentkit/skills/cdp/base.py,sha256=BcleKSXm0oNcHYky4uUPCJ3roXxMeTJs2OUS-8MkfMI,581
68
68
  intentkit/skills/cdp/cdp.png,sha256=dxPF6jPbKVfxJNMvbGTmBhXM-rSDvweF06txoX1cIM4,4425
69
- intentkit/skills/cdp/get_balance.py,sha256=pNIOvS8oxl7g01H48bM5IOFwwPaE6htEGSskkXfvV_A,5408
69
+ intentkit/skills/cdp/get_balance.py,sha256=-mRFJjlc2gQ4LZRMqD6HZqyR_y_rsMl1HlVONoE0kIw,4473
70
70
  intentkit/skills/cdp/schema.json,sha256=3ULPR95TW_Fp2GzzHwmwhAqm8vlxs2tN7fG6WoPY87c,11774
71
71
  intentkit/skills/chainlist/README.md,sha256=FEVQObs2W_oL2kyV-vZpHNwZCCgqm5Kt0sv0GD_Xo1M,958
72
72
  intentkit/skills/chainlist/__init__.py,sha256=2aRC-jXW3WYiR_-RM-_Ls1lby_54ZemZ6qtggntGa-U,1502
@@ -195,7 +195,7 @@ intentkit/skills/firecrawl/clear.py,sha256=oJTeZxqrmB_5bHB_qLPxveuwC20N7WzYjJJeF
195
195
  intentkit/skills/firecrawl/crawl.py,sha256=ZolHI_0VFBk3CasRyQe7pjHDiQ2GAk-w0fKDFqNmSPk,18335
196
196
  intentkit/skills/firecrawl/firecrawl.png,sha256=6GoGlIMYuIDo-TqMlZbD4QYkmxvQ7krqAa5MANumJqk,5065
197
197
  intentkit/skills/firecrawl/query.py,sha256=oe3JzM_QAuhtBAyykQFDEXRYdqlGaQhnAw2v-xqBono,4503
198
- intentkit/skills/firecrawl/schema.json,sha256=2hjb7ixXS4SZkOqCjc6TqIeNYoChpUqIS4_KO1LRKDs,4439
198
+ intentkit/skills/firecrawl/schema.json,sha256=3LfZPS-mdKNh8r7IQ-oAMFAq_xS5dVs9sV8PXeEUh6o,4439
199
199
  intentkit/skills/firecrawl/scrape.py,sha256=HyMiE9j1bmyQFzwLgZbq3RSTnR8l-dL_pYk-wpyD_P0,13699
200
200
  intentkit/skills/firecrawl/utils.py,sha256=Ot_vEg4Z30_BY3Xbh59gb_Tu17tSCmytRw49RGAzZ88,10093
201
201
  intentkit/skills/github/README.md,sha256=SzYGJ9qSPaZl68iD8AQJGKTMLv0keQZesnSK-VhrAfs,1802
@@ -280,26 +280,26 @@ intentkit/skills/slack/schedule_message.py,sha256=NRlHb1MeX_iZ5DzhhaVGCy5jYdFvZv
280
280
  intentkit/skills/slack/schema.json,sha256=zaWSka1GM6_X-xNQBeIAn8lovskZo78stklBoH4qPqA,3382
281
281
  intentkit/skills/slack/send_message.py,sha256=Svq__sfdgA1tuil-FkB_-Fkkwp6ocQpm9DM6mKrjBJo,2542
282
282
  intentkit/skills/slack/slack.jpg,sha256=b_tlvObAfE2KL-D9jhZQ8qAlc1UnXStvF3TENqFtTNE,10818
283
- intentkit/skills/supabase/__init__.py,sha256=adne4kr3r2cHVFY09YXq_MMpdMI2ORBe0OaC29RQXB4,3363
284
- intentkit/skills/supabase/base.py,sha256=C4WYZ-4zW7045TEx0wxW7Wd1DUAB4z2snsb8-r6lHmc,2379
285
- intentkit/skills/supabase/delete_data.py,sha256=MptS05UgRSy5C3Ndlbzd23kFj7P_IuOe403f-IjDsuo,3849
286
- intentkit/skills/supabase/fetch_data.py,sha256=OGe8rfeFDmRDiI0gOIwL-z_5c6NwQFh9fw6p5BsyMFU,4735
287
- intentkit/skills/supabase/insert_data.py,sha256=B423NtKmUW-MzWki9akglvzii98dStHie9ssAYrlwzo,2229
288
- intentkit/skills/supabase/invoke_function.py,sha256=i3AzobqaaEy6P-_QdGjzhyD2UiC1qipOyCKu8hD0rwg,2522
289
- intentkit/skills/supabase/schema.json,sha256=dAKAyp_L94YSh9jj2KCYLJE7XDZQvcrBx-Jud-Shs7Y,4845
283
+ intentkit/skills/supabase/__init__.py,sha256=CCdOpA4g27MxaUrYSMh8KgjHez7De0PNtlscoPX7Hh8,3417
284
+ intentkit/skills/supabase/base.py,sha256=o0SQwbBC_enC6-u2euDpqd4teZKAHNd55V-tAYuasok,2813
285
+ intentkit/skills/supabase/delete_data.py,sha256=HxQie5GUas6xdRYF_SJ1-Y8K0X1aEeMmkUYG4DFSCdE,3888
286
+ intentkit/skills/supabase/fetch_data.py,sha256=cEmDhG1dJE8PXMxzZIC0ttiKT8iSIj75vN3Vwb1W66s,4774
287
+ intentkit/skills/supabase/insert_data.py,sha256=LqGcQXVWZDtSyK_lYWEJLqYL8ZEK9hDhl2lQHbzHQ-E,2268
288
+ intentkit/skills/supabase/invoke_function.py,sha256=dxCsROgQduJIJkDkop_SRgeMECiAPwAAWE-I8nSfDl0,2561
289
+ intentkit/skills/supabase/schema.json,sha256=u1VMsTJBC2PqZxMeagyiQM2FKwONu03-Bl2zu1DsPdw,5101
290
290
  intentkit/skills/supabase/supabase.svg,sha256=65_80QCtJiKKV4EAuny_xbOD5JlTONEiq9xqO00hDtM,1107
291
- intentkit/skills/supabase/update_data.py,sha256=GM-JtpQHcZbX3fezjWLgdia3zZDKfgz6ZOhHfYSWXI0,3984
292
- intentkit/skills/supabase/upsert_data.py,sha256=STKu3e0n2krpzTOznJPV9hw2__GL6e1foIyNo3hh_xU,2499
291
+ intentkit/skills/supabase/update_data.py,sha256=Hbwsoa52GZNTPIhWdR9vj9VlcPRUn_vCMOYDzmMoPsI,4023
292
+ intentkit/skills/supabase/upsert_data.py,sha256=JgKLFPcQkUwnQhqTZojT4Ae53hYULeGEkQ1gxZJEe-c,2538
293
293
  intentkit/skills/system/__init__.py,sha256=y5sBakdOL1vtXV8DNn-g_MN11CrJ8QrOceoJjD5MzXs,2402
294
294
  intentkit/skills/system/base.py,sha256=Sm4lSNgbxwGK5YimnBfwi3Hc8E1EwSMZIXsCJbIPiLM,700
295
295
  intentkit/skills/system/read_agent_api_key.py,sha256=r7IfD9LCtYocqZsgSpSp7jt-fF00NuvoUwdAhZU-3Fs,3528
296
296
  intentkit/skills/system/regenerate_agent_api_key.py,sha256=55Jz5A6TnbSXc2FG3e7wkIxzkIIfDX0hWOENBTNkFi4,3188
297
- intentkit/skills/system/schema.json,sha256=1JL4UVR1zbLJEDIfRJ4u6Cby8UKEz9xAfvmF2AXjLZY,1461
297
+ intentkit/skills/system/schema.json,sha256=4lv144DEDz9m1NYQdTgke3nDyCrVsGm82QiIoLbIRww,1462
298
298
  intentkit/skills/system/system.svg,sha256=PVbC6r6rOhvht0lB1fcxDNTcbMUa7haHAkJ8rxp7gm0,3740
299
299
  intentkit/skills/tavily/README.md,sha256=VagMkuHrS_ge2Sir9M9CoeqmWc_rysKhTO9-LGICQsA,2840
300
300
  intentkit/skills/tavily/__init__.py,sha256=PDtH-O3fdAPCc3lGMbgcXKK1fDdkTO1CW-40825FtGU,2386
301
301
  intentkit/skills/tavily/base.py,sha256=GRlMhcjleK2kNfBzY2p8vP761dd0ULGBfSqPMX3-tHA,888
302
- intentkit/skills/tavily/schema.json,sha256=2I_RrN9QJIY62350_HEMEi-A6DeiSgmOMGROsi9MqYw,3005
302
+ intentkit/skills/tavily/schema.json,sha256=1RwXTyzocphGhG7akMTvVOwZPQz80xpJoOASOL4oNvw,3006
303
303
  intentkit/skills/tavily/tavily.jpg,sha256=3vJ6v-zgXJY9dwAdMqcB1OB-gQxyc1kFTJthauU0E0k,3758
304
304
  intentkit/skills/tavily/tavily_extract.py,sha256=DajUp-8xcPb1PpkBG7Mq5ZO2QVCMXql0O1JxFhq4Mm0,5794
305
305
  intentkit/skills/tavily/tavily_search.py,sha256=reYLWNu2zXu0fo0se8DG06jnD_tmxjcrh9WIwzTwKHI,5104
@@ -390,7 +390,7 @@ intentkit/utils/random.py,sha256=DymMxu9g0kuQLgJUqalvgksnIeLdS-v0aRk5nQU0mLI,452
390
390
  intentkit/utils/s3.py,sha256=9trQNkKQ5VgxWsewVsV8Y0q_pXzGRvsCYP8xauyUYkg,8549
391
391
  intentkit/utils/slack_alert.py,sha256=s7UpRgyzLW7Pbmt8cKzTJgMA9bm4EP-1rQ5KXayHu6E,2264
392
392
  intentkit/utils/tx.py,sha256=2yLLGuhvfBEY5n_GJ8wmIWLCzn0FsYKv5kRNzw_sLUI,1454
393
- intentkit-0.6.0.dev18.dist-info/METADATA,sha256=dD_D3EAa1oly7R5V91-hAl22oQqbkwJT-3zT7cht_bU,7286
394
- intentkit-0.6.0.dev18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
395
- intentkit-0.6.0.dev18.dist-info/licenses/LICENSE,sha256=Bln6DhK-LtcO4aXy-PBcdZv2f24MlJFm_qn222biJtE,1071
396
- intentkit-0.6.0.dev18.dist-info/RECORD,,
393
+ intentkit-0.6.1.dist-info/METADATA,sha256=-p9llZmm6JTAunT1u4PldG3e0jANGpjbKU9E-lsCrAI,7280
394
+ intentkit-0.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
395
+ intentkit-0.6.1.dist-info/licenses/LICENSE,sha256=Bln6DhK-LtcO4aXy-PBcdZv2f24MlJFm_qn222biJtE,1071
396
+ intentkit-0.6.1.dist-info/RECORD,,