starkfi 0.3.1 → 0.3.4

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 (159) hide show
  1. package/MCP.md +7 -7
  2. package/README.md +93 -71
  3. package/dist/commands/auth/login.js +2 -1
  4. package/dist/commands/auth/login.js.map +1 -1
  5. package/dist/commands/batch/batch.d.ts.map +1 -1
  6. package/dist/commands/batch/batch.js +6 -15
  7. package/dist/commands/batch/batch.js.map +1 -1
  8. package/dist/commands/chain/tx-status.d.ts.map +1 -1
  9. package/dist/commands/chain/tx-status.js +8 -13
  10. package/dist/commands/chain/tx-status.js.map +1 -1
  11. package/dist/commands/config/config.d.ts.map +1 -1
  12. package/dist/commands/config/config.js +10 -7
  13. package/dist/commands/config/config.js.map +1 -1
  14. package/dist/commands/lending/lending.d.ts.map +1 -1
  15. package/dist/commands/lending/lending.js +46 -11
  16. package/dist/commands/lending/lending.js.map +1 -1
  17. package/dist/commands/portfolio/portfolio.d.ts.map +1 -1
  18. package/dist/commands/portfolio/portfolio.js +21 -7
  19. package/dist/commands/portfolio/portfolio.js.map +1 -1
  20. package/dist/commands/staking/staking.d.ts.map +1 -1
  21. package/dist/commands/staking/staking.js +30 -9
  22. package/dist/commands/staking/staking.js.map +1 -1
  23. package/dist/commands/system/status.d.ts +3 -0
  24. package/dist/commands/system/status.d.ts.map +1 -0
  25. package/dist/commands/system/status.js +41 -0
  26. package/dist/commands/system/status.js.map +1 -0
  27. package/dist/commands/trade/multi-swap.d.ts.map +1 -1
  28. package/dist/commands/trade/multi-swap.js +5 -14
  29. package/dist/commands/trade/multi-swap.js.map +1 -1
  30. package/dist/commands/trade/swap.d.ts.map +1 -1
  31. package/dist/commands/trade/swap.js +4 -13
  32. package/dist/commands/trade/swap.js.map +1 -1
  33. package/dist/commands/wallet/address.d.ts.map +1 -1
  34. package/dist/commands/wallet/address.js +1 -1
  35. package/dist/commands/wallet/address.js.map +1 -1
  36. package/dist/commands/wallet/balance.d.ts.map +1 -1
  37. package/dist/commands/wallet/balance.js +8 -7
  38. package/dist/commands/wallet/balance.js.map +1 -1
  39. package/dist/commands/wallet/deploy.d.ts.map +1 -1
  40. package/dist/commands/wallet/deploy.js +9 -15
  41. package/dist/commands/wallet/deploy.js.map +1 -1
  42. package/dist/commands/wallet/send.d.ts.map +1 -1
  43. package/dist/commands/wallet/send.js +4 -13
  44. package/dist/commands/wallet/send.js.map +1 -1
  45. package/dist/index.js +4 -8
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/brand.d.ts +5 -0
  48. package/dist/lib/brand.d.ts.map +1 -0
  49. package/dist/lib/brand.js +15 -0
  50. package/dist/lib/brand.js.map +1 -0
  51. package/dist/lib/cli-helpers.d.ts +8 -0
  52. package/dist/lib/cli-helpers.d.ts.map +1 -0
  53. package/dist/lib/cli-helpers.js +20 -0
  54. package/dist/lib/cli-helpers.js.map +1 -0
  55. package/dist/lib/config.d.ts +1 -1
  56. package/dist/lib/config.d.ts.map +1 -1
  57. package/dist/lib/config.js +1 -1
  58. package/dist/lib/config.js.map +1 -1
  59. package/dist/lib/format.d.ts +2 -1
  60. package/dist/lib/format.d.ts.map +1 -1
  61. package/dist/lib/format.js +22 -8
  62. package/dist/lib/format.js.map +1 -1
  63. package/dist/lib/parse-starknet-error.d.ts +2 -0
  64. package/dist/lib/parse-starknet-error.d.ts.map +1 -0
  65. package/dist/lib/parse-starknet-error.js +81 -0
  66. package/dist/lib/parse-starknet-error.js.map +1 -0
  67. package/dist/mcp/handlers/auth.js +1 -1
  68. package/dist/mcp/handlers/auth.js.map +1 -1
  69. package/dist/mcp/handlers/batch.d.ts.map +1 -1
  70. package/dist/mcp/handlers/batch.js +17 -24
  71. package/dist/mcp/handlers/batch.js.map +1 -1
  72. package/dist/mcp/handlers/config.d.ts +1 -1
  73. package/dist/mcp/handlers/config.d.ts.map +1 -1
  74. package/dist/mcp/handlers/config.js +4 -0
  75. package/dist/mcp/handlers/config.js.map +1 -1
  76. package/dist/mcp/handlers/context.d.ts +10 -0
  77. package/dist/mcp/handlers/context.d.ts.map +1 -0
  78. package/dist/mcp/handlers/context.js +16 -0
  79. package/dist/mcp/handlers/context.js.map +1 -0
  80. package/dist/mcp/handlers/index.d.ts +1 -0
  81. package/dist/mcp/handlers/index.d.ts.map +1 -1
  82. package/dist/mcp/handlers/index.js +1 -0
  83. package/dist/mcp/handlers/index.js.map +1 -1
  84. package/dist/mcp/handlers/lending.d.ts.map +1 -1
  85. package/dist/mcp/handlers/lending.js +105 -116
  86. package/dist/mcp/handlers/lending.js.map +1 -1
  87. package/dist/mcp/handlers/multi-swap.d.ts.map +1 -1
  88. package/dist/mcp/handlers/multi-swap.js +31 -39
  89. package/dist/mcp/handlers/multi-swap.js.map +1 -1
  90. package/dist/mcp/handlers/portfolio.d.ts.map +1 -1
  91. package/dist/mcp/handlers/portfolio.js +5 -6
  92. package/dist/mcp/handlers/portfolio.js.map +1 -1
  93. package/dist/mcp/handlers/staking.d.ts.map +1 -1
  94. package/dist/mcp/handlers/staking.js +73 -77
  95. package/dist/mcp/handlers/staking.js.map +1 -1
  96. package/dist/mcp/handlers/trade.d.ts.map +1 -1
  97. package/dist/mcp/handlers/trade.js +32 -40
  98. package/dist/mcp/handlers/trade.js.map +1 -1
  99. package/dist/mcp/handlers/utils.d.ts +7 -0
  100. package/dist/mcp/handlers/utils.d.ts.map +1 -1
  101. package/dist/mcp/handlers/utils.js +14 -0
  102. package/dist/mcp/handlers/utils.js.map +1 -1
  103. package/dist/mcp/handlers/wallet.d.ts.map +1 -1
  104. package/dist/mcp/handlers/wallet.js +61 -65
  105. package/dist/mcp/handlers/wallet.js.map +1 -1
  106. package/dist/mcp/tools/auth.d.ts.map +1 -1
  107. package/dist/mcp/tools/auth.js +10 -2
  108. package/dist/mcp/tools/auth.js.map +1 -1
  109. package/dist/mcp/tools/error-handling.d.ts.map +1 -1
  110. package/dist/mcp/tools/error-handling.js +9 -15
  111. package/dist/mcp/tools/error-handling.js.map +1 -1
  112. package/dist/services/auth/session.js +1 -1
  113. package/dist/services/auth/session.js.map +1 -1
  114. package/dist/services/config/config.d.ts +1 -0
  115. package/dist/services/config/config.d.ts.map +1 -1
  116. package/dist/services/config/config.js +4 -0
  117. package/dist/services/config/config.js.map +1 -1
  118. package/dist/services/fibrous/route.d.ts +1 -0
  119. package/dist/services/fibrous/route.d.ts.map +1 -1
  120. package/dist/services/fibrous/route.js +26 -1
  121. package/dist/services/fibrous/route.js.map +1 -1
  122. package/dist/services/portfolio/portfolio.d.ts +2 -0
  123. package/dist/services/portfolio/portfolio.d.ts.map +1 -1
  124. package/dist/services/portfolio/portfolio.js +21 -24
  125. package/dist/services/portfolio/portfolio.js.map +1 -1
  126. package/dist/services/simulate/simulate.d.ts.map +1 -1
  127. package/dist/services/simulate/simulate.js +7 -6
  128. package/dist/services/simulate/simulate.js.map +1 -1
  129. package/dist/services/staking/staking.d.ts.map +1 -1
  130. package/dist/services/staking/staking.js +16 -3
  131. package/dist/services/staking/staking.js.map +1 -1
  132. package/dist/services/staking/validators.d.ts +1 -2
  133. package/dist/services/staking/validators.d.ts.map +1 -1
  134. package/dist/services/staking/validators.js.map +1 -1
  135. package/dist/services/starkzap/client.d.ts +1 -1
  136. package/dist/services/starkzap/client.d.ts.map +1 -1
  137. package/dist/services/starkzap/client.js +11 -6
  138. package/dist/services/starkzap/client.js.map +1 -1
  139. package/dist/services/tokens/tokens.d.ts.map +1 -1
  140. package/dist/services/tokens/tokens.js +17 -9
  141. package/dist/services/tokens/tokens.js.map +1 -1
  142. package/dist/services/vesu/lending.d.ts.map +1 -1
  143. package/dist/services/vesu/lending.js +0 -7
  144. package/dist/services/vesu/lending.js.map +1 -1
  145. package/dist/services/vesu/pools.d.ts +4 -0
  146. package/dist/services/vesu/pools.d.ts.map +1 -1
  147. package/dist/services/vesu/pools.js +8 -0
  148. package/dist/services/vesu/pools.js.map +1 -1
  149. package/package.json +9 -5
  150. package/skills/README.md +1 -1
  151. package/skills/balance/SKILL.md +1 -1
  152. package/skills/batch/SKILL.md +6 -6
  153. package/skills/config/SKILL.md +10 -1
  154. package/skills/lending/SKILL.md +20 -9
  155. package/skills/multi-swap/SKILL.md +1 -1
  156. package/skills/portfolio/SKILL.md +2 -2
  157. package/skills/send/SKILL.md +1 -1
  158. package/skills/staking/SKILL.md +10 -10
  159. package/skills/trade/SKILL.md +1 -1
