fibx 0.5.1 → 0.7.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.
- package/README.md +73 -2
- package/dist/index.js +277 -292
- package/dist/index.js.map +1 -1
- package/package.json +13 -14
- package/dist/commands/auth/import.d.ts +0 -3
- package/dist/commands/auth/import.d.ts.map +0 -1
- package/dist/commands/auth/import.js +0 -44
- package/dist/commands/auth/import.js.map +0 -1
- package/dist/commands/auth/login.d.ts +0 -3
- package/dist/commands/auth/login.d.ts.map +0 -1
- package/dist/commands/auth/login.js +0 -13
- package/dist/commands/auth/login.js.map +0 -1
- package/dist/commands/auth/logout.d.ts +0 -3
- package/dist/commands/auth/logout.d.ts.map +0 -1
- package/dist/commands/auth/logout.js +0 -11
- package/dist/commands/auth/logout.js.map +0 -1
- package/dist/commands/auth/verify.d.ts +0 -3
- package/dist/commands/auth/verify.d.ts.map +0 -1
- package/dist/commands/auth/verify.js +0 -30
- package/dist/commands/auth/verify.js.map +0 -1
- package/dist/commands/chain/transaction.d.ts +0 -3
- package/dist/commands/chain/transaction.d.ts.map +0 -1
- package/dist/commands/chain/transaction.js +0 -31
- package/dist/commands/chain/transaction.js.map +0 -1
- package/dist/commands/config/index.d.ts +0 -3
- package/dist/commands/config/index.d.ts.map +0 -1
- package/dist/commands/config/index.js +0 -97
- package/dist/commands/config/index.js.map +0 -1
- package/dist/commands/defi/aave.d.ts +0 -8
- package/dist/commands/defi/aave.d.ts.map +0 -1
- package/dist/commands/defi/aave.js +0 -238
- package/dist/commands/defi/aave.js.map +0 -1
- package/dist/commands/portfolio/index.d.ts +0 -3
- package/dist/commands/portfolio/index.d.ts.map +0 -1
- package/dist/commands/portfolio/index.js +0 -64
- package/dist/commands/portfolio/index.js.map +0 -1
- package/dist/commands/trade/status.d.ts +0 -3
- package/dist/commands/trade/status.d.ts.map +0 -1
- package/dist/commands/trade/status.js +0 -30
- package/dist/commands/trade/status.js.map +0 -1
- package/dist/commands/trade/swap.d.ts +0 -9
- package/dist/commands/trade/swap.d.ts.map +0 -1
- package/dist/commands/trade/swap.js +0 -205
- package/dist/commands/trade/swap.js.map +0 -1
- package/dist/commands/wallet/address.d.ts +0 -3
- package/dist/commands/wallet/address.d.ts.map +0 -1
- package/dist/commands/wallet/address.js +0 -13
- package/dist/commands/wallet/address.js.map +0 -1
- package/dist/commands/wallet/balance.d.ts +0 -3
- package/dist/commands/wallet/balance.d.ts.map +0 -1
- package/dist/commands/wallet/balance.js +0 -73
- package/dist/commands/wallet/balance.js.map +0 -1
- package/dist/commands/wallet/list.d.ts +0 -3
- package/dist/commands/wallet/list.d.ts.map +0 -1
- package/dist/commands/wallet/list.js +0 -22
- package/dist/commands/wallet/list.js.map +0 -1
- package/dist/commands/wallet/send.d.ts +0 -7
- package/dist/commands/wallet/send.d.ts.map +0 -1
- package/dist/commands/wallet/send.js +0 -115
- package/dist/commands/wallet/send.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/brand.d.ts +0 -5
- package/dist/lib/brand.d.ts.map +0 -1
- package/dist/lib/brand.js +0 -15
- package/dist/lib/brand.js.map +0 -1
- package/dist/lib/cache.d.ts +0 -3
- package/dist/lib/cache.d.ts.map +0 -1
- package/dist/lib/cache.js +0 -23
- package/dist/lib/cache.js.map +0 -1
- package/dist/lib/cli-helpers.d.ts +0 -10
- package/dist/lib/cli-helpers.d.ts.map +0 -1
- package/dist/lib/cli-helpers.js +0 -20
- package/dist/lib/cli-helpers.js.map +0 -1
- package/dist/lib/concurrency.d.ts +0 -8
- package/dist/lib/concurrency.d.ts.map +0 -1
- package/dist/lib/concurrency.js +0 -26
- package/dist/lib/concurrency.js.map +0 -1
- package/dist/lib/config.d.ts +0 -7
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -9
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/errors.d.ts +0 -28
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/errors.js +0 -33
- package/dist/lib/errors.js.map +0 -1
- package/dist/lib/format.d.ts +0 -31
- package/dist/lib/format.d.ts.map +0 -1
- package/dist/lib/format.js +0 -169
- package/dist/lib/format.js.map +0 -1
- package/dist/lib/parse-evm-error.d.ts +0 -6
- package/dist/lib/parse-evm-error.d.ts.map +0 -1
- package/dist/lib/parse-evm-error.js +0 -48
- package/dist/lib/parse-evm-error.js.map +0 -1
- package/dist/lib/parseAmount.d.ts +0 -3
- package/dist/lib/parseAmount.d.ts.map +0 -1
- package/dist/lib/parseAmount.js +0 -9
- package/dist/lib/parseAmount.js.map +0 -1
- package/dist/lib/retry.d.ts +0 -20
- package/dist/lib/retry.d.ts.map +0 -1
- package/dist/lib/retry.js +0 -36
- package/dist/lib/retry.js.map +0 -1
- package/dist/lib/validation.d.ts +0 -6
- package/dist/lib/validation.d.ts.map +0 -1
- package/dist/lib/validation.js +0 -24
- package/dist/lib/validation.js.map +0 -1
- package/dist/mcp/handlers.d.ts +0 -87
- package/dist/mcp/handlers.d.ts.map +0 -1
- package/dist/mcp/handlers.js +0 -394
- package/dist/mcp/handlers.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -2
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -21
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools.d.ts +0 -3
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js +0 -227
- package/dist/mcp/tools.js.map +0 -1
- package/dist/services/api/client.d.ts +0 -34
- package/dist/services/api/client.d.ts.map +0 -1
- package/dist/services/api/client.js +0 -68
- package/dist/services/api/client.js.map +0 -1
- package/dist/services/auth/policy.d.ts +0 -2
- package/dist/services/auth/policy.d.ts.map +0 -1
- package/dist/services/auth/policy.js +0 -3
- package/dist/services/auth/policy.js.map +0 -1
- package/dist/services/auth/session.d.ts +0 -20
- package/dist/services/auth/session.d.ts.map +0 -1
- package/dist/services/auth/session.js +0 -70
- package/dist/services/auth/session.js.map +0 -1
- package/dist/services/chain/client.d.ts +0 -17493
- package/dist/services/chain/client.d.ts.map +0 -1
- package/dist/services/chain/client.js +0 -30
- package/dist/services/chain/client.js.map +0 -1
- package/dist/services/chain/constants.d.ts +0 -163
- package/dist/services/chain/constants.d.ts.map +0 -1
- package/dist/services/chain/constants.js +0 -118
- package/dist/services/chain/constants.js.map +0 -1
- package/dist/services/chain/erc20.d.ts +0 -100
- package/dist/services/chain/erc20.d.ts.map +0 -1
- package/dist/services/chain/erc20.js +0 -117
- package/dist/services/chain/erc20.js.map +0 -1
- package/dist/services/chain/nonceManager.d.ts +0 -13
- package/dist/services/chain/nonceManager.d.ts.map +0 -1
- package/dist/services/chain/nonceManager.js +0 -45
- package/dist/services/chain/nonceManager.js.map +0 -1
- package/dist/services/config/config.d.ts +0 -20
- package/dist/services/config/config.d.ts.map +0 -1
- package/dist/services/config/config.js +0 -75
- package/dist/services/config/config.js.map +0 -1
- package/dist/services/defi/aave.d.ts +0 -50
- package/dist/services/defi/aave.d.ts.map +0 -1
- package/dist/services/defi/aave.js +0 -605
- package/dist/services/defi/aave.js.map +0 -1
- package/dist/services/defi/abi/aave.d.ts +0 -304
- package/dist/services/defi/abi/aave.d.ts.map +0 -1
- package/dist/services/defi/abi/aave.js +0 -194
- package/dist/services/defi/abi/aave.js.map +0 -1
- package/dist/services/defi/constants.d.ts +0 -11
- package/dist/services/defi/constants.d.ts.map +0 -1
- package/dist/services/defi/constants.js +0 -12
- package/dist/services/defi/constants.js.map +0 -1
- package/dist/services/fibrous/abi/base.d.ts +0 -768
- package/dist/services/fibrous/abi/base.d.ts.map +0 -1
- package/dist/services/fibrous/abi/base.js +0 -984
- package/dist/services/fibrous/abi/base.js.map +0 -1
- package/dist/services/fibrous/abi/citrea.d.ts +0 -773
- package/dist/services/fibrous/abi/citrea.d.ts.map +0 -1
- package/dist/services/fibrous/abi/citrea.js +0 -990
- package/dist/services/fibrous/abi/citrea.js.map +0 -1
- package/dist/services/fibrous/abi/hyperevm.d.ts +0 -773
- package/dist/services/fibrous/abi/hyperevm.d.ts.map +0 -1
- package/dist/services/fibrous/abi/hyperevm.js +0 -990
- package/dist/services/fibrous/abi/hyperevm.js.map +0 -1
- package/dist/services/fibrous/abi/monad.d.ts +0 -773
- package/dist/services/fibrous/abi/monad.d.ts.map +0 -1
- package/dist/services/fibrous/abi/monad.js +0 -990
- package/dist/services/fibrous/abi/monad.js.map +0 -1
- package/dist/services/fibrous/balances.d.ts +0 -15
- package/dist/services/fibrous/balances.d.ts.map +0 -1
- package/dist/services/fibrous/balances.js +0 -27
- package/dist/services/fibrous/balances.js.map +0 -1
- package/dist/services/fibrous/health.d.ts +0 -12
- package/dist/services/fibrous/health.d.ts.map +0 -1
- package/dist/services/fibrous/health.js +0 -16
- package/dist/services/fibrous/health.js.map +0 -1
- package/dist/services/fibrous/route.d.ts +0 -48
- package/dist/services/fibrous/route.d.ts.map +0 -1
- package/dist/services/fibrous/route.js +0 -65
- package/dist/services/fibrous/route.js.map +0 -1
- package/dist/services/fibrous/tokens.d.ts +0 -12
- package/dist/services/fibrous/tokens.d.ts.map +0 -1
- package/dist/services/fibrous/tokens.js +0 -38
- package/dist/services/fibrous/tokens.js.map +0 -1
- package/dist/services/portfolio/portfolio.d.ts +0 -28
- package/dist/services/portfolio/portfolio.d.ts.map +0 -1
- package/dist/services/portfolio/portfolio.js +0 -116
- package/dist/services/portfolio/portfolio.js.map +0 -1
- package/dist/services/privy/account.d.ts +0 -20
- package/dist/services/privy/account.d.ts.map +0 -1
- package/dist/services/privy/account.js +0 -60
- package/dist/services/privy/account.js.map +0 -1
- package/dist/services/privy/client.d.ts +0 -2
- package/dist/services/privy/client.d.ts.map +0 -1
- package/dist/services/privy/client.js +0 -7
- package/dist/services/privy/client.js.map +0 -1
package/dist/mcp/tools.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { handleGetBalance, handleSwapTokens, handleSendTokens, handleGetTxStatus, handleGetAaveStatus, handleGetAaveMarkets, handleAaveAction, handleGetAuthStatus, handleConfigAction, handleGetPortfolio, } from "./handlers.js";
|
|
3
|
-
const ChainEnum = z.enum(["base", "citrea", "hyperevm", "monad"]);
|
|
4
|
-
function toStructured(obj) {
|
|
5
|
-
return { ...obj };
|
|
6
|
-
}
|
|
7
|
-
async function safeToolCall(fn) {
|
|
8
|
-
try {
|
|
9
|
-
const output = await fn();
|
|
10
|
-
return {
|
|
11
|
-
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
12
|
-
structuredContent: toStructured(output),
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
17
|
-
return {
|
|
18
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
19
|
-
isError: true,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export function registerAllTools(server) {
|
|
24
|
-
server.registerTool("get_auth_status", {
|
|
25
|
-
title: "Check Auth & Fibrous Status",
|
|
26
|
-
description: "Check authentication status and Fibrous API health. Always call this first to verify the session is active before performing any transaction.",
|
|
27
|
-
inputSchema: {
|
|
28
|
-
chain: ChainEnum.default("base").describe("Target chain to check Fibrous health for"),
|
|
29
|
-
},
|
|
30
|
-
outputSchema: {
|
|
31
|
-
authenticated: z.boolean(),
|
|
32
|
-
walletAddress: z.string().nullable(),
|
|
33
|
-
sessionType: z.string().nullable(),
|
|
34
|
-
chain: z.string(),
|
|
35
|
-
fibrousStatus: z.string(),
|
|
36
|
-
},
|
|
37
|
-
annotations: {
|
|
38
|
-
title: "Auth & Health Check",
|
|
39
|
-
readOnlyHint: true,
|
|
40
|
-
destructiveHint: false,
|
|
41
|
-
openWorldHint: true,
|
|
42
|
-
},
|
|
43
|
-
}, async ({ chain }) => safeToolCall(() => handleGetAuthStatus(chain)));
|
|
44
|
-
server.registerTool("get_balance", {
|
|
45
|
-
title: "Get Wallet Balance",
|
|
46
|
-
description: "Get native token and all ERC-20 token balances for the active wallet on a specific chain. Only returns tokens with non-zero balances.",
|
|
47
|
-
inputSchema: {
|
|
48
|
-
chain: ChainEnum.default("base").describe("Target blockchain network"),
|
|
49
|
-
},
|
|
50
|
-
outputSchema: {
|
|
51
|
-
wallet: z.string(),
|
|
52
|
-
chain: z.string(),
|
|
53
|
-
balances: z.record(z.string(), z.string()),
|
|
54
|
-
},
|
|
55
|
-
annotations: {
|
|
56
|
-
title: "Wallet Balance",
|
|
57
|
-
readOnlyHint: true,
|
|
58
|
-
destructiveHint: false,
|
|
59
|
-
openWorldHint: true,
|
|
60
|
-
},
|
|
61
|
-
}, async ({ chain }) => safeToolCall(() => handleGetBalance(chain)));
|
|
62
|
-
server.registerTool("swap_tokens", {
|
|
63
|
-
title: "Swap Tokens via Fibrous",
|
|
64
|
-
description: "Swap tokens using Fibrous aggregator for optimal routing. Handles ERC-20 approvals and wrap/unwrap automatically. Simulates before executing. Supported chains: Base, Citrea, HyperEVM, Monad.",
|
|
65
|
-
inputSchema: {
|
|
66
|
-
amount: z.string().describe("Amount to swap (e.g. '0.1', '100')"),
|
|
67
|
-
from_token: z.string().describe("Source token symbol (e.g. 'ETH', 'USDC', 'MON')"),
|
|
68
|
-
to_token: z.string().describe("Destination token symbol"),
|
|
69
|
-
chain: ChainEnum.default("base").describe("Target blockchain network"),
|
|
70
|
-
slippage: z
|
|
71
|
-
.number()
|
|
72
|
-
.default(0.5)
|
|
73
|
-
.describe("Slippage tolerance percentage (default: 0.5)"),
|
|
74
|
-
},
|
|
75
|
-
outputSchema: {
|
|
76
|
-
txHash: z.string(),
|
|
77
|
-
amountIn: z.string(),
|
|
78
|
-
amountOut: z.string(),
|
|
79
|
-
tokenIn: z.string(),
|
|
80
|
-
tokenOut: z.string(),
|
|
81
|
-
router: z.string(),
|
|
82
|
-
chain: z.string(),
|
|
83
|
-
},
|
|
84
|
-
annotations: {
|
|
85
|
-
title: "Token Swap",
|
|
86
|
-
readOnlyHint: false,
|
|
87
|
-
destructiveHint: true,
|
|
88
|
-
idempotentHint: false,
|
|
89
|
-
openWorldHint: true,
|
|
90
|
-
},
|
|
91
|
-
}, async ({ amount, from_token, to_token, chain, slippage }) => safeToolCall(() => handleSwapTokens(amount, from_token, to_token, chain, slippage)));
|
|
92
|
-
server.registerTool("send_tokens", {
|
|
93
|
-
title: "Send Tokens",
|
|
94
|
-
description: "Send native tokens (ETH, cBTC, HYPE, MON) or ERC-20 tokens to a recipient address. Simulates before executing. If token is omitted, the chain's native token is used.",
|
|
95
|
-
inputSchema: {
|
|
96
|
-
amount: z.string().describe("Amount to send (e.g. '0.1', '100')"),
|
|
97
|
-
recipient: z.string().describe("Recipient address (0x...)"),
|
|
98
|
-
token: z
|
|
99
|
-
.string()
|
|
100
|
-
.optional()
|
|
101
|
-
.describe("Token symbol (e.g. 'USDC', 'ETH'). Omit for native token transfer."),
|
|
102
|
-
chain: ChainEnum.default("base").describe("Target blockchain network"),
|
|
103
|
-
},
|
|
104
|
-
outputSchema: {
|
|
105
|
-
txHash: z.string(),
|
|
106
|
-
amount: z.string(),
|
|
107
|
-
token: z.string(),
|
|
108
|
-
recipient: z.string(),
|
|
109
|
-
chain: z.string(),
|
|
110
|
-
},
|
|
111
|
-
annotations: {
|
|
112
|
-
title: "Token Transfer",
|
|
113
|
-
readOnlyHint: false,
|
|
114
|
-
destructiveHint: true,
|
|
115
|
-
idempotentHint: false,
|
|
116
|
-
openWorldHint: true,
|
|
117
|
-
},
|
|
118
|
-
}, async ({ amount, recipient, token, chain }) => safeToolCall(() => handleSendTokens(amount, recipient, token, chain)));
|
|
119
|
-
server.registerTool("get_tx_status", {
|
|
120
|
-
title: "Get Transaction Status",
|
|
121
|
-
description: "Check the on-chain status and receipt of a transaction by its hash. Returns confirmation status, block number, gas used, and addresses.",
|
|
122
|
-
inputSchema: {
|
|
123
|
-
hash: z.string().describe("Transaction hash (0x...)"),
|
|
124
|
-
chain: ChainEnum.default("base").describe("Chain the transaction was submitted on"),
|
|
125
|
-
},
|
|
126
|
-
outputSchema: {
|
|
127
|
-
hash: z.string(),
|
|
128
|
-
status: z.string(),
|
|
129
|
-
blockNumber: z.string().nullable(),
|
|
130
|
-
from: z.string(),
|
|
131
|
-
to: z.string().nullable(),
|
|
132
|
-
gasUsed: z.string().nullable(),
|
|
133
|
-
chain: z.string(),
|
|
134
|
-
},
|
|
135
|
-
annotations: {
|
|
136
|
-
title: "Transaction Receipt",
|
|
137
|
-
readOnlyHint: true,
|
|
138
|
-
destructiveHint: false,
|
|
139
|
-
openWorldHint: true,
|
|
140
|
-
},
|
|
141
|
-
}, async ({ hash, chain }) => safeToolCall(() => handleGetTxStatus(hash, chain)));
|
|
142
|
-
server.registerTool("get_aave_status", {
|
|
143
|
-
title: "Aave V3 Account Status",
|
|
144
|
-
description: "Get Aave V3 position health on Base: health factor, total collateral, total debt, and available borrows in USD.",
|
|
145
|
-
inputSchema: {},
|
|
146
|
-
outputSchema: {
|
|
147
|
-
wallet: z.string(),
|
|
148
|
-
healthFactor: z.string(),
|
|
149
|
-
totalCollateralUSD: z.string(),
|
|
150
|
-
totalDebtUSD: z.string(),
|
|
151
|
-
availableBorrowsUSD: z.string(),
|
|
152
|
-
},
|
|
153
|
-
annotations: {
|
|
154
|
-
title: "Aave V3 Position",
|
|
155
|
-
readOnlyHint: true,
|
|
156
|
-
destructiveHint: false,
|
|
157
|
-
openWorldHint: true,
|
|
158
|
-
},
|
|
159
|
-
}, async () => safeToolCall(() => handleGetAaveStatus()));
|
|
160
|
-
server.registerTool("get_aave_markets", {
|
|
161
|
-
title: "Aave V3 Markets",
|
|
162
|
-
description: "List all Aave V3 reserve markets on Base with supply/borrow APY, total supply, total borrow, and LTV. No wallet required.",
|
|
163
|
-
inputSchema: {},
|
|
164
|
-
annotations: {
|
|
165
|
-
title: "Aave V3 Markets",
|
|
166
|
-
readOnlyHint: true,
|
|
167
|
-
destructiveHint: false,
|
|
168
|
-
openWorldHint: true,
|
|
169
|
-
},
|
|
170
|
-
}, async () => safeToolCall(() => handleGetAaveMarkets()));
|
|
171
|
-
server.registerTool("aave_action", {
|
|
172
|
-
title: "Aave V3 Action",
|
|
173
|
-
description: "Execute an Aave V3 action on Base: supply, borrow, repay, or withdraw. Auto-handles ETH<->WETH wrapping/unwrapping. Use 'max' as amount to repay or withdraw the full balance.",
|
|
174
|
-
inputSchema: {
|
|
175
|
-
action: z
|
|
176
|
-
.enum(["supply", "borrow", "repay", "withdraw"])
|
|
177
|
-
.describe("Aave action to perform"),
|
|
178
|
-
amount: z
|
|
179
|
-
.string()
|
|
180
|
-
.describe("Amount (e.g. '100', '0.5', 'max'). Use 'max' for full repay/withdraw."),
|
|
181
|
-
token: z.string().describe("Token symbol (e.g. 'ETH', 'USDC', 'WETH')"),
|
|
182
|
-
},
|
|
183
|
-
outputSchema: {
|
|
184
|
-
action: z.string(),
|
|
185
|
-
amount: z.string(),
|
|
186
|
-
token: z.string(),
|
|
187
|
-
txHash: z.string(),
|
|
188
|
-
chain: z.string(),
|
|
189
|
-
},
|
|
190
|
-
annotations: {
|
|
191
|
-
title: "Aave V3 Operation",
|
|
192
|
-
readOnlyHint: false,
|
|
193
|
-
destructiveHint: true,
|
|
194
|
-
idempotentHint: false,
|
|
195
|
-
openWorldHint: true,
|
|
196
|
-
},
|
|
197
|
-
}, async ({ action, amount, token }) => safeToolCall(() => handleAaveAction(action, amount, token)));
|
|
198
|
-
server.registerTool("config_action", {
|
|
199
|
-
title: "Manage RPC Configuration",
|
|
200
|
-
description: "View and modify fibx RPC configuration. Use 'set-rpc' to set a custom RPC URL for a chain (helps avoid rate limits), 'get-rpc' to view the current RPC for a chain, 'reset-rpc' to reset a chain's RPC to default (omit chain to reset all), or 'list' to show all custom RPC settings.",
|
|
201
|
-
inputSchema: {
|
|
202
|
-
action: z
|
|
203
|
-
.enum(["set-rpc", "get-rpc", "reset-rpc", "list"])
|
|
204
|
-
.describe("Config action to perform"),
|
|
205
|
-
chain: ChainEnum.optional().describe("Target chain (required for set-rpc and get-rpc)"),
|
|
206
|
-
url: z.string().optional().describe("RPC URL to set (required for set-rpc)"),
|
|
207
|
-
},
|
|
208
|
-
annotations: {
|
|
209
|
-
title: "RPC Configuration",
|
|
210
|
-
readOnlyHint: false,
|
|
211
|
-
destructiveHint: false,
|
|
212
|
-
openWorldHint: false,
|
|
213
|
-
},
|
|
214
|
-
}, async ({ action, chain, url }) => safeToolCall(() => handleConfigAction(action, chain, url)));
|
|
215
|
-
server.registerTool("get_portfolio", {
|
|
216
|
-
title: "Cross-Chain Portfolio",
|
|
217
|
-
description: "Get a complete cross-chain portfolio overview with USD valuations for all token holdings across Base, Citrea, HyperEVM, and Monad. Includes DeFi positions (Aave V3). Returns total net worth.",
|
|
218
|
-
inputSchema: {},
|
|
219
|
-
annotations: {
|
|
220
|
-
title: "Portfolio Overview",
|
|
221
|
-
readOnlyHint: true,
|
|
222
|
-
destructiveHint: false,
|
|
223
|
-
openWorldHint: true,
|
|
224
|
-
},
|
|
225
|
-
}, async () => safeToolCall(() => handleGetPortfolio()));
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/mcp/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export declare function apiLogin(email: string): Promise<{
|
|
2
|
-
success: boolean;
|
|
3
|
-
message: string;
|
|
4
|
-
}>;
|
|
5
|
-
export interface VerifyResponse {
|
|
6
|
-
userId: string;
|
|
7
|
-
walletId: string;
|
|
8
|
-
walletAddress: string;
|
|
9
|
-
token: string;
|
|
10
|
-
isExisting: boolean;
|
|
11
|
-
}
|
|
12
|
-
export declare function apiVerify(email: string, code: string): Promise<VerifyResponse>;
|
|
13
|
-
export declare function apiFindWallet(email: string, token: string): Promise<{
|
|
14
|
-
wallet: {
|
|
15
|
-
id: string;
|
|
16
|
-
address: string;
|
|
17
|
-
} | null;
|
|
18
|
-
}>;
|
|
19
|
-
export declare function apiCreateWallet(token: string, userId?: string): Promise<{
|
|
20
|
-
wallet: {
|
|
21
|
-
id: string;
|
|
22
|
-
address: string;
|
|
23
|
-
};
|
|
24
|
-
}>;
|
|
25
|
-
export declare function apiSignTransaction(walletId: string, transaction: Record<string, unknown>, token: string): Promise<{
|
|
26
|
-
signedTransaction: string;
|
|
27
|
-
}>;
|
|
28
|
-
export declare function apiSignMessage(walletId: string, message: string | Record<string, unknown>, token: string): Promise<{
|
|
29
|
-
signature: string;
|
|
30
|
-
}>;
|
|
31
|
-
export declare function apiSignTypedData(walletId: string, typedData: Record<string, unknown>, token: string): Promise<{
|
|
32
|
-
signature: string;
|
|
33
|
-
}>;
|
|
34
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/api/client.ts"],"names":[],"mappings":"AAuEA,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAE5F;AAED,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAEpF;AAED,wBAAsB,aAAa,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAAC,CAE7D;AAED,wBAAsB,eAAe,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAEtD;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,CAExC;AAED,wBAAsB,cAAc,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,KAAK,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAEhC;AAED,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAEhC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { ErrorCode, FibxError } from "../../lib/errors.js";
|
|
2
|
-
import { FIBX_API_URL_DEFAULT } from "../../lib/config.js";
|
|
3
|
-
const REQUEST_TIMEOUT_MS = 30_000; // 30 seconds
|
|
4
|
-
function getBaseUrl() {
|
|
5
|
-
return process.env.FIBX_API_URL ?? FIBX_API_URL_DEFAULT;
|
|
6
|
-
}
|
|
7
|
-
async function request(path, body, options) {
|
|
8
|
-
const url = `${getBaseUrl()}${path}`;
|
|
9
|
-
const timeout = options?.timeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
10
|
-
const headers = {
|
|
11
|
-
"Content-Type": "application/json",
|
|
12
|
-
};
|
|
13
|
-
if (options?.token) {
|
|
14
|
-
headers.Authorization = `Bearer ${options.token}`;
|
|
15
|
-
}
|
|
16
|
-
const controller = new AbortController();
|
|
17
|
-
const timer = setTimeout(() => controller.abort(), timeout);
|
|
18
|
-
try {
|
|
19
|
-
const res = await fetch(url, {
|
|
20
|
-
method: "POST",
|
|
21
|
-
headers,
|
|
22
|
-
body: JSON.stringify(body),
|
|
23
|
-
signal: controller.signal,
|
|
24
|
-
});
|
|
25
|
-
if (!res.ok) {
|
|
26
|
-
const errorBody = await res
|
|
27
|
-
.json()
|
|
28
|
-
.catch(() => ({ error: { message: res.statusText } }));
|
|
29
|
-
const msg = errorBody?.error?.message ??
|
|
30
|
-
`API error (${res.status})`;
|
|
31
|
-
throw new FibxError(ErrorCode.PRIVY_ERROR, msg);
|
|
32
|
-
}
|
|
33
|
-
return (await res.json());
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
if (error instanceof FibxError)
|
|
37
|
-
throw error;
|
|
38
|
-
if (error instanceof DOMException && error.name === "AbortError") {
|
|
39
|
-
throw new FibxError(ErrorCode.PRIVY_ERROR, `Request to ${path} timed out after ${timeout / 1000}s. Is fibx-server running?`);
|
|
40
|
-
}
|
|
41
|
-
throw new FibxError(ErrorCode.PRIVY_ERROR, `Failed to connect to fibx-server at ${getBaseUrl()}. Is the server running?`);
|
|
42
|
-
}
|
|
43
|
-
finally {
|
|
44
|
-
clearTimeout(timer);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export async function apiLogin(email) {
|
|
48
|
-
return request("/auth/login", { email });
|
|
49
|
-
}
|
|
50
|
-
export async function apiVerify(email, code) {
|
|
51
|
-
return request("/auth/verify", { email, code });
|
|
52
|
-
}
|
|
53
|
-
export async function apiFindWallet(email, token) {
|
|
54
|
-
return request("/wallet/find", { email }, { token });
|
|
55
|
-
}
|
|
56
|
-
export async function apiCreateWallet(token, userId) {
|
|
57
|
-
return request("/wallet/create", { userId }, { token });
|
|
58
|
-
}
|
|
59
|
-
export async function apiSignTransaction(walletId, transaction, token) {
|
|
60
|
-
return request("/sign/transaction", { walletId, transaction }, { token });
|
|
61
|
-
}
|
|
62
|
-
export async function apiSignMessage(walletId, message, token) {
|
|
63
|
-
return request("/sign/message", { walletId, message }, { token });
|
|
64
|
-
}
|
|
65
|
-
export async function apiSignTypedData(walletId, typedData, token) {
|
|
66
|
-
return request("/sign/typed-data", { walletId, typedData }, { token });
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/services/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/services/auth/policy.ts"],"names":[],"mappings":"AACA,wBAAgB,mBAAmB,IAAI,IAAI,CAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/services/auth/policy.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,UAAU,mBAAmB,KAAU,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
declare const sessionSchema: z.ZodObject<{
|
|
3
|
-
userId: z.ZodOptional<z.ZodString>;
|
|
4
|
-
walletId: z.ZodOptional<z.ZodString>;
|
|
5
|
-
walletAddress: z.ZodString;
|
|
6
|
-
userJwt: z.ZodOptional<z.ZodString>;
|
|
7
|
-
createdAt: z.ZodString;
|
|
8
|
-
type: z.ZodDefault<z.ZodEnum<{
|
|
9
|
-
privy: "privy";
|
|
10
|
-
"private-key": "private-key";
|
|
11
|
-
}>>;
|
|
12
|
-
privateKey: z.ZodOptional<z.ZodString>;
|
|
13
|
-
}, z.core.$strip>;
|
|
14
|
-
export type Session = z.infer<typeof sessionSchema>;
|
|
15
|
-
export declare function loadSession(): Session | null;
|
|
16
|
-
export declare function requireSession(): Session;
|
|
17
|
-
export declare function saveSession(session: Session): void;
|
|
18
|
-
export declare function clearSession(): void;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/services/auth/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,aAAa;;;;;;;;;;;iBAQjB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD,wBAAgB,WAAW,IAAI,OAAO,GAAG,IAAI,CAQ5C;AAED,wBAAgB,cAAc,IAAI,OAAO,CAkBxC;AAqBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKlD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAMnC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, unlinkSync, mkdirSync } from "node:fs";
|
|
2
|
-
import { join, dirname } from "node:path";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { paths } from "../../lib/config.js";
|
|
5
|
-
import { ErrorCode, FibxError } from "../../lib/errors.js";
|
|
6
|
-
const sessionSchema = z.object({
|
|
7
|
-
userId: z.string().optional(),
|
|
8
|
-
walletId: z.string().optional(), // Optional for private-key auth
|
|
9
|
-
walletAddress: z.string().regex(/^0x[a-fA-F0-9]{40}$/),
|
|
10
|
-
userJwt: z.string().optional(),
|
|
11
|
-
createdAt: z.string(),
|
|
12
|
-
type: z.enum(["privy", "private-key"]).default("privy"),
|
|
13
|
-
privateKey: z.string().optional(), // Only for private-key auth
|
|
14
|
-
});
|
|
15
|
-
function getSessionPath() {
|
|
16
|
-
return join(paths.config, "session.json");
|
|
17
|
-
}
|
|
18
|
-
export function loadSession() {
|
|
19
|
-
try {
|
|
20
|
-
const raw = readFileSync(getSessionPath(), "utf-8");
|
|
21
|
-
const result = sessionSchema.safeParse(JSON.parse(raw));
|
|
22
|
-
return result.success ? result.data : null;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export function requireSession() {
|
|
29
|
-
const session = loadSession();
|
|
30
|
-
if (!session) {
|
|
31
|
-
throw new FibxError(ErrorCode.NOT_AUTHENTICATED, "Not authenticated. Run `fibx auth login <email>` first.");
|
|
32
|
-
}
|
|
33
|
-
if (session.userJwt && isSessionExpired(session.userJwt)) {
|
|
34
|
-
clearSession();
|
|
35
|
-
throw new FibxError(ErrorCode.SESSION_EXPIRED, "Session expired. Run `fibx auth login <email>` again.");
|
|
36
|
-
}
|
|
37
|
-
return session;
|
|
38
|
-
}
|
|
39
|
-
// Decode JWT payload (no signature verification — client-side expiry check only).
|
|
40
|
-
function isSessionExpired(token) {
|
|
41
|
-
try {
|
|
42
|
-
const parts = token.split(".");
|
|
43
|
-
if (parts.length !== 3 || !parts[1])
|
|
44
|
-
return false;
|
|
45
|
-
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString());
|
|
46
|
-
if (!payload.exp)
|
|
47
|
-
return false;
|
|
48
|
-
// Buffer before actual expiry to avoid mid-request failures
|
|
49
|
-
const SESSION_EXPIRY_BUFFER_SECONDS = 300;
|
|
50
|
-
return Date.now() >= (payload.exp - SESSION_EXPIRY_BUFFER_SECONDS) * 1000;
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export function saveSession(session) {
|
|
57
|
-
const filePath = getSessionPath();
|
|
58
|
-
mkdirSync(dirname(filePath), { recursive: true });
|
|
59
|
-
sessionSchema.parse(session);
|
|
60
|
-
writeFileSync(filePath, JSON.stringify(session, null, 2), "utf-8");
|
|
61
|
-
}
|
|
62
|
-
export function clearSession() {
|
|
63
|
-
try {
|
|
64
|
-
unlinkSync(getSessionPath());
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// noop
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/services/auth/session.ts"],"names":[],"mappings":"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"}
|