solana-traderclaw 1.0.131 → 1.0.133

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.
@@ -18,6 +18,33 @@ function readRecoverySecretFromDisk() {
18
18
  return void 0;
19
19
  }
20
20
  }
21
+ function writeRefreshTokenToOpenclawAtomic(newToken) {
22
+ const p = getOpenclawConfigPath();
23
+ const dir = path.dirname(p);
24
+ let config = {};
25
+ if (fs.existsSync(p)) {
26
+ try {
27
+ config = JSON.parse(fs.readFileSync(p, "utf-8"));
28
+ } catch {
29
+ config = {};
30
+ }
31
+ }
32
+ if (!config.plugins || typeof config.plugins !== "object") config.plugins = {};
33
+ const plugins = config.plugins;
34
+ if (!plugins.entries || typeof plugins.entries !== "object") plugins.entries = {};
35
+ const entries = plugins.entries;
36
+ const prev = entries[PLUGIN_ID];
37
+ const entry = prev && typeof prev === "object" ? { ...prev } : { enabled: true, config: {} };
38
+ if (!entry.config || typeof entry.config !== "object") entry.config = {};
39
+ const cfg = entry.config;
40
+ cfg.refreshToken = newToken;
41
+ entry.enabled = true;
42
+ entries[PLUGIN_ID] = entry;
43
+ fs.mkdirSync(dir, { recursive: true });
44
+ const tmp = `${p}.${process.pid}.${Date.now()}.tmp`;
45
+ fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + "\n", "utf-8");
46
+ fs.renameSync(tmp, p);
47
+ }
21
48
  function writeRecoverySecretToOpenclawAtomic(newSecret) {
22
49
  const p = getOpenclawConfigPath();
23
50
  const dir = path.dirname(p);
@@ -49,5 +76,6 @@ function writeRecoverySecretToOpenclawAtomic(newSecret) {
49
76
  export {
50
77
  getOpenclawConfigPath,
51
78
  readRecoverySecretFromDisk,
79
+ writeRefreshTokenToOpenclawAtomic,
52
80
  writeRecoverySecretToOpenclawAtomic
53
81
  };
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import {
2
- readRecoverySecretFromDisk
3
- } from "./chunk-SBYHSJLU.js";
2
+ readRecoverySecretFromDisk,
3
+ writeRecoverySecretToOpenclawAtomic,
4
+ writeRefreshTokenToOpenclawAtomic
5
+ } from "./chunk-IAQC34O7.js";
4
6
  import {
5
7
  SessionManager
6
8
  } from "./chunk-6IS5XPDB.js";
@@ -995,7 +997,15 @@ var solanaTraderPlugin = {
995
997
  api.logger.info("[solana-trader] Persisted rotated recovery secret to session-tokens.json");
996
998
  } catch (err) {
997
999
  api.logger.warn(
998
- `[solana-trader] Failed to write rotated recovery secret: ${err instanceof Error ? err.message : String(err)}`
1000
+ `[solana-trader] Failed to write rotated recovery secret to sidecar: ${err instanceof Error ? err.message : String(err)}`
1001
+ );
1002
+ }
1003
+ try {
1004
+ writeRecoverySecretToOpenclawAtomic(newSecret);
1005
+ api.logger.info("[solana-trader] Persisted rotated recovery secret to openclaw.json");
1006
+ } catch (err) {
1007
+ api.logger.warn(
1008
+ `[solana-trader] Failed to write rotated recovery secret to openclaw.json: ${err instanceof Error ? err.message : String(err)}`
999
1009
  );
1000
1010
  }
1001
1011
  },
@@ -1020,6 +1030,14 @@ var solanaTraderPlugin = {
1020
1030
  `[solana-trader] Failed to persist session sidecar: ${err instanceof Error ? err.message : String(err)}`
1021
1031
  );
1022
1032
  }
1033
+ try {
1034
+ writeRefreshTokenToOpenclawAtomic(tokens.refreshToken);
1035
+ api.logger.info("[solana-trader] Persisted rotated refresh token to openclaw.json");
1036
+ } catch (err) {
1037
+ api.logger.warn(
1038
+ `[solana-trader] Failed to write rotated refresh token to openclaw.json: ${err instanceof Error ? err.message : String(err)}`
1039
+ );
1040
+ }
1023
1041
  },
1024
1042
  logger: {
1025
1043
  info: (msg) => api.logger.info(`[solana-trader] ${msg}`),
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  getOpenclawConfigPath,
3
3
  readRecoverySecretFromDisk,
4
- writeRecoverySecretToOpenclawAtomic
5
- } from "../chunk-SBYHSJLU.js";
4
+ writeRecoverySecretToOpenclawAtomic,
5
+ writeRefreshTokenToOpenclawAtomic
6
+ } from "../chunk-IAQC34O7.js";
6
7
  export {
7
8
  getOpenclawConfigPath,
8
9
  readRecoverySecretFromDisk,
9
- writeRecoverySecretToOpenclawAtomic
10
+ writeRecoverySecretToOpenclawAtomic,
11
+ writeRefreshTokenToOpenclawAtomic
10
12
  };