package/MCP.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Model Context Protocol (MCP) Integration
2
2
 
3
- StarkFi operates as a fully-featured Model Context Protocol (MCP) server. By executing `npx starkfi mcp-start` over the `stdio` transport layer, AI development environments such as Cursor, Claude Desktop, and Antigravity can interact with the Starknet blockchain and execute decentralized finance operations through natural language commands.
3
+ StarkFi operates as a fully-featured Model Context Protocol (MCP) server. By executing `npx starkfi@latest mcp-start` over the `stdio` transport layer, AI development environments such as Cursor, Claude Desktop, and Antigravity can interact with the Starknet blockchain and execute decentralized finance operations through natural language commands.
4
4
 
5
5
  ## Client Configuration
6
6
 
@@ -11,13 +11,13 @@ To integrate StarkFi into your AI environment, configure your MCP client setting
11
11
  "mcpServers": {
12
12
  "starkfi": {
13
13
  "command": "npx",
14
- "args": ["-y", "starkfi", "mcp-start"]
14
+ "args": ["-y", "starkfi@latest", "mcp-start"]
15
15
  }
16
16
  }
17
17
  }
18
18
  ```
19
19
 
20
- **Authentication Requirement:** The StarkFi CLI must be authenticated locally (via `npx starkfi auth login`) before the MCP server can execute any state-mutating transactions on behalf of the user.
20
+ **Authentication Requirement:** The StarkFi CLI must be authenticated locally (via `npx starkfi@latest auth login`) before the MCP server can execute any state-mutating transactions on behalf of the user.
21
21
 
22
22
  ## Tool Registry
23
23
 
@@ -276,10 +276,10 @@ Atomically closes an active Vesu V2 lending position. Repays all outstanding deb
276
276
 
277
277
  Views and modifies global CLI behavior: RPC routing, network selection, and Gas Abstraction.
278
278
 
279
- | Parameter | Type | Required | Description |
280
- | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
281
- | `action` | enum | **Yes** | One of: `list`, `set-rpc`, `get-rpc`, `set-network`, `set-gasfree`, `set-gas-token` |
282
- | `value` | string | No | `set-gasfree`: `on`/`off`. `set-gas-token`: symbol (`USDC`, `ETH`) or `off`. `set-rpc`: URL string. `set-network`: `mainnet`/`sepolia`. |
279
+ | Parameter | Type | Required | Description |
280
+ | --------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
281
+ | `action` | enum | **Yes** | One of: `list`, `reset`, `set-rpc`, `get-rpc`, `set-network`, `set-gasfree`, `set-gas-token` |
282
+ | `value` | string | No | `set-gasfree`: `on`/`off`. `set-gas-token`: symbol (`USDC`, `ETH`) or `reset`. `set-rpc`: URL string. `set-network`: `mainnet`/`sepolia`. |
283
283
 
284
284
  ---
285
285
 
package/README.md CHANGED
@@ -1,19 +1,23 @@
1
1
  <p align="center">
2
2
  <a href="https://starkfi.app">
3
- <img src="docs/favicon.svg" alt="StarkFi Logo" width="100" height="100"/>
3
+ <img src="landing/favicon.svg" alt="StarkFi Logo" width="100" height="100"/>
4
4
  </a>
5
5
  </p>
6
6
 
7
7
  <h1 align="center">StarkFi</h1>
8
8
 
9
9
  <p align="center">
10
- <strong>The Gas-Abstracted DeFi CLI & Agent.</strong><br>
11
- <em>The AI-native DeFi toolkit for Starknet.</em><br>
10
+ <strong>The AI-native DeFi toolkit for Starknet.</strong><br>
12
11
  A production-grade CLI and MCP server that gives both developers and AI agents full access to swaps, multi-swap, atomic batch transactions, staking, lending, portfolio management, and gasless transactions — all powered by the <a href="https://github.com/keep-starknet-strange/starkzap">Starkzap SDK</a>.
13
12
  </p>
14
13
 
14
+ <p align="center">
15
+ <a href="https://www.npmjs.com/package/starkfi"><img src="https://img.shields.io/npm/v/starkfi?style=flat-square&color=CB3837&logo=npm&logoColor=white" alt="npm version"/></a>
16
+ <a href="https://www.npmjs.com/package/starkfi"><img src="https://img.shields.io/npm/dm/starkfi?style=flat-square&color=blue" alt="npm downloads"/></a>
17
+ </p>
18
+
15
19
  ```bash
