fibx 0.4.2 → 0.5.0

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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -30
  3. package/dist/commands/auth/import.d.ts.map +1 -1
  4. package/dist/commands/auth/import.js +15 -15
  5. package/dist/commands/auth/import.js.map +1 -1
  6. package/dist/commands/auth/login.d.ts.map +1 -1
  7. package/dist/commands/auth/login.js +9 -11
  8. package/dist/commands/auth/login.js.map +1 -1
  9. package/dist/commands/auth/logout.d.ts.map +1 -1
  10. package/dist/commands/auth/logout.js +3 -11
  11. package/dist/commands/auth/logout.js.map +1 -1
  12. package/dist/commands/auth/verify.d.ts.map +1 -1
  13. package/dist/commands/auth/verify.js +10 -9
  14. package/dist/commands/auth/verify.js.map +1 -1
  15. package/dist/commands/chain/transaction.d.ts.map +1 -1
  16. package/dist/commands/chain/transaction.js +13 -13
  17. package/dist/commands/chain/transaction.js.map +1 -1
  18. package/dist/commands/config/index.d.ts.map +1 -1
  19. package/dist/commands/config/index.js +40 -8
  20. package/dist/commands/config/index.js.map +1 -1
  21. package/dist/commands/defi/aave.d.ts +1 -0
  22. package/dist/commands/defi/aave.d.ts.map +1 -1
  23. package/dist/commands/defi/aave.js +105 -40
  24. package/dist/commands/defi/aave.js.map +1 -1
  25. package/dist/commands/portfolio/index.d.ts +3 -0
  26. package/dist/commands/portfolio/index.d.ts.map +1 -0
  27. package/dist/commands/portfolio/index.js +64 -0
  28. package/dist/commands/portfolio/index.js.map +1 -0
  29. package/dist/commands/trade/status.d.ts.map +1 -1
  30. package/dist/commands/trade/status.js +17 -19
  31. package/dist/commands/trade/status.js.map +1 -1
  32. package/dist/commands/trade/swap.d.ts +1 -0
  33. package/dist/commands/trade/swap.d.ts.map +1 -1
  34. package/dist/commands/trade/swap.js +156 -101
  35. package/dist/commands/trade/swap.js.map +1 -1
  36. package/dist/commands/wallet/address.d.ts.map +1 -1
  37. package/dist/commands/wallet/address.js +7 -9
  38. package/dist/commands/wallet/address.js.map +1 -1
  39. package/dist/commands/wallet/balance.d.ts.map +1 -1
  40. package/dist/commands/wallet/balance.js +42 -22
  41. package/dist/commands/wallet/balance.js.map +1 -1
  42. package/dist/commands/wallet/list.d.ts +1 -1
  43. package/dist/commands/wallet/list.d.ts.map +1 -1
  44. package/dist/commands/wallet/list.js +7 -16
  45. package/dist/commands/wallet/list.js.map +1 -1
  46. package/dist/commands/wallet/send.d.ts +5 -1
  47. package/dist/commands/wallet/send.d.ts.map +1 -1
  48. package/dist/commands/wallet/send.js +66 -24
  49. package/dist/commands/wallet/send.js.map +1 -1
  50. package/dist/index.js +185 -22
  51. package/dist/index.js.map +1 -1
  52. package/dist/lib/brand.d.ts +5 -0
  53. package/dist/lib/brand.d.ts.map +1 -0
  54. package/dist/lib/brand.js +15 -0
  55. package/dist/lib/brand.js.map +1 -0
  56. package/dist/lib/cli-helpers.d.ts +10 -0
  57. package/dist/lib/cli-helpers.d.ts.map +1 -0
  58. package/dist/lib/cli-helpers.js +20 -0
  59. package/dist/lib/cli-helpers.js.map +1 -0
  60. package/dist/lib/concurrency.d.ts +8 -0
  61. package/dist/lib/concurrency.d.ts.map +1 -0
  62. package/dist/lib/concurrency.js +26 -0
  63. package/dist/lib/concurrency.js.map +1 -0
  64. package/dist/lib/config.d.ts.map +1 -1
  65. package/dist/lib/config.js +1 -2
  66. package/dist/lib/config.js.map +1 -1
  67. package/dist/lib/errors.d.ts +1 -0
  68. package/dist/lib/errors.d.ts.map +1 -1
  69. package/dist/lib/errors.js +1 -0
  70. package/dist/lib/errors.js.map +1 -1
  71. package/dist/lib/format.d.ts +26 -3
  72. package/dist/lib/format.d.ts.map +1 -1
  73. package/dist/lib/format.js +131 -31
  74. package/dist/lib/format.js.map +1 -1
  75. package/dist/lib/parse-evm-error.d.ts +6 -0
  76. package/dist/lib/parse-evm-error.d.ts.map +1 -0
  77. package/dist/lib/parse-evm-error.js +48 -0
  78. package/dist/lib/parse-evm-error.js.map +1 -0
  79. package/dist/lib/parseAmount.d.ts.map +1 -1
  80. package/dist/lib/parseAmount.js +0 -1
  81. package/dist/lib/parseAmount.js.map +1 -1
  82. package/dist/lib/retry.d.ts +20 -0
  83. package/dist/lib/retry.d.ts.map +1 -0
  84. package/dist/lib/retry.js +36 -0
  85. package/dist/lib/retry.js.map +1 -0
  86. package/dist/mcp/handlers.d.ts +7 -1
  87. package/dist/mcp/handlers.d.ts.map +1 -1
  88. package/dist/mcp/handlers.js +86 -18
  89. package/dist/mcp/handlers.js.map +1 -1
  90. package/dist/mcp/server.d.ts.map +1 -1
  91. package/dist/mcp/server.js +4 -3
  92. package/dist/mcp/server.js.map +1 -1
  93. package/dist/mcp/tools.d.ts.map +1 -1
  94. package/dist/mcp/tools.js +16 -3
  95. package/dist/mcp/tools.js.map +1 -1
  96. package/dist/services/auth/session.d.ts.map +1 -1
  97. package/dist/services/auth/session.js +22 -1
  98. package/dist/services/auth/session.js.map +1 -1
  99. package/dist/services/chain/client.d.ts +9376 -241
  100. package/dist/services/chain/client.d.ts.map +1 -1
  101. package/dist/services/chain/client.js +0 -1
  102. package/dist/services/chain/client.js.map +1 -1
  103. package/dist/services/chain/constants.d.ts.map +1 -1
  104. package/dist/services/chain/constants.js +1 -2
  105. package/dist/services/chain/constants.js.map +1 -1
  106. package/dist/services/chain/erc20.d.ts +5 -183
  107. package/dist/services/chain/erc20.d.ts.map +1 -1
  108. package/dist/services/chain/erc20.js +15 -128
  109. package/dist/services/chain/erc20.js.map +1 -1
  110. package/dist/services/chain/nonceManager.d.ts.map +1 -1
  111. package/dist/services/chain/nonceManager.js +0 -3
  112. package/dist/services/chain/nonceManager.js.map +1 -1
  113. package/dist/services/config/config.d.ts +2 -0
  114. package/dist/services/config/config.d.ts.map +1 -1
  115. package/dist/services/config/config.js +9 -1
  116. package/dist/services/config/config.js.map +1 -1
  117. package/dist/services/defi/aave.d.ts +12 -10
  118. package/dist/services/defi/aave.d.ts.map +1 -1
  119. package/dist/services/defi/aave.js +83 -46
  120. package/dist/services/defi/aave.js.map +1 -1
  121. package/dist/services/defi/abi/aave.d.ts +99 -0
  122. package/dist/services/defi/abi/aave.d.ts.map +1 -1
  123. package/dist/services/defi/abi/aave.js +53 -0
  124. package/dist/services/defi/abi/aave.js.map +1 -1
  125. package/dist/services/defi/constants.d.ts +0 -4
  126. package/dist/services/defi/constants.d.ts.map +1 -1
  127. package/dist/services/defi/constants.js +1 -6
  128. package/dist/services/defi/constants.js.map +1 -1
  129. package/dist/services/fibrous/balances.d.ts.map +1 -1
  130. package/dist/services/fibrous/balances.js +12 -9
  131. package/dist/services/fibrous/balances.js.map +1 -1
  132. package/dist/services/fibrous/route.d.ts.map +1 -1
  133. package/dist/services/fibrous/route.js +17 -9
  134. package/dist/services/fibrous/route.js.map +1 -1
  135. package/dist/services/fibrous/tokens.d.ts +1 -0
  136. package/dist/services/fibrous/tokens.d.ts.map +1 -1
  137. package/dist/services/fibrous/tokens.js +7 -4
  138. package/dist/services/fibrous/tokens.js.map +1 -1
  139. package/dist/services/portfolio/portfolio.d.ts +28 -0
  140. package/dist/services/portfolio/portfolio.d.ts.map +1 -0
  141. package/dist/services/portfolio/portfolio.js +116 -0
  142. package/dist/services/portfolio/portfolio.js.map +1 -0
  143. package/dist/services/privy/account.d.ts +16 -14
  144. package/dist/services/privy/account.d.ts.map +1 -1
  145. package/dist/services/privy/account.js +6 -16
  146. package/dist/services/privy/account.js.map +1 -1
  147. package/package.json +9 -9
