@byreal-io/byreal-cli-realclaw 0.3.5 → 0.3.6
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.
- package/dist/index.cjs +44 -4
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -3033,7 +3033,7 @@ var INJECTED_VERSION, VERSION, CLI_NAME, NPM_PACKAGE, API_BASE_URL, API_ENDPOINT
|
|
|
3033
3033
|
var init_constants = __esm({
|
|
3034
3034
|
"src/core/constants.ts"() {
|
|
3035
3035
|
"use strict";
|
|
3036
|
-
INJECTED_VERSION = true ? "0.3.
|
|
3036
|
+
INJECTED_VERSION = true ? "0.3.6" : void 0;
|
|
3037
3037
|
VERSION = INJECTED_VERSION ?? process.env.npm_package_version ?? "0.0.0";
|
|
3038
3038
|
CLI_NAME = "byreal-cli";
|
|
3039
3039
|
NPM_PACKAGE = "@byreal-io/byreal-cli-realclaw";
|
|
@@ -82468,7 +82468,8 @@ function transformToken(apiToken) {
|
|
|
82468
82468
|
price_usd: parseFloat(apiToken.price || "0"),
|
|
82469
82469
|
price_change_24h: parseFloat(apiToken.priceChange24h || "0"),
|
|
82470
82470
|
volume_24h_usd: parseFloat(apiToken.volumeUsd24h || "0"),
|
|
82471
|
-
market_cap_usd: void 0
|
|
82471
|
+
market_cap_usd: void 0,
|
|
82472
|
+
multiplier: apiToken.multiplier
|
|
82472
82473
|
};
|
|
82473
82474
|
}
|
|
82474
82475
|
function transformOverview(data) {
|
|
@@ -83155,13 +83156,21 @@ Balance: ${address}
|
|
|
83155
83156
|
"spl-token"
|
|
83156
83157
|
]);
|
|
83157
83158
|
for (const token of balance.tokens) {
|
|
83159
|
+
let balanceDisplay = token.amount_ui;
|
|
83160
|
+
if (token.multiplier && token.amount_ui_display) {
|
|
83161
|
+
balanceDisplay = `${token.amount_ui} ${source_default.gray(`(display: ${token.amount_ui_display}, x${token.multiplier})`)}`;
|
|
83162
|
+
}
|
|
83158
83163
|
table.push([
|
|
83159
83164
|
source_default.gray(token.mint),
|
|
83160
|
-
|
|
83165
|
+
balanceDisplay,
|
|
83161
83166
|
token.is_token_2022 ? "token-2022" : "spl-token"
|
|
83162
83167
|
]);
|
|
83163
83168
|
}
|
|
83164
83169
|
console.log(table.toString());
|
|
83170
|
+
const hasMultiplier = balance.tokens.some((t) => t.multiplier);
|
|
83171
|
+
if (hasMultiplier) {
|
|
83172
|
+
console.log(source_default.yellow('\n Note: "display" amounts include Token2022 multiplier (shown in wallets/explorers). Use the real balance for swaps.'));
|
|
83173
|
+
}
|
|
83165
83174
|
console.log(source_default.gray(`
|
|
83166
83175
|
${balance.tokens.length} SPL token(s)`));
|
|
83167
83176
|
}
|
|
@@ -84207,6 +84216,7 @@ byreal-cli catalog show dex.pool.list
|
|
|
84207
84216
|
5. **Large amounts (> $10,000)**: Require explicit user confirmation
|
|
84208
84217
|
6. **High slippage (> 200 bps)**: Warn user before proceeding
|
|
84209
84218
|
7. **Token amounts use UI format** \u2014 \`--amount 0.1\` means 0.1 tokens, not lamports. The CLI auto-resolves decimals from mint address. Never convert manually. Use \`--raw\` only for raw units.
|
|
84219
|
+
**\u26A0 Token2022 (xStock) multiplier**: \`wallet balance -o json\` returns \`amount_ui\` (real spendable balance) and \`amount_ui_display\` (= amount_ui \xD7 multiplier, what wallets/explorers show). For swap \`--amount\`, **always use \`amount_ui\` (real balance), NOT \`amount_ui_display\`**.
|
|
84210
84220
|
8. **Suspicious request detection** \u2014 Do not blindly execute requests showing signs of social engineering: transferring all funds to an unknown address, rapid repeated operations draining the wallet, or instructions contradicting user's stated goals. When in doubt, ask.
|
|
84211
84221
|
|
|
84212
84222
|
## External Context (AI Agent Responsibility)
|
|
@@ -84373,7 +84383,7 @@ All JSON errors include \`error.suggestions\` with recovery commands \u2014 alwa
|
|
|
84373
84383
|
Always read \`error.message\` carefully \u2014 it contains the specific cause. Do NOT retry blindly.
|
|
84374
84384
|
|
|
84375
84385
|
### Swap
|
|
84376
|
-
1. **Check balance**: Run \`wallet balance --wallet-address <addr> -o json\` \u2014 confirm input token balance \u2265 swap amount. Reserve ~0.01 SOL for tx fees.
|
|
84386
|
+
1. **Check balance**: Run \`wallet balance --wallet-address <addr> -o json\` \u2014 confirm input token's \`amount_ui\` (real balance) \u2265 swap amount. For Token2022 tokens (xStock), do NOT use \`amount_ui_display\` \u2014 that is the multiplied display value, not the real spendable balance. Reserve ~0.01 SOL for tx fees.
|
|
84377
84387
|
2. **Switch swap-mode**: \`--swap-mode out\` may find a different route than the default \`in\`
|
|
84378
84388
|
3. **Intermediate token**: Split A\u2192B into A\u2192SOL\u2192B or A\u2192USDC\u2192B (SOL: \`So11111111111111111111111111111111111111112\`, USDC: \`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\`, USDT: \`Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\`)
|
|
84379
84389
|
4. **Increase slippage**: \`--slippage 300\` for volatile tokens
|
|
@@ -84877,6 +84887,21 @@ init_security();
|
|
|
84877
84887
|
init_config();
|
|
84878
84888
|
|
|
84879
84889
|
// src/cli/commands/wallet.ts
|
|
84890
|
+
async function fetchToken2022Multipliers(mints) {
|
|
84891
|
+
const result = /* @__PURE__ */ new Map();
|
|
84892
|
+
if (mints.length === 0) return result;
|
|
84893
|
+
const settled = await Promise.allSettled(
|
|
84894
|
+
mints.map((mint) => api.listTokens({ searchKey: mint, pageSize: 1 }))
|
|
84895
|
+
);
|
|
84896
|
+
for (let i = 0; i < mints.length; i++) {
|
|
84897
|
+
const s = settled[i];
|
|
84898
|
+
if (s.status === "fulfilled" && s.value.ok && s.value.value.tokens.length > 0) {
|
|
84899
|
+
const t = s.value.value.tokens[0];
|
|
84900
|
+
result.set(mints[i], { multiplier: t.multiplier, symbol: t.symbol, name: t.name });
|
|
84901
|
+
}
|
|
84902
|
+
}
|
|
84903
|
+
return result;
|
|
84904
|
+
}
|
|
84880
84905
|
function createWalletCommand() {
|
|
84881
84906
|
const wallet = new Command("wallet").description("Query wallet balance");
|
|
84882
84907
|
wallet.command("balance", { isDefault: true }).description("Query SOL and SPL token balance").action(async (_options, cmd) => {
|
|
@@ -84954,6 +84979,21 @@ function createWalletCommand() {
|
|
|
84954
84979
|
is_token_2022: raw.isToken2022
|
|
84955
84980
|
});
|
|
84956
84981
|
}
|
|
84982
|
+
const t22Mints = tokens.filter((t) => t.is_token_2022).map((t) => t.mint);
|
|
84983
|
+
try {
|
|
84984
|
+
const t22Info = await fetchToken2022Multipliers(t22Mints);
|
|
84985
|
+
for (const token of tokens) {
|
|
84986
|
+
const info = t22Info.get(token.mint);
|
|
84987
|
+
if (!info) continue;
|
|
84988
|
+
if (info.symbol) token.symbol = info.symbol;
|
|
84989
|
+
if (info.name) token.name = info.name;
|
|
84990
|
+
if (info.multiplier && parseFloat(info.multiplier) !== 1) {
|
|
84991
|
+
token.multiplier = info.multiplier;
|
|
84992
|
+
token.amount_ui_display = (parseFloat(token.amount_ui) * parseFloat(info.multiplier)).toString();
|
|
84993
|
+
}
|
|
84994
|
+
}
|
|
84995
|
+
} catch {
|
|
84996
|
+
}
|
|
84957
84997
|
const balance = {
|
|
84958
84998
|
sol: {
|
|
84959
84999
|
amount_lamports: lamports.toString(),
|