16
- npx starkfi --help
20
+ npx starkfi@latest --help
17
21
  ```
18
22
 
19
23
  ---
@@ -33,35 +37,36 @@ Most DeFi tools are built for humans clicking buttons. StarkFi is built for **ag
33
37
  ## Architecture
34
38
 
35
39
  ```
36
- ┌──────────────────────────────────────────────────────────────────────┐
37
- StarkFi
38
-
39
- ┌─────────────┐ ┌─────────────────────────────────────────┐
40
- │ │ CLI (25+ │ │ MCP Server (27 tools) │ │
41
- │ │ commands) │ │ AI agents connect via stdio transport
42
- └──────┬───────┘ └──────────────┬──────────────────────────┘
43
- │ │
44
- └────────────┬───────────────┘
45
-
46
- ┌──────────────────────────────────────────────────────────────┐
47
- │ Service Layer │
48
- │ │ │ │
49
- │ │ ┌─────────┐ ┌─────────┐ ┌──────┐ ┌─────────┐ │ │
50
- │ │ │ Fibrous │ │ Staking │ │ Vesu │ │ Batch │ │
51
- │ │ │ Swap │ │Lifecycle│ │ V2 │ │Multicall│ │ │
52
- │ │ └────┬────┘ └────┬────┘ └──┬───┘ └────┬────┘ │ │
53
- │ │ │ │ │ │ │
54
- │ │ ┌────┴────────────┴──────────┴────────────┴────┐ │ │
55
- │ │ │ Starkzap SDK (starkzap v1.0.0)
56
- │ │ Wallet · TxBuilder · Tokens · Paymaster │ │
57
- │ │ └───────────────────┬───────────────────────────┘ │ │
58
- └──────────────────────┼───────────────────────────────────────┘
59
-
60
- ┌─────────────────────────────────────┐ ┌─────────────────────┐
61
- Auth Server (Hono + Privy TEE) │ AVNU Paymaster │ │
62
- │ │ Email OTP · Wallet · Sign · Gas │ │ Gas Abstraction
63
- └─────────────────────────────────────┘ └─────────────────────┘
64
- └──────────────────────────────────────────────────────────────────────┘
40
+ ┌──────────────────────────────────────────────────────────────────────────┐
41
+ StarkFi
42
+
43
+ ┌──────────┐ ┌─────────────────────┐ ┌───────────────────────┐
44
+ │ │ CLI │ │ MCP Server │ │ Agent Skills │ │
45
+ │ │ (30+ │ │ (27 tools) │ │ (10 workflows) │
46
+ │ commands)│ │ stdio transport │ npx starkfi@latest │ │
47
+ └────┬─────┘ └──────────┬──────────┘ └──────────┬────────────┘
48
+ │ │ │
49
+ └──────────────────────┼───────────────────────────┘
50
+
51
+ ┌──────────────────────────────────────────────────────────────────┐
52
+ │ │ Service Layer │ │
53
+ │ │ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌──────────┐ │ │
54
+ │ │ │ Fibrous │ │ Staking │ │ Vesu │ │ Batch │ │
55
+ │ │ │ Swap │ │ Lifecycle│ │ V2 │ │ Multicall│ │ │
56
+ │ │ └────┬─────┘ └────┬─────┘ └───┬────┘ └────┬─────┘ │ │
57
+ │ │ └─────────────┴────────────┴────────────┘ │ │
58
+ │ │
59
+ │ │ ┌───────────────┴───────────────────────────┐ │ │
60
+ │ │ Starkzap SDK (starkzap v1.0.0) │ │
61
+ │ │ Wallet · TxBuilder · Tokens · Paymaster
62
+ │ └───────────────┬───────────────────────────┘ │
63
+ └───────────────────────┼──────────────────────────────────────────┘
64
+
65
+ ┌──────────────────────────────────────┐ ┌──────────────────────┐
66
+ │ │ Auth Server (Hono + Privy TEE) │ │ AVNU Paymaster
67
+ Email OTP · Wallet · Sign · Gas │ Gas Abstraction │ │
68
+ │ └──────────────────────────────────────┘ └──────────────────────┘ │
69
+ └──────────────────────────────────────────────────────────────────────────┘
65
70
 