@@ -145,6 +145,118 @@
145
145
  }
146
146
  }
147
147
  },
148
+ "contracts": {
149
+ "tools": [
150
+ "solana_agent_sessions",
151
+ "solana_all_tokens_balance",
152
+ "solana_alpha_history",
153
+ "solana_alpha_signals",
154
+ "solana_alpha_sources",
155
+ "solana_alpha_submit",
156
+ "solana_alpha_subscribe",
157
+ "solana_alpha_unsubscribe",
158
+ "solana_bitquery_catalog",
159
+ "solana_bitquery_query",
160
+ "solana_bitquery_subscribe",
161
+ "solana_bitquery_subscription_reopen",
162
+ "solana_bitquery_subscriptions",
163
+ "solana_bitquery_templates",
164
+ "solana_bitquery_unsubscribe",
165
+ "solana_build_thesis",
166
+ "solana_candidate_delta",
167
+ "solana_candidate_get",
168
+ "solana_candidate_label_outcome",
169
+ "solana_candidate_write",
170
+ "solana_capital_status",
171
+ "solana_classify_deployer_risk",
172
+ "solana_compute_confidence",
173
+ "solana_compute_deployer_risk",
174
+ "solana_compute_freshness_decay",
175
+ "solana_compute_position_limits",
176
+ "solana_context_snapshot_read",
177
+ "solana_context_snapshot_write",
178
+ "solana_contradiction_check",
179
+ "solana_daily_log",
180
+ "solana_dataset_export",
181
+ "solana_decision_log",
182
+ "solana_deployer_trust_get",
183
+ "solana_deployer_trust_refresh",
184
+ "solana_entitlement_costs",
185
+ "solana_entitlement_current",
186
+ "solana_entitlement_plans",
187
+ "solana_entitlement_purchase",
188
+ "solana_entitlement_upgrade",
189
+ "solana_evaluation_report",
190
+ "solana_firehose_config",
191
+ "solana_firehose_status",
192
+ "solana_funding_instructions",
193
+ "solana_gateway_credentials_delete",
194
+ "solana_gateway_credentials_get",
195
+ "solana_gateway_credentials_set",
196
+ "solana_gateway_forward_probe",
197
+ "solana_history_export",
198
+ "solana_journal_summary",
199
+ "solana_killswitch_status",
200
+ "solana_market_regime",
201
+ "solana_memory_by_token",
202
+ "solana_memory_search",
203
+ "solana_memory_trim",
204
+ "solana_memory_write",
205
+ "solana_model_promote",
206
+ "solana_model_registry",
207
+ "solana_model_score_candidate",
208
+ "solana_pattern_store",
209
+ "solana_positions",
210
+ "solana_referral_profile",
211
+ "solana_referral_set_code",
212
+ "solana_replay_report",
213
+ "solana_replay_run",
214
+ "solana_risk_denials",
215
+ "solana_runtime_status",
216
+ "solana_scan",
217
+ "solana_scan_hot_pairs",
218
+ "solana_scan_launches",
219
+ "solana_scrub_untrusted_text",
220
+ "solana_source_trust_get",
221
+ "solana_source_trust_refresh",
222
+ "solana_startup_gate",
223
+ "solana_state_read",
224
+ "solana_state_save",
225
+ "solana_storage_status",
226
+ "solana_strategy_state",
227
+ "solana_strategy_update",
228
+ "solana_sweep_dead_tokens",
229
+ "solana_system_status",
230
+ "solana_team_bulletin_post",
231
+ "solana_team_bulletin_read",
232
+ "solana_token_flows",
233
+ "solana_token_holders",
234
+ "solana_token_liquidity",
235
+ "solana_token_risk",
236
+ "solana_token_snapshot",
237
+ "solana_token_socials",
238
+ "solana_trade",
239
+ "solana_trade_execute",
240
+ "solana_trade_precheck",
241
+ "solana_traderclaw_welcome",
242
+ "solana_trade_review",
243
+ "solana_trades",
244
+ "solana_wallet_create",
245
+ "solana_wallets",
246
+ "solana_wallet_token_balance",
247
+ "web_fetch_url",
248
+ "x_get_thread",
249
+ "x_post_tweet",
250
+ "x_read_mentions",
251
+ "x_reply_tweet",
252
+ "x_search_tweets",
253
+ "risk_management_get_default",
254
+ "risk_management_set_default",
255
+ "trade_size_limit_get",
256
+ "trade_size_limit_set",
257
+ "position_risk_management_update"
258
+ ]
259
+ },
148
260
  "uiHints": {
149
261
  "orchestratorUrl": {
150
262
  "label": "Orchestrator URL",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solana-traderclaw",
3
- "version": "1.0.131",
3
+ "version": "1.0.133",
4
4
  "description": "TraderClaw V1-Upgraded — Solana trading for OpenClaw with intelligence lab, tool envelopes, prompt scrubbing, read-only X social intel, and split skill docs",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",