@@ -1,3 +1,4 @@
1
+ import { formatUnits } from "viem";
1
2
  import { requireSession } from "../../services/auth/session.js";
2
3
  import { getWalletClient, getPublicClient } from "../../services/chain/client.js";
3
4
  import { getChainConfig } from "../../services/chain/constants.js";
@@ -5,8 +6,9 @@ import { ERC20_ABI } from "../../services/chain/erc20.js";
5
6
  import { resolveToken } from "../../services/fibrous/tokens.js";
6
7
  import { validateAddress, validateAmount } from "../../lib/validation.js";
7
8
  import { parseAmount } from "../../lib/parseAmount.js";
8
- import { outputResult, outputError, withSpinner } from "../../lib/format.js";
9
+ import { createSpinner, outputResult, formatError, } from "../../lib/format.js";
9
10
  export async function sendCommand(amount, recipient, tokenSymbol, opts) {
11
+ const spinner = createSpinner("Preparing transfer...").start();
10
12
  try {
11
13
  validateAmount(amount);
12
14
  validateAddress(recipient);
@@ -23,51 +25,91 @@ export async function sendCommand(amount, recipient, tokenSymbol, opts) {
23
25
  const resolvedSymbol = tokenSymbol || chain.nativeSymbol;
24
26
  if (isNative) {
25
27
  amountBigInt = parseAmount(amount, 18);
26
- txHash = await withSpinner(`Sending ${amount} ${resolvedSymbol} on ${chain.name}...`, async () => {
27
- // Simulate ETH send (estimateGas)
28
- try {
29
- await publicClient.estimateGas({
30
- account: wallet,
31
- to: recipient,
32
- value: amountBigInt,
33
- data: undefined,
34
- });
35
- }
36
- catch (error) {
37
- throw new Error(`Simulation failed: ${error instanceof Error ? error.message : String(error)}`);
38
- }
39
- return walletClient.sendTransaction({
28
+ spinner.text = `Sending ${amount} ${resolvedSymbol} on ${chain.name}...`;
29
+ try {
30
+ const gasEstimate = await publicClient.estimateGas({
31
+ account: wallet,
40
32
  to: recipient,
41
33
  value: amountBigInt,
42
34
  data: undefined,
43
35
  });
44
- }, opts);
36
+ if (opts.simulate) {
37
+ const gasPrice = await publicClient.getGasPrice();
38
+ const feeWei = gasEstimate * gasPrice;
39
+ const feeEth = formatUnits(feeWei, 18);
40
+ spinner.succeed("Simulation complete");
41
+ outputResult({
42
+ mode: "SIMULATION (no TX sent)",
43
+ amount: `${amount} ${resolvedSymbol}`,
44
+ recipient,
45
+ estimatedGas: `${feeEth} ${chain.nativeSymbol}`,
46
+ chain: chain.name,
47
+ }, opts);
48
+ return;
49
+ }
50
+ }
51
+ catch (error) {
52
+ spinner.fail("Simulation failed");
53
+ throw new Error(`Simulation failed: ${error instanceof Error ? error.message : String(error)}`);
54
+ }
55
+ txHash = await walletClient.sendTransaction({
56
+ to: recipient,
57
+ value: amountBigInt,
58
+ data: undefined,
59
+ });
45
60
  }
46
61
  else {
62
+ spinner.text = `Resolving ${tokenSymbol}...`;
47
63
  const token = await resolveToken(tokenSymbol, chain);
48
64
  amountBigInt = parseAmount(amount, token.decimals);
49
- txHash = await withSpinner(`Sending ${amount} ${token.symbol} on ${chain.name}...`, async () => {
50
- // Simulate ERC20 Transfer
51
- const { request } = await publicClient.simulateContract({
65
+ spinner.text = `Sending ${amount} ${token.symbol} on ${chain.name}...`;
66
+ const { request } = await publicClient.simulateContract({
67
+ address: token.address,
68
+ abi: ERC20_ABI,
69
+ functionName: "transfer",
70
+ args: [recipient, amountBigInt],
71
+ account: wallet,
72
+ });
73
+ if (opts.simulate) {
74
+ const gasPrice = await publicClient.getGasPrice();
75
+ const gasEstimate = await publicClient.estimateContractGas({
52
76
  address: token.address,
53
77
  abi: ERC20_ABI,
54
78
  functionName: "transfer",
55
79
  args: [recipient, amountBigInt],
56
80
  account: wallet,
57
81
  });
58
- return walletClient.writeContract(request);
59
- }, opts);
82
+ const feeWei = gasEstimate * gasPrice;
83
+ const feeEth = formatUnits(feeWei, 18);
84
+ spinner.succeed("Simulation complete");
85
+ outputResult({
86
+ mode: "SIMULATION (no TX sent)",
87
+ amount: `${amount} ${token.symbol}`,
88
+ recipient,
89
+ estimatedGas: `${feeEth} ${chain.nativeSymbol}`,
90
+ chain: chain.name,
91
+ }, opts);
92
+ return;
93
+ }
94
+ txHash = await walletClient.writeContract(request);
60
95
  }
96
+ spinner.succeed("Transfer confirmed");
97
+ const explorerLink = chain.viemChain.blockExplorers?.default.url
98
+ ? `${chain.viemChain.blockExplorers.default.url}/tx/${txHash}`
99
+ : undefined;
61
100
  outputResult({
62
- txHash,
63
101
  amount,
64
102
  recipient,
65
- token: isNative ? resolvedSymbol : resolvedSymbol.toUpperCase(),
103
+ token: resolvedSymbol,
104
+ txHash,
105
+ ...(explorerLink ? { explorer: explorerLink } : {}),
66
106
  chain: chain.name,
67
107
  }, opts);
68
108
  }
69
109
  catch (error) {
70
- outputError(error, opts);
110
+ spinner.fail("Transfer failed");
111
+ console.error(formatError(error));
112
+ process.exitCode = 1;
71
113
  }
72
114
  }
73
115
  //# sourceMappingURL=send.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/wallet/send.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { createRequire } from "node:module";
3
3
  import { Command } from "commander";
4
4
  import chalk from "chalk";
5
5
  import { outputError } from "./lib/format.js";
6
+ import { BLUE, MINT, LOGO_ROW_COLORS } from "./lib/brand.js";
6
7
  import { statusCommand } from "./commands/trade/status.js";
7
8
  import { authLoginCommand } from "./commands/auth/login.js";
8
9
  import { authVerifyCommand } from "./commands/auth/verify.js";
@@ -17,28 +18,143 @@ import { registerConfigCommands } from "./commands/config/index.js";
17
18
  import { logoutCommand } from "./commands/auth/logout.js";
18
19
  const require = createRequire(import.meta.url);
19
20
  const { version } = require("../package.json");
20
- const program = new Command();
21
- const banner = `
22
- ${chalk.hex("#11B2BA").bold(" _____ _ _ ")}
23
- ${chalk.hex("#11B2BA").bold(" | ___(_) |____ __")}
24
- ${chalk.hex("#11B2BA").bold(" | |_ | | '_ \\ \\/ /")}
25
- ${chalk.hex("#11B2BA").bold(" | _| | | |_) > < ")}
26
- ${chalk.hex("#11B2BA").bold(" |_| |_|_.__/_/\\_\\")}
21
+ process.on("SIGINT", () => process.exit(0));
22
+ process.on("SIGTERM", () => process.exit(0));
23
+ // ── ASCII Logo ───────────────────────────────────────────────────────
24
+ const LOGO_LINES = [
25
+ " ███████╗██╗██████╗ ██╗ ██╗",
26
+ " ██╔════╝██║██╔══██╗╚██╗██╔╝",
27
+ " █████╗ ██║██████╔╝ ╚███╔╝ ",
28
+ " ██╔══╝ ██║██╔══██╗ ██╔██╗ ",
29
+ " ██║ ██║██████╔╝██╔╝ ██╗",
30
+ " ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝",
31
+ ];
32
+ const coloredLogo = LOGO_LINES.map((line, i) => chalk.bold.hex(LOGO_ROW_COLORS[i] ?? MINT)(line)).join("\n");
33
+ const tagline = chalk.dim("v") +
34
+ chalk.hex(BLUE).bold(version) +
35
+ chalk.dim(" · ") +
36
+ chalk.white("Multi-Chain DeFi CLI + MCP Server");
37
+ const banner = `\n${coloredLogo}\n\n${tagline}\n`;
38
+ // ── Quick Start Footer ───────────────────────────────────────────────
39
+ const dim = chalk.dim.bind(chalk);
40
+ const white = chalk.white.bind(chalk);
41
+ const footer = `
42
+ ${chalk.bold.hex(MINT)("Quick Start")}
43
+
44
+ ${dim("$")} ${white("fibx auth login <email>")} ${dim("# Sign in with Privy OTP")}
45
+ ${dim("$")} ${white("fibx trade 0.1 ETH USDC")} ${dim("# Best-price swap via Fibrous")}
46
+ ${dim("$")} ${white("fibx balance")} ${dim("# View all token balances")}
47
+ ${dim("$")} ${white("fibx aave supply 1 ETH")} ${dim("# Supply to Aave V3")}
48
+ ${dim("$")} ${white("fibx portfolio")} ${dim("# Cross-chain portfolio")}
49
+
50
+ ${dim("Run")} ${white("fibx <command> --help")} ${dim("for detailed flags and examples.")}
51
+ ${dim("Docs →")} ${chalk.hex(BLUE).underline("https://github.com/ahmetenesdur/fibx")}
27
52
  `;
53
+ // ── Command Groups ───────────────────────────────────────────────────
54
+ const COMMAND_GROUPS = {
55
+ Authentication: ["auth"],
56
+ Wallet: ["address", "balance", "wallets", "send"],
57
+ Trading: ["trade", "portfolio"],
58
+ DeFi: ["aave"],
59
+ System: ["status", "tx-status", "config", "mcp-start", "help"],
60
+ };
61
+ // ── Program Setup ────────────────────────────────────────────────────
62
+ const program = new Command();
28
63
  program
29
64
  .name("fibx")
30
- .description("A powerful CLI for DeFi operations across Base, Citrea, HyperEVM, and Monad. Powered by Fibrous.")
31
- .version(version);
32
- program.addHelpText("beforeAll", banner);
65
+ .description("Multi-chain DeFi CLI + MCP Server. Powered by Fibrous.")
66
+ .version(version)
67
+ .showHelpAfterError()
68
+ .addHelpText("beforeAll", banner);
69
+ program.configureHelp({
70
+ formatHelp(cmd, helper) {
71
+ if (cmd.name() !== "fibx") {
72
+ // Sub-command pages: clean styled layout
73
+ const lines = [];
74
+ const width = helper.padWidth(cmd, helper);
75
+ const usage = helper.commandUsage(cmd);
76
+ if (usage)
77
+ lines.push(`${chalk.bold("Usage:")} ${usage}`, "");
78
+ const desc = helper.commandDescription(cmd);
79
+ if (desc)
80
+ lines.push(desc, "");
81
+ const args = helper.visibleArguments(cmd);
82
+ if (args.length) {
83
+ lines.push(chalk.bold("Arguments:"));
84
+ for (const a of args) {
85
+ lines.push(` ${chalk.white(helper.argumentTerm(a).padEnd(width))} ${chalk.dim(helper.argumentDescription(a))}`);
86
+ }
87
+ lines.push("");
88
+ }
89
+ const opts = helper.visibleOptions(cmd);
90
+ if (opts.length) {
91
+ lines.push(chalk.bold("Options:"));
92
+ for (const o of opts) {
93
+ lines.push(` ${chalk.white(helper.optionTerm(o).padEnd(width))} ${chalk.dim(helper.optionDescription(o))}`);
94
+ }
95
+ lines.push("");
96
+ }
97
+ const subs = helper.visibleCommands(cmd);
98
+ if (subs.length) {
99
+ lines.push(chalk.bold("Commands:"));
100
+ for (const s of subs) {
101
+ lines.push(` ${chalk.white(helper.subcommandTerm(s).padEnd(width))} ${chalk.dim(helper.subcommandDescription(s))}`);
102
+ }
103
+ lines.push("");
104
+ }
105
+ return lines.join("\n");
106
+ }
107
+ // Root command: grouped layout + Quick Start
108
+ const lines = [];
109
+ const width = helper.padWidth(cmd, helper);
110
+ lines.push(`${chalk.bold("Usage:")} fibx ${chalk.dim("[command]")} ${chalk.dim("[options]")}`, "");
111
+ const opts = helper.visibleOptions(cmd);
112
+ if (opts.length) {
113
+ lines.push(chalk.bold("Options:"));
114
+ for (const o of opts) {
115
+ lines.push(` ${chalk.hex(BLUE)(helper.optionTerm(o).padEnd(width))} ${chalk.dim(helper.optionDescription(o))}`);
116
+ }
117
+ lines.push("");
118
+ }
119
+ lines.push(chalk.bold("Commands:"));
120
+ const allCmds = helper.visibleCommands(cmd);
121
+ const cmdMap = new Map(allCmds.map((c) => [c.name(), c]));
122
+ const rendered = new Set();
123
+ for (const [groupLabel, cmdNames] of Object.entries(COMMAND_GROUPS)) {
124
+ const groupCmds = cmdNames
125
+ .map((n) => cmdMap.get(n))
126
+ .filter((c) => c !== undefined);
127
+ if (groupCmds.length === 0)
128
+ continue;
129
+ lines.push(`\n ${chalk.bold.hex(BLUE)(groupLabel)}`);
130
+ for (const c of groupCmds) {
131
+ lines.push(` ${chalk.white(helper.subcommandTerm(c).padEnd(width))} ${chalk.dim(helper.subcommandDescription(c))}`);
132
+ rendered.add(c.name());
133
+ }
134
+ }
135
+ // Catch-all for commands not listed in COMMAND_GROUPS
136
+ const ungrouped = allCmds.filter((c) => !rendered.has(c.name()));
137
+ if (ungrouped.length) {
138
+ lines.push(`\n ${chalk.bold("Other")}`);
139
+ for (const c of ungrouped) {
140
+ lines.push(` ${chalk.white(helper.subcommandTerm(c).padEnd(width))} ${chalk.dim(helper.subcommandDescription(c))}`);
141
+ }
142
+ }
143
+ lines.push("", footer);
144
+ return lines.join("\n");
145
+ },
146
+ });
33
147
  registerConfigCommands(program);
34
148
  program
35
149
  .option("-c, --chain <chain>", "Chain to use (base, citrea, hyperevm, monad)", "base")
36
150
  .option("--json", "Output results as JSON", false)
37
151
  .showHelpAfterError();
152
+ // ── Auth Commands ────────────────────────────────────────────────────
38
153
  const auth = program.command("auth").description("Authentication commands");
39
154
  auth.command("login")
40
155
  .description("Initiate email OTP login via Privy")
41
156
  .argument("<email>", "Email address for OTP login")
157
+ .addHelpText("after", "\nExamples:\n $ fibx auth login user@example.com")
42
158
  .action(async (email, _opts, cmd) => {
43
159
  const globalOpts = cmd.parent.parent.opts();
44
160
  await authLoginCommand(email, { json: globalOpts.json });
@@ -47,21 +163,25 @@ auth.command("verify")
47
163
  .description("Verify OTP code and create wallet session")
48
164
  .argument("<email>", "Email used for login")
49
165
  .argument("<code>", "OTP code from email")
166
+ .addHelpText("after", "\nExamples:\n $ fibx auth verify user@example.com 123456")
50
167
  .action(async (email, code, _opts, cmd) => {
51
168
  const globalOpts = cmd.parent.parent.opts();
52
169
  await authVerifyCommand(email, code, { json: globalOpts.json });
53
170
  });
54
171
  auth.command("import")
55
172
  .description("Import a private key for local authentication")
173
+ .addHelpText("after", "\nExamples:\n $ fibx auth import")
56
174
  .action(async (_opts, cmd) => {
57
175
  const globalOpts = cmd.parent.parent.opts();
58
176
  const { authImportCommand } = await import("./commands/auth/import.js");
59
177
  await authImportCommand({ json: globalOpts.json });
60
178
  });
61
179
  auth.addCommand(logoutCommand);
180
+ // ── System Commands ──────────────────────────────────────────────────
62
181
  program
63
182
  .command("status")
64
183
  .description("Check auth status and Fibrous health")
184
+ .addHelpText("after", "\nExamples:\n $ fibx status\n $ fibx status --chain monad")
65
185
  .action(async (_opts, cmd) => {
66
186
  const globalOpts = cmd.parent.opts();
67
187
  await statusCommand({ ...globalOpts, json: globalOpts.json });
@@ -70,16 +190,19 @@ program
70
190
  .command("tx-status")
71
191
  .description("Check transaction status and receipt")
72
192
  .argument("<hash>", "Transaction hash (0x...)")
193
+ .addHelpText("after", "\nExamples:\n $ fibx tx-status 0xabc...def\n $ fibx tx-status 0xabc...def --chain monad")
73
194
  .action(async (hash, _opts, cmd) => {
74
195
  const globalOpts = cmd.parent.opts();
75
196
  await txStatusCommand(hash, { ...globalOpts, json: globalOpts.json });
76
197
  });
198
+ // ── Wallet Commands ──────────────────────────────────────────────────
77
199
  program
78
200
  .command("wallets")
79
- .description("List wallets linked to a user email")
80
- .argument("<email>", "User email address")
81
- .option("-j, --json", "Output as JSON")
82
- .action(walletsCommand);
201
+ .description("List wallets linked to the active session")
202
+ .action(async (_opts, cmd) => {
203
+ const globalOpts = cmd.parent.opts();
204
+ await walletsCommand({ json: globalOpts.json });
205
+ });
83
206
  program
84
207
  .command("address")
85
208
  .description("Show active wallet address")
@@ -90,6 +213,7 @@ program
90
213
  program
91
214
  .command("balance")
92
215
  .description("Show native token and ERC-20 balances")
216
+ .addHelpText("after", "\nExamples:\n $ fibx balance\n $ fibx balance --chain citrea\n $ fibx balance --json")
93
217
  .action(async (_opts, cmd) => {
94
218
  const globalOpts = cmd.parent.opts();
95
219
  await balanceCommand({ ...globalOpts, json: globalOpts.json });
@@ -100,18 +224,27 @@ program
100
224
  .argument("<amount>", "Amount to send")
101
225
  .argument("<recipient>", "Recipient address (0x...)")
102
226
  .argument("[token]", "Token symbol or address (default: chain native token)")
103
- .action(async (amount, recipient, token, _opts, cmd) => {
227
+ .option("--simulate", "Estimate gas without executing", false)
228
+ .addHelpText("after", "\nExamples:\n $ fibx send 0.1 0xRecipient...\n $ fibx send 100 0xRecipient... USDC\n $ fibx send 0.5 0xRecipient... --chain monad")
229
+ .action(async (amount, recipient, token, opts, cmd) => {
104
230
  const globalOpts = cmd.parent.opts();
105
- await sendCommand(amount, recipient, token, { ...globalOpts, json: globalOpts.json });
231
+ await sendCommand(amount, recipient, token, {
232
+ ...globalOpts,
233
+ json: globalOpts.json,
234
+ simulate: opts.simulate,
235
+ });
106
236
  });
237
+ // ── Trading Commands ─────────────────────────────────────────────────
107
238
  program
108
239
  .command("trade")
109
240
  .description("Swap tokens via Fibrous")
110
241
  .argument("<amount>", "Amount to swap")
111
242
  .argument("<from>", "Source token (symbol or address)")
112
243
  .argument("<to>", "Destination token (symbol or address)")
113
- .option("-s, --slippage <number>", "Slippage tolerance", "0.5")
244
+ .option("-s, --slippage <number>", "Slippage tolerance %", "0.5")
114
245
  .option("--approve-max", "Approve maximum amount instead of exact amount", false)
246
+ .option("--simulate", "Estimate gas without executing", false)
247
+ .addHelpText("after", "\nExamples:\n $ fibx trade 0.1 ETH USDC\n $ fibx trade 100 USDC WETH --slippage 1\n $ fibx trade 0.5 ETH DAI --chain base")
115
248
  .action(async (amount, from, to, opts, cmd) => {
116
249
  const globalOpts = cmd.parent.opts();
117
250
  await tradeCommand(amount, from, to, {
@@ -119,26 +252,56 @@ program
119
252
  json: globalOpts.json,
120
253
  slippage: parseFloat(opts.slippage),
121
254
  approveMax: opts.approveMax,
255
+ simulate: opts.simulate,
122
256
  });
123
257
  });
258
+ program
259
+ .command("portfolio")
260
+ .description("Show cross-chain portfolio with USD values")
261
+ .addHelpText("after", "\nExamples:\n $ fibx portfolio\n $ fibx portfolio --json")
262
+ .action(async (_opts, cmd) => {
263
+ const globalOpts = cmd.parent.opts();
264
+ const { portfolioCommand } = await import("./commands/portfolio/index.js");
265
+ await portfolioCommand({ json: !!globalOpts.json });
266
+ });
267
+ // ── DeFi Commands ────────────────────────────────────────────────────
124
268
  program
125
269
  .command("aave")
126
270
  .description("Aave V3 operations (Base only)")
127
- .argument("<action>", "Action: status, supply, borrow, repay, withdraw")
128
- .argument("[amount]", "Amount")
271
+ .argument("<action>", "Action: status, supply, borrow, repay, withdraw, markets")
272
+ .argument("[amount]", "Amount (use 'max' for full repay/withdraw)")
129
273
  .argument("[token]", "Token symbol or address")
130
- .action(async (action, amount, token, _opts, cmd) => {
274
+ .option("--simulate", "Estimate gas without executing", false)
275
+ .addHelpText("after", "\nExamples:\n $ fibx aave status\n $ fibx aave markets\n $ fibx aave supply 1 ETH\n $ fibx aave supply 1 ETH --simulate\n $ fibx aave borrow 500 USDC\n $ fibx aave repay max USDC\n $ fibx aave withdraw max ETH")
276
+ .action(async (action, amount, token, opts, cmd) => {
131
277
  const globalOpts = cmd.parent.opts();
132
- await aaveCommand(action, amount, token, { ...globalOpts, json: globalOpts.json });
278
+ await aaveCommand(action, amount, token, {
279
+ ...globalOpts,
280
+ json: globalOpts.json,
281
+ simulate: opts.simulate,
282
+ });
133
283
  });
284
+ // ── MCP Server ───────────────────────────────────────────────────────
134
285
  program
135
286
  .command("mcp-start")
136
287
  .description("Start MCP (Model Context Protocol) server for AI agent integration")
288
+ .addHelpText("after", `
289
+ Notes:
290
+ Communicates via stdin/stdout (stdio transport — standard MCP protocol).
291
+ Add to your AI client config (Claude, Cursor, etc.):
292
+
293
+ {
294
+ "mcpServers": {
295
+ "fibx": { "command": "fibx", "args": ["mcp-start"] }
296
+ }
297
+ }
298
+
299
+ See MCP.md for the full integration guide.`)
137
300
  .action(async () => {
138
301
  const { startMcpServer } = await import("./mcp/server.js");
139
302
  await startMcpServer();
140
303
  });
141
304
  program.parseAsync().catch((error) => {
142
- outputError(error, program.opts().json);
305
+ outputError(error, { json: !!program.opts().json });
143
306
  });
144
307
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,MAAM,GAAG;EACb,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;EACjD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;EACjD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;EACnD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;EACjD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;CACpD,CAAC;AAEF,OAAO;KACL,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CACX,kGAAkG,CAClG;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACzC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,OAAO;KACL,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,EAAE,MAAM,CAAC;KACrF,MAAM,CAAC,QAAQ,EAAE,wBAAwB,EAAE,KAAK,CAAC;KACjD,kBAAkB,EAAE,CAAC;AAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAE5E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KACnB,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACnC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACpB,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;KAC3C,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACpB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACxE,MAAM,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAE/B,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,aAAa,CAAC,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAClC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,cAAc,CAAC,CAAC;AAEzB,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,cAAc,CAAC,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;KACtC,QAAQ,CAAC,aAAa,EAAE,2BAA2B,CAAC;KACpD,QAAQ,CAAC,SAAS,EAAE,uDAAuD,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACtD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;KACtC,QAAQ,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACtD,QAAQ,CAAC,MAAM,EAAE,uCAAuC,CAAC;KACzD,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,EAAE,KAAK,CAAC;KAC9D,MAAM,CAAC,eAAe,EAAE,gDAAgD,EAAE,KAAK,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACpC,GAAG,UAAU;QACb,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,UAAU,EAAE,iDAAiD,CAAC;KACvE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;KAC9B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACnD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,cAAc,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC7C,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const BLUE = "#11B2BA";
2
+ export declare const MINT = "#0FD9A2";
3
+ export declare const SLATE = "#94a3b8";
4
+ export declare const LOGO_ROW_COLORS: readonly ["#11B2BA", "#10B9B4", "#0FC1AE", "#0EC9A8", "#0FD1A5", "#0FD9A2"];
5
+ //# sourceMappingURL=brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,KAAK,YAAY,CAAC;AAG/B,eAAO,MAAM,eAAe,6EAOlB,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Single source of truth for CLI brand palette.
2
+ // Used by index.ts (banner) and lib/format.ts (output formatting).
3
+ export const BLUE = "#11B2BA"; // fibx teal — primary accent
4
+ export const MINT = "#0FD9A2"; // fibx green — success / USD values
5
+ export const SLATE = "#94a3b8"; // slate-400 — table even rows
6
+ // ASCII logo row colors (teal → green gradient)
7
+ export const LOGO_ROW_COLORS = [
8
+ "#11B2BA",
9
+ "#10B9B4",
10
+ "#0FC1AE",
11
+ "#0EC9A8",
12
+ "#0FD1A5",
13
+ "#0FD9A2",
14
+ ];
15
+ //# sourceMappingURL=brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,mEAAmE;AAEnE,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,gCAAgC;AAC/D,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,sCAAsC;AACrE,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,iCAAiC;AAEjE,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACA,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { createSpinner } from "./format.js";
2
+ type Spinner = ReturnType<typeof createSpinner>;
3
+ /**
4
+ * Wraps the standard CLI spinner + try/catch + process.exitCode pattern.
5
+ * Use for simple commands with a single spinner lifecycle.
6
+ * Multi-step spinner commands should keep their manual pattern.
7
+ */
8
+ export declare function runCommand<T>(spinnerText: string, successText: string, failText: string, fn: (spinner: Spinner) => Promise<T>, render: (data: T) => void): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=cli-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/cli-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,aAAa,CAAC;AAEzD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAEhD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GACvB,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -0,0 +1,20 @@
1
+ import { createSpinner, formatError } from "./format.js";
2
+ /**
3
+ * Wraps the standard CLI spinner + try/catch + process.exitCode pattern.
4
+ * Use for simple commands with a single spinner lifecycle.
5
+ * Multi-step spinner commands should keep their manual pattern.
6
+ */
7
+ export async function runCommand(spinnerText, successText, failText, fn, render) {
8
+ const spinner = createSpinner(spinnerText).start();
9
+ try {
10
+ const result = await fn(spinner);
11
+ spinner.succeed(successText);
12
+ render(result);
13
+ }
14
+ catch (error) {
15
+ spinner.fail(failText);
16
+ console.error(formatError(error));
17
+ process.exitCode = 1;
18
+ }
19
+ }
20
+ //# sourceMappingURL=cli-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-helpers.js","sourceRoot":"","sources":["../../src/lib/cli-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIzD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,EAAoC,EACpC,MAAyB;IAEzB,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sliding-window concurrency — starts a new task as soon as one completes.
3
+ * Never exceeds `concurrency` in-flight promises at once.
4
+ *
5
+ * Results where `fn` returns `undefined` are filtered out.
6
+ */
7
+ export declare function runConcurrent<T, R>(items: T[], concurrency: number, fn: (item: T) => Promise<R | undefined>): Promise<R[]>;
8
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/lib/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GACrC,OAAO,CAAC,CAAC,EAAE,CAAC,CAqBd"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Sliding-window concurrency — starts a new task as soon as one completes.
3
+ * Never exceeds `concurrency` in-flight promises at once.
4
+ *
5
+ * Results where `fn` returns `undefined` are filtered out.
6
+ */
7
+ export async function runConcurrent(items, concurrency, fn) {
8
+ const results = [];
9
+ let index = 0;
10
+ const worker = async () => {
11
+ while (index < items.length) {
12
+ const current = index++;
13
+ const item = items[current];
14
+ if (!item)
15
+ continue;
16
+ const result = await fn(item);
17
+ if (result !== undefined) {
18
+ results.push(result);
19
+ }
20
+ }
21
+ };
22
+ const workers = Array.from({ length: Math.min(concurrency, items.length) }, () => worker());
23
+ await Promise.all(workers);
24
+ return results;
25
+ }
26
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../src/lib/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,KAAU,EACV,WAAmB,EACnB,EAAuC;IAEvC,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACzB,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,2BAAmB,CAAC;AAEtC,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAC9D,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AAIjE,eAAO,MAAM,oBAAoB,kDAAkD,CAAC;AAEpF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,kBAAkB,QAAsB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,2BAAmB,CAAC;AAEtC,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAC9D,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AAGjE,eAAO,MAAM,oBAAoB,kDAAkD,CAAC;AAEpF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,kBAAkB,QAAsB,CAAC"}