66
71
 
67
72
  ┌──────────────────┐
@@ -92,8 +97,8 @@ StarkFi leverages **all core Starkzap modules**:
92
97
  DEX-aggregated swaps with optimal routing. Single swaps, multi-swap (up to 3 pairs), and batch routing.
93
98
 
94
99
  ```bash
95
- npx starkfi trade 100 USDC ETH --slippage 1
96
- npx starkfi multi-swap "100 USDC>ETH, 50 USDT>ETH"
100
+ npx starkfi@latest trade 100 USDC ETH --slippage 1
101
+ npx starkfi@latest multi-swap "100 USDC>ETH, 50 USDT>ETH"
97
102
  ```
98
103
 
99
104
  ### ⚛️ Atomic Transaction Batching
@@ -101,7 +106,7 @@ npx starkfi multi-swap "100 USDC>ETH, 50 USDT>ETH"
101
106
  Bundle multiple DeFi operations into a single Starknet multicall. Minimum 2 operations.
102
107
 
103
108
  ```bash
104
- npx starkfi batch \
109
+ npx starkfi@latest batch \
105
110
  --swap "100 USDC ETH" \
106
111
  --stake "50 STRK karnot" \
107
112
  --supply "200 USDC Prime" \
@@ -113,10 +118,10 @@ npx starkfi batch \
113
118
  Full staking lifecycle across multiple validators with STRK, WBTC, tBTC, SolvBTC, and LBTC support.
114
119
 
115
120
  ```bash
116
- npx starkfi stake 100 -v karnot
117
- npx starkfi rewards -v karnot --compound
118
- npx starkfi unstake intent -v karnot -a 50
119
- npx starkfi unstake exit -v karnot
121
+ npx starkfi@latest stake 100 -v karnot
122
+ npx starkfi@latest rewards -v karnot --compound
123
+ npx starkfi@latest unstake intent -v karnot -a 50
124
+ npx starkfi@latest unstake exit -v karnot
120
125
  ```
121
126
 
122
127
  ### 🏦 Lending & Borrowing (Vesu V2)
@@ -124,24 +129,25 @@ npx starkfi unstake exit -v karnot
124
129
  Supply collateral, borrow assets, monitor health factors, and atomically close positions.
125
130
 
126
131
  ```bash
127
- npx starkfi lend-supply 100 -p Prime -t STRK
128
- npx starkfi lend-borrow -p Prime \
132
+ npx starkfi@latest lend-supply 100 -p Prime -t STRK
133
+ npx starkfi@latest lend-borrow -p Prime \
129
134
  --collateral-amount 200 --collateral-token STRK \
130
135
  --borrow-amount 50 --borrow-token USDC
