@agentlayer.tech/wallet 0.1.100 → 0.1.101

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.
@@ -2,7 +2,7 @@
2
2
  "id": "agent-wallet",
3
3
  "name": "Agent Wallet",
4
4
  "description": "Official OpenClaw plugin bridge for the agent-wallet backends, including Solana, local BTC, and local EVM.",
5
- "version": "0.1.100",
5
+ "version": "0.1.101",
6
6
  "contracts": {
7
7
  "tools": [
8
8
  "agentlayer_autonomous_approve",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentlayertech/agent-wallet-plugin",
3
- "version": "0.1.100",
3
+ "version": "0.1.101",
4
4
  "description": "OpenClaw plugin bridge for the AgentLayer wallet runtime.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN ../../../LICENSE",
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.100
1
+ 0.1.101
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Keep in sync with package.json, pyproject.toml, and the npm installer version.
4
4
  # scripts/check_release_version.mjs enforces this on release.
5
- __version__ = "0.1.100"
5
+ __version__ = "0.1.101"
6
6
 
7
7
  __all__ = [
8
8
  "config",
@@ -430,7 +430,7 @@ async def get_signature_status(
430
430
  async def wait_for_confirmation(
431
431
  signature: str,
432
432
  rpc_url: str,
433
- timeout_seconds: float = 20.0,
433
+ timeout_seconds: float = 60.0,
434
434
  poll_interval_seconds: float = 1.0,
435
435
  ) -> dict[str, Any] | None:
436
436
  """Poll signature status until confirmed/finalized or timeout."""
@@ -13,6 +13,9 @@ from agent_wallet.config import resolve_btc_wallet_password, resolve_openclaw_ho
13
13
  from agent_wallet.wallet_layer.base import WalletBackendError
14
14
 
15
15
  LOCAL_WDK_BTC_HOSTS = {"127.0.0.1", "localhost", "::1"}
16
+ # Local wallet calls can decrypt the sealed vault and wait for upstream Bitcoin
17
+ # RPC. Keep their operation timeout aligned with the local EVM wallet client.
18
+ LOCAL_WDK_BTC_TIMEOUT_SECONDS = 60.0
16
19
 
17
20
 
18
21
  def _normalize_base_url(value: str) -> str:
@@ -99,7 +102,7 @@ class WdkBtcLocalClient:
99
102
 
100
103
  async def post(self, path: str, payload: dict[str, Any]) -> dict[str, Any]:
101
104
  async with httpx.AsyncClient(
102
- timeout=10.0,
105
+ timeout=LOCAL_WDK_BTC_TIMEOUT_SECONDS,
103
106
  headers=self._headers,
104
107
  follow_redirects=False,
105
108
  trust_env=False,
@@ -111,7 +114,7 @@ class WdkBtcLocalClient:
111
114
 
112
115
  async def get(self, path: str) -> dict[str, Any]:
113
116
  async with httpx.AsyncClient(
114
- timeout=10.0,
117
+ timeout=LOCAL_WDK_BTC_TIMEOUT_SECONDS,
115
118
  headers=self._headers,
116
119
  follow_redirects=False,
117
120
  trust_env=False,
@@ -121,7 +124,7 @@ class WdkBtcLocalClient:
121
124
 
122
125
  def post_sync(self, path: str, payload: dict[str, Any]) -> dict[str, Any]:
123
126
  with httpx.Client(
124
- timeout=10.0,
127
+ timeout=LOCAL_WDK_BTC_TIMEOUT_SECONDS,
125
128
  headers=self._headers,
126
129
  follow_redirects=False,
127
130
  trust_env=False,
@@ -133,7 +136,7 @@ class WdkBtcLocalClient:
133
136
 
134
137
  def get_sync(self, path: str) -> dict[str, Any]:
135
138
  with httpx.Client(
136
- timeout=10.0,
139
+ timeout=LOCAL_WDK_BTC_TIMEOUT_SECONDS,
137
140
  headers=self._headers,
138
141
  follow_redirects=False,
139
142
  trust_env=False,
@@ -13,6 +13,11 @@ from agent_wallet.config import resolve_evm_wallet_password, resolve_openclaw_ho
13
13
  from agent_wallet.wallet_layer.base import WalletBackendError
14
14
 
15
15
  LOCAL_WDK_EVM_HOSTS = {"127.0.0.1", "localhost", "::1"}
16
+ # The local service may decrypt the sealed vault and make several upstream RPC
17
+ # calls for a single wallet operation (for example, token metadata plus a gas
18
+ # quote). The global HTTP default is deliberately short for ordinary external
19
+ # providers, but it is too short for this local wallet boundary.
20
+ MIN_LOCAL_WDK_EVM_TIMEOUT_SECONDS = 60.0
16
21
  LONG_RUNNING_POST_PATHS = {
17
22
  "/v1/evm/aave/supply/send",
18
23
  "/v1/evm/aave/withdraw/send",
@@ -89,7 +94,7 @@ def _load_local_token() -> str:
89
94
 
90
95
  def _timeout_for_path(path: str) -> float:
91
96
  normalized = str(path or "").strip()
92
- base_timeout = float(settings.http_timeout)
97
+ base_timeout = max(float(settings.http_timeout), MIN_LOCAL_WDK_EVM_TIMEOUT_SECONDS)
93
98
  if normalized in LONG_RUNNING_POST_PATHS:
94
99
  return max(base_timeout, LONG_RUNNING_SEND_TIMEOUT_SECONDS)
95
100
  return base_timeout
@@ -288,7 +293,7 @@ class WdkEvmLocalClient:
288
293
  def list_wallets_sync(self) -> list[dict[str, Any]]:
289
294
  try:
290
295
  with httpx.Client(
291
- timeout=float(settings.http_timeout),
296
+ timeout=_timeout_for_path("/v1/evm/wallets"),
292
297
  headers=self._headers,
293
298
  follow_redirects=False,
294
299
  trust_env=False,
@@ -3470,7 +3470,7 @@ class SolanaWalletBackend(AgentWalletBackend):
3470
3470
  status = await solana_rpc.wait_for_confirmation(
3471
3471
  signature=signature,
3472
3472
  rpc_url=self.rpc_urls,
3473
- timeout_seconds=60.0 if source == "kamino" else 20.0,
3473
+ timeout_seconds=60.0,
3474
3474
  poll_interval_seconds=2.0 if source == "kamino" else 1.0,
3475
3475
  )
3476
3476
  confirmed = status is not None
@@ -2,7 +2,7 @@
2
2
  "id": "agent-wallet",
3
3
  "name": "Agent Wallet",
4
4
  "description": "Plugin-friendly wallet backend for OpenClaw agents with safe wallet tools and runtime instructions across Solana, local BTC, and local EVM.",
5
- "version": "0.1.100",
5
+ "version": "0.1.101",
6
6
  "skills": ["skills/wallet-operator"],
7
7
  "configSchema": {
8
8
  "type": "object",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "openclaw-agent-wallet"
7
- version = "0.1.100"
7
+ version = "0.1.101"
8
8
  description = "Plugin-friendly wallet backend for OpenClaw agents"
9
9
  requires-python = ">=3.10"
10
10
  dependencies = [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-wallet",
3
3
  "displayName": "Agent Wallet",
4
- "version": "0.1.100",
4
+ "version": "0.1.101",
5
5
  "description": "Claude Code bridge for the existing AgentLayer wallet runtime. Connects to Solana, Bitcoin, and EVM wallets without creating a new one.",
6
6
  "author": {
7
7
  "name": "AgentLayer"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-wallet",
3
- "version": "0.1.100",
3
+ "version": "0.1.101",
4
4
  "description": "Codex plugin bridge for the AgentLayer wallet runtime.",
5
5
  "author": {
6
6
  "name": "AgentLayer"
@@ -1004,14 +1004,23 @@ def _prewarm_resident_read_worker() -> None:
1004
1004
 
1005
1005
 
1006
1006
  def _approval_summary_for_preview(tool_name: str, preview_payload: dict[str, Any]) -> dict[str, Any]:
1007
- """Build the digest-bound confirmation summary the invoke subprocess will
1008
- mint an approval token from (in-process, replacing the old standalone
1009
- issue-approval subprocess round trip)."""
1007
+ """Build the confirmation summary the invoke subprocess mints a token from.
1008
+
1009
+ Only exact-preview tools validate ``_preview_digest`` in the wallet
1010
+ adapter. Adding that private binding to ordinary transfers and EVM swaps
1011
+ makes their approval token differ from the adapter's execution summary,
1012
+ causing a valid user confirmation to be rejected.
1013
+ """
1010
1014
  summary = preview_payload.get("confirmation_summary")
1011
1015
  if not isinstance(summary, dict):
1012
1016
  raise RuntimeError(f"No confirmation_summary available for {tool_name}.")
1013
1017
  summary_for_token = dict(summary)
1014
- summary_for_token["_preview_digest"] = _preview_digest(preview_payload)
1018
+ is_solana_swap_intent = (
1019
+ tool_name == "swap_solana_tokens"
1020
+ and str(preview_payload.get("mode") or "") == "intent_preview"
1021
+ )
1022
+ if tool_name in PREVIEW_BOUND_SWAP_TOOLS and not is_solana_swap_intent:
1023
+ summary_for_token["_preview_digest"] = _preview_digest(preview_payload)
1015
1024
  return summary_for_token
1016
1025
 
1017
1026
 
@@ -1,5 +1,5 @@
1
1
  name: agent-wallet
2
- version: 0.1.100
2
+ version: 0.1.101
3
3
  description: Thin Hermes Agent bridge to the existing AgentLayer/OpenClaw wallet backend
4
4
  provides_tools:
5
5
  - agent_wallet_tools
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentlayer.tech/wallet",
3
- "version": "0.1.100",
3
+ "version": "0.1.101",
4
4
  "description": "Universal AgentLayer wallet installer for OpenClaw, Codex, Claude Code, and Hermes.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wdk-btc-wallet",
3
- "version": "0.1.100",
3
+ "version": "0.1.101",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Separate BTC-only wallet service built on Tether WDK.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wdk-evm-wallet",
3
- "version": "0.1.100",
3
+ "version": "0.1.101",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Separate EVM wallet service built on Tether WDK.",