131
- npx starkfi lend-status -p Prime --collateral-token STRK --borrow-token USDC
132
- npx starkfi lend-close -p Prime --collateral-token STRK --borrow-token USDC
136
+ npx starkfi@latest lend-status # Auto-scan all pools
137
+ npx starkfi@latest lend-status -p Prime --collateral-token STRK --borrow-token USDC # Specific position
138
+ npx starkfi@latest lend-close -p Prime --collateral-token STRK --borrow-token USDC
133
139
  ```
134
140
 
135
141
  ### 💸 Gas Abstraction
136
142
 
137
- All transactions are gasless by default. Users pay gas fees in their preferred ERC-20 token via Paymaster.
143
+ Users pay gas fees in their preferred ERC-20 token via AVNU Paymaster — no native STRK or ETH required. Alternatively, developers can sponsor gas entirely.
138
144
 
139
145
  ```bash
140
146
  # Pay gas in USDC instead of STRK
141
- npx starkfi config set-gas-token USDC
147
+ npx starkfi@latest config set-gas-token USDC
142
148
 
143
149
  # Developer pays all gas (gasfree mode)
144
- npx starkfi config set-gasfree on
150
+ npx starkfi@latest config set-gasfree on
145
151
  ```
146
152
 
147
153
  | Mode | Who Pays | Gas Tokens | Description |
@@ -154,8 +160,8 @@ npx starkfi config set-gasfree on
154
160
  Estimate fees and validate any transaction before broadcasting.
155
161
 
156
162
  ```bash
157
- npx starkfi trade 100 USDC ETH --simulate
158
- # → mode: SIMULATION, estimatedFee: 0.000142 ETH ($0.52), callCount: 4
163
+ npx starkfi@latest trade 100 USDC ETH --simulate
164
+ # → mode: SIMULATION, estimatedFee: 0.054 STRK ($0.0024), callCount: 4
159
165
  ```
160
166
 
161
167
  ### 📊 Portfolio Dashboard
@@ -163,7 +169,7 @@ npx starkfi trade 100 USDC ETH --simulate
163
169
  Consolidated view of all DeFi positions in one call.
164
170
 
165
171
  ```bash
166
- npx starkfi portfolio
172
+ npx starkfi@latest portfolio
167
173
  # → Token Balances (USD), Staking Positions, Lending Positions, Total Value
168
174
  ```
169
175
 
@@ -175,7 +181,7 @@ StarkFi exposes **27 MCP tools** via stdio transport, enabling AI assistants to
175
181
 
176
182
  ```bash
177
183
  # Start the MCP server
178
- npx starkfi mcp-start
184
+ npx starkfi@latest mcp-start
179
185
  ```
180
186
 
181
187
  ### Tool Categories
@@ -208,13 +214,13 @@ Add to your AI assistant's MCP config (Cursor, Claude, etc.):
208
214
  "mcpServers": {
209
215
  "starkfi": {
210
216
  "command": "npx",
211
- "args": ["-y", "starkfi", "mcp-start"]
217
+ "args": ["-y", "starkfi@latest", "mcp-start"]
212
218
  }
213
219
  }
214
220
  }
215
221
  ```
216
222
 
217
- For the complete tool registry and schemas, see [MCP Documentation](MCP.md).
223
+ For the complete tool registry and schemas, see [MCP Documentation](https://docs.starkfi.app/docs/mcp).
218
224
 
219
225
  ---
220
226
 
@@ -234,7 +240,7 @@ StarkFi ships with **10 agent skills** — structured instruction sets that teac
234
240
  npx skills add ahmetenesdur/starkfi
235
241
  ```
236
242
 
237
- See [Skills Documentation](skills/README.md) for details.
243
+ See [Skills Documentation](https://docs.starkfi.app/docs/skills) for details.
238
244
 
239
245
  ---
240
246
 
@@ -248,27 +254,27 @@ See [Skills Documentation](skills/README.md) for details.
248
254
  ### 1. Authenticate
249
255
 
250
256
  ```bash
251
- npx starkfi auth login user@example.com
252
- npx starkfi auth verify user@example.com <OTP_CODE>
257
+ npx starkfi@latest auth login user@example.com
258
+ npx starkfi@latest auth verify user@example.com <OTP_CODE>
253
259
  ```
254
260
 
255
261
  ### 2. Deploy Account
256
262
 
257
263
  ```bash
258
- npx starkfi deploy
264
+ npx starkfi@latest deploy
259
265
  ```
260
266
 
261
267
  ### 3. Check Balance
262
268
 
263
269
  ```bash
264
- npx starkfi balance
270
+ npx starkfi@latest balance
265
271
  ```
266
272
 
267
273
  ### 4. Start Trading
268
274
 
269
275
  ```bash
270
- npx starkfi trade 10 STRK ETH --simulate # Preview first
271
- npx starkfi trade 10 STRK ETH # Execute
276
+ npx starkfi@latest trade 10 STRK ETH --simulate # Preview first
277
+ npx starkfi@latest trade 10 STRK ETH # Execute
272
278
  ```
273
279
 
274
280
  ---
@@ -322,7 +328,7 @@ npx starkfi trade 10 STRK ETH # Execute
322
328
  | `lend-withdraw <amount> -p <pool> -t <token>` | Withdraw assets |
323
329
  | `lend-borrow -p <pool> --collateral-amount <n> --collateral-token <t> --borrow-amount <n> --borrow-token <t> [--use-supplied]` | Borrow |
324
330
  | `lend-repay <amount> -p <pool> -t <token> --collateral-token <t>` | Repay debt |
325
- | `lend-status -p <pool> --collateral-token <t> [--borrow-token <t>]` | Position status |
331
+ | `lend-status [-p <pool> --collateral-token <t> [--borrow-token <t>]]` | Position status (auto-scan if no args) |
326
332
  | `lend-close -p <pool> --collateral-token <t> --borrow-token <t>` | Close position atomically |
327
333
 
328
334
  ### Configuration
@@ -330,6 +336,7 @@ npx starkfi trade 10 STRK ETH # Execute
330
336
  | Command | Description |
331
337
  | --------------------------------------- | ------------------------------ |
332
338
  | `config list` | Show current configuration |
339
+ | `config reset` | Reset all settings to defaults |
333
340
  | `config set-rpc <url>` | Set custom RPC endpoint |
334
341
  | `config get-rpc` | Show current RPC |
335
342
  | `config set-network <mainnet\|sepolia>` | Switch network |
@@ -372,7 +379,7 @@ See [`server/README.md`](server/README.md) for setup instructions.
372
379
  | **CLI** | [Commander.js](https://github.com/tj/commander.js) v14.0.3 |
373
380
  | **MCP** | [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) v1.27.1 |
374
381
  | **Schema** | [Zod](https://zod.dev/) v4.3.6 |
375
- | **Auth Server** | [Hono](https://hono.dev/) v4.12.2 + [Privy TEE](https://privy.io/) |
382
+ | **Auth Server** | [Hono](https://hono.dev/) v4.12.7 + [Privy TEE](https://privy.io/) |
376
383
  | **DEX Routing** | [Fibrous](https://fibrous.finance/) Aggregator |
377
384
  | **Lending** | [Vesu](https://vesu.io/) V2 Protocol |
378
385
  | **Gas** | [AVNU](https://avnu.fi/) Paymaster |
@@ -381,19 +388,34 @@ See [`server/README.md`](server/README.md) for setup instructions.
381
388
 
382
389
  ## Error Handling
383
390
 
384
- StarkFi implements a robust error handling system with a custom `StarkfiError` class and **26 specific error codes** organized by domain:
391
+ StarkFi implements a robust error handling system with a custom `StarkfiError` class and **25 specific error codes** organized by domain:
385
392
 
386
- | Domain | Error Codes |
387
- | -------------- | --------------------------------------------------------------------------------- |
388
- | **Auth** | `SESSION_EXPIRED`, `SESSION_NOT_FOUND`, `AUTH_FAILED`, `UNAUTHORIZED` |
389
- | **Wallet** | `WALLET_NOT_FOUND`, `WALLET_NOT_DEPLOYED`, `INSUFFICIENT_BALANCE` |
390
- | **Network** | `NETWORK_ERROR`, `RPC_ERROR`, `API_ERROR`, `TX_FAILED`, `TX_REVERTED` |
391
- | **Validation** | `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_TOKEN`, `INVALID_CONFIG` |
392
- | **DeFi** | `SWAP_FAILED`, `STAKING_FAILED`, `LENDING_FAILED`, `POOL_NOT_FOUND` |
393
- | **System** | `CONFIG_ERROR`, `SDK_ERROR`, `UNKNOWN_ERROR`, `SIMULATION_FAILED`, `BATCH_FAILED` |
393
+ | Domain | Error Codes |
394
+ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
395
+ | **Auth** | `AUTH_REQUIRED`, `AUTH_FAILED`, `SESSION_EXPIRED` |
396
+ | **Wallet** | `WALLET_NOT_DEPLOYED`, `WALLET_NOT_FOUND`, `INSUFFICIENT_BALANCE` |
397
+ | **Network** | `NETWORK_ERROR`, `RATE_LIMITED`, `TX_FAILED`, `TX_NOT_FOUND`, `PAYMASTER_ERROR` |
398
+ | **Validation** | `INVALID_CONFIG`, `INVALID_ADDRESS`, `INVALID_AMOUNT` |
399
+ | **DeFi** | `SWAP_FAILED`, `NO_ROUTE_FOUND`, `SLIPPAGE_EXCEEDED`, `STAKING_FAILED`, `LENDING_FAILED`, `POOL_NOT_FOUND`, `EXIT_NOT_READY`, `VALIDATOR_NOT_FOUND` |
400
+ | **System** | `SIMULATION_FAILED`, `BATCH_LIMIT_EXCEEDED`, `UNKNOWN` |
394
401
 
395
402
  All network operations include **automatic retry with exponential backoff** (500ms base, max 2 retries). Parallel operations use a **sliding-window concurrency pool** to prevent RPC rate-limiting.
396
403
 
404
+ ### Readable Starknet Errors
405
+
406
+ Raw Starknet JSON-RPC errors (hex-encoded Cairo strings like `u256_sub Overflow`) are automatically parsed into human-readable messages:
407
+
408
+ | Raw Error | Displayed Message |
409
+ |-----------|------------------|
410
+ | `u256_sub Overflow` | Insufficient balance — you don't have enough tokens (including gas fees) |
411
+ | `ERC20: insufficient allowance` | Token approval required — not enough allowance for this operation |
412
+ | `UNAUTHORIZED` | Unauthorized — session may have expired, try: starkfi auth login |
413
+ | `argent/multicall-failed` | One or more calls in the transaction failed |
414
+ | `dusty-collateral-balance` | Collateral amount is below the pool's minimum (dust limit). Please increase the amount. |
415
+ | `dusty-debt-balance` | Borrow amount is below the pool's minimum (dust limit). Please increase the amount. |
416
+
417
+ This applies to both CLI output (`formatError`) and MCP responses (`withErrorHandling`).
418
+
397
419
  ---
398
420
 
399
421
  ## Development
@@ -7,14 +7,15 @@ export function registerLoginCommand(program) {
7
7
  .command("login <email>")
8
8
  .description("Send OTP to email for Privy wallet authentication")
9
9
  .action(async (email) => {
10
+ const spinner = createSpinner("Sending OTP...").start();
10
11
  try {
11
- const spinner = createSpinner("Sending OTP...").start();
12
12
  await apiLogin(email);
13
13
  spinner.succeed("OTP sent");
14
14
  console.log(success(`Check your email (${email}) for the code.`));
15
15
  console.log(`Run: starkfi auth verify ${email} <code>`);
16
16
  }
17
17
  catch (error) {
18
+ spinner.fail("Login failed");
18
19
  console.error(formatError(error));
19
20
  process.exit(1);
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC/B,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;YAExD,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEtB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEtB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/commands/batch/batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6EzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+G3D"}
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/commands/batch/batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8EzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuG3D"}
@@ -2,13 +2,14 @@ import { requireSession } from "../../services/auth/session.js";
2
2
  import { initSDKAndWallet } from "../../services/starkzap/client.js";
3
3
  import { buildBatch } from "../../services/batch/batch.js";
4
4
  import { simulateTransaction } from "../../services/simulate/simulate.js";
5
- import { createSpinner, formatResult, formatError } from "../../lib/format.js";
5
+ import { createSpinner, formatError } from "../../lib/format.js";
6
+ import { outputResult } from "../../lib/cli-helpers.js";
6
7
  import { ErrorCode, StarkfiError } from "../../lib/errors.js";
7
- /** Collect repeatable options into array. */
8
+ // Collect repeatable options into array.
8
9
  function collect(value, previous) {
9
10
  return previous.concat([value]);
10
11
  }
11
- /** Parse "100 USDC ETH" into a typed BatchOperation. */
12
+ // Parse "100 USDC ETH" into a typed BatchOperation.
12
13
  function parseOperation(type, raw) {
13
14
  const parts = raw.trim().split(/\s+/);
14
15
  switch (type) {
@@ -119,12 +120,7 @@ Minimum 2 operations required. Each flag can be repeated.`)
119
120
  calls: sim.callCount,
120
121
  ...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
121
122
  };
122
- if (opts.json) {
123
- console.log(JSON.stringify(simResult, null, 2));
124
- }
125
- else {
126
- console.log(formatResult(simResult));
127
- }
123
+ outputResult(simResult, opts);
128
124
  return;
129
125
  }
130
126
  spinner.start();
@@ -138,12 +134,7 @@ Minimum 2 operations required. Each flag can be repeated.`)
138
134
  txHash: tx.hash,
139
135
  explorer: tx.explorerUrl,
140
136
  };
141
- if (opts.json) {
142
- console.log(JSON.stringify(txResult, null, 2));
143
- }
144
- else {
145
- console.log(formatResult(txResult));
146
- }
137
+ outputResult(txResult, opts);
147
138
  }
148
139
  catch (error) {
149
140
  spinner.fail("Batch failed");
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/commands/batch/batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/commands/batch/batch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tx-status.d.ts","sourceRoot":"","sources":["../../../src/commands/chain/tx-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuC9D"}
1
+ {"version":3,"file":"tx-status.d.ts","sourceRoot":"","sources":["../../../src/commands/chain/tx-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC9D"}
@@ -1,39 +1,34 @@
1
1
  import { requireSession } from "../../services/auth/session.js";
2
2
  import { createSDK } from "../../services/starkzap/client.js";
3
3
  import { ConfigService } from "../../services/config/config.js";
4
- import { createSpinner, formatResult, formatError } from "../../lib/format.js";
4
+ import { formatActualFee } from "../../lib/format.js";
5
5
  import { explorerUrl } from "../../lib/config.js";
6
+ import { runCommand, outputResult } from "../../lib/cli-helpers.js";
6
7
  export function registerTxStatusCommand(program) {
7
8
  program
8
9
  .command("tx-status")
9
10
  .description("Check transaction status by hash")
10
11
  .argument("<hash>", "Transaction hash (0x...)")
11
12
  .action(async (hash) => {
12
- const spinner = createSpinner("Checking transaction...").start();
13
- try {
13
+ await runCommand("Checking transaction...", "Transaction found", "Failed to get transaction status", async () => {
14
14
  const session = requireSession();
15
15
  const configService = ConfigService.getInstance();
16
16
  const rpcUrl = configService.get("rpcUrl");
17
17
  const sdk = createSDK(session.network, rpcUrl);
18
18
  const provider = sdk.getProvider();
19
19
  const receipt = await provider.getTransactionReceipt(hash);
20
- spinner.succeed("Transaction found");
21
- const actualFee = "actual_fee" in receipt ? String(receipt.actual_fee) : "N/A";
20
+ const rawFee = "actual_fee" in receipt ? receipt.actual_fee : null;
21
+ const actualFee = formatActualFee(rawFee);
22
22
  const blockNumber = "block_number" in receipt ? String(receipt.block_number) : "pending";
23
- console.log(formatResult({
23
+ return {
24
24
  hash,
25
25
  status: JSON.stringify(receipt.statusReceipt),
26
26
  actualFee,
27
27
  blockNumber,
28
28
  network: session.network,
29
29
  explorer: explorerUrl(hash, session.network),
30
- }));
31
- }
32
- catch (error) {
33
- spinner.fail("Failed to get transaction status");
34
- console.error(formatError(error));
35
- process.exit(1);
36
- }
30
+ };
31
+ }, (result) => outputResult(result, {}));
37
32
  });
38
33
  }
39
34
  //# sourceMappingURL=tx-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tx-status.js","sourceRoot":"","sources":["../../../src/commands/chain/tx-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACvD,OAAO;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjE,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAuB,CAAC;YACjE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE3D,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAErC,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/E,MAAM,WAAW,GAChB,cAAc,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEtE,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC7C,SAAS;gBACT,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;aAC5C,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"tx-status.js","sourceRoot":"","sources":["../../../src/commands/chain/tx-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACvD,OAAO;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC9B,MAAM,UAAU,CACf,yBAAyB,EACzB,mBAAmB,EACnB,kCAAkC,EAClC,KAAK,IAAI,EAAE;YACV,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAuB,CAAC;YACjE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,WAAW,GAChB,cAAc,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEtE,OAAO;gBACN,IAAI;gBACJ,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC7C,SAAS;gBACT,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;aAC5C,CAAC;QACH,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CACpC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2I5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+I5D"}
@@ -2,6 +2,7 @@ import { ConfigService } from "../../services/config/config.js";
2
2
  import { success, formatResult, warn } from "../../lib/format.js";
3
3
  import { GASLESS_SUPPORTED_TOKENS } from "../../services/starkzap/config.js";
4
4
  export function registerConfigCommand(program) {
5
+ const configService = ConfigService.getInstance();
5
6
  const configCmd = program.command("config").description("Manage starkfi configuration");
6
7
  configCmd
7
8
  .command("set-rpc")
@@ -9,7 +10,6 @@ export function registerConfigCommand(program) {
9
10
  .argument("<url>", "RPC endpoint URL")
10
11
  .addHelpText("after", "\nExample:\n $ starkfi config set-rpc https://starknet-mainnet.g.alchemy.com/v2/<key>")
11
12
  .action((url) => {
12
- const configService = ConfigService.getInstance();
13
13
  configService.set("rpcUrl", url);
14
14
  console.log(success(`RPC URL set to: ${url}`));
15
15
  });
@@ -18,10 +18,9 @@ export function registerConfigCommand(program) {
18
18
  .description("Show the current RPC URL")
19
19
  .addHelpText("after", "\nExample:\n $ starkfi config get-rpc")
20
20
  .action(() => {
21
- const configService = ConfigService.getInstance();
22
21
  const rpcUrl = configService.get("rpcUrl");
23
22
  console.log(formatResult({
24
- rpcUrl: rpcUrl || "default (StarkZap preset)",
23
+ rpcUrl: rpcUrl || "default (Starkzap preset)",
25
24
  }));
26
25
  });
27
26
  configCmd
@@ -34,7 +33,6 @@ export function registerConfigCommand(program) {
34
33
  console.log(warn("Network must be 'mainnet' or 'sepolia'"));
35
34
  process.exit(1);
36
35
  }
37
- const configService = ConfigService.getInstance();
38
36
  configService.set("network", network);
39
37
  console.log(success(`Network set to: ${network}`));
40
38
  });
@@ -49,7 +47,6 @@ export function registerConfigCommand(program) {
49
47
  console.log(warn("Mode must be 'on' or 'off'"));
50
48
  process.exit(1);
51
49
  }
52
- const configService = ConfigService.getInstance();
53
50
  configService.set("gasfreeMode", mode === "on");
54
51
  if (mode === "on") {
55
52
  // Gasfree and Gasless are mutually exclusive
@@ -67,7 +64,6 @@ export function registerConfigCommand(program) {
67
64
  .argument("<token>", `Token symbol or 'reset' (supported: ${GASLESS_SUPPORTED_TOKENS.join(", ")})`)
68
65
  .addHelpText("after", `\nExamples:\n $ starkfi config set-gas-token ETH\n $ starkfi config set-gas-token USDC\n $ starkfi config set-gas-token reset # revert to STRK`)
69
66
  .action((token) => {
70
- const configService = ConfigService.getInstance();
71
67
  if (["off", "reset", "default"].includes(token.toLowerCase())) {
72
68
  configService.delete("gasToken");
73
69
  console.log(success("Gas token reset to default: STRK"));
@@ -88,7 +84,6 @@ export function registerConfigCommand(program) {
88
84
  .description("Show all configuration settings")
89
85
  .addHelpText("after", "\nExample:\n $ starkfi config list")
90
86
  .action(() => {
91
- const configService = ConfigService.getInstance();
92
87
  const all = configService.getAll();
93
88
  if (Object.keys(all).length === 0) {
94
89
  console.log(" No custom settings. Using defaults.\n");
@@ -107,5 +102,13 @@ export function registerConfigCommand(program) {
107
102
  feeMode: feeModeSummary,
108
103
  }));
109
104
  });
105
+ configCmd
106
+ .command("reset")
107
+ .description("Reset all configuration to defaults")
108
+ .addHelpText("after", "\nExample:\n $ starkfi config reset")
109
+ .action(() => {
110
+ configService.clear();
111
+ console.log(success("All settings reset to defaults."));
112
+ });
110
113
  }
111
114
  //# sourceMappingURL=config.js.map