clodds 1.1.0 → 1.2.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 +79 -47
- package/dist/agents/handlers/kalshi.d.ts +1 -2
- package/dist/agents/handlers/kalshi.js +369 -616
- package/dist/agents/handlers/kalshi.js.map +1 -1
- package/dist/agents/handlers/types.d.ts +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.js +435 -710
- package/dist/agents/index.js.map +1 -1
- package/dist/bittensor/index.d.ts +3 -2
- package/dist/bittensor/index.js +44 -5
- package/dist/bittensor/index.js.map +1 -1
- package/dist/cli/commands/gateway.js +37 -2
- package/dist/cli/commands/gateway.js.map +1 -1
- package/dist/cli/commands/index.js +3 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/index.js +6 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cron/index.d.ts +1 -1
- package/dist/cron/index.js +26 -34
- package/dist/cron/index.js.map +1 -1
- package/dist/db/index.d.ts +12 -0
- package/dist/db/index.js +51 -23
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.js +36 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/evm/index.d.ts +1 -0
- package/dist/evm/index.js +2 -0
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/pancakeswap.d.ts +55 -0
- package/dist/evm/pancakeswap.js +299 -0
- package/dist/evm/pancakeswap.js.map +1 -0
- package/dist/exchanges/lighter/index.d.ts +95 -0
- package/dist/exchanges/lighter/index.js +154 -0
- package/dist/exchanges/lighter/index.js.map +1 -0
- package/dist/gateway/server.d.ts +9 -0
- package/dist/gateway/server.js +208 -1
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/signal-bus.d.ts +2 -43
- package/dist/gateway/signal-bus.js.map +1 -1
- package/dist/index.js +40 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/security.d.ts +44 -0
- package/dist/mcp/security.js +143 -0
- package/dist/mcp/security.js.map +1 -0
- package/dist/mcp/server.js +27 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/services/alt-data/index.d.ts +1 -1
- package/dist/sessions/index.js +66 -7
- package/dist/sessions/index.js.map +1 -1
- package/dist/signal-router/router.d.ts +1 -1
- package/dist/signal-router/types.d.ts +1 -1
- package/dist/skills/bundled/arbitrage/index.js +96 -63
- package/dist/skills/bundled/arbitrage/index.js.map +1 -1
- package/dist/skills/bundled/betfair/index.js +121 -83
- package/dist/skills/bundled/betfair/index.js.map +1 -1
- package/dist/skills/bundled/bridge/index.js +42 -13
- package/dist/skills/bundled/bridge/index.js.map +1 -1
- package/dist/skills/bundled/crypto-hft/index.js +267 -226
- package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
- package/dist/skills/bundled/drift/index.js +83 -52
- package/dist/skills/bundled/drift/index.js.map +1 -1
- package/dist/skills/bundled/embeddings/index.js +87 -49
- package/dist/skills/bundled/embeddings/index.js.map +1 -1
- package/dist/skills/bundled/execution/index.js +47 -25
- package/dist/skills/bundled/execution/index.js.map +1 -1
- package/dist/skills/bundled/feeds/index.js +45 -25
- package/dist/skills/bundled/feeds/index.js.map +1 -1
- package/dist/skills/bundled/hyperliquid/index.js +91 -45
- package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
- package/dist/skills/bundled/integrations/index.js +2 -1
- package/dist/skills/bundled/integrations/index.js.map +1 -1
- package/dist/skills/bundled/kamino/index.js +71 -43
- package/dist/skills/bundled/kamino/index.js.map +1 -1
- package/dist/skills/bundled/lighter/index.d.ts +19 -0
- package/dist/skills/bundled/lighter/index.js +385 -0
- package/dist/skills/bundled/lighter/index.js.map +1 -0
- package/dist/skills/bundled/marginfi/index.d.ts +21 -0
- package/dist/skills/bundled/marginfi/index.js +387 -0
- package/dist/skills/bundled/marginfi/index.js.map +1 -0
- package/dist/skills/bundled/opinion/index.js +44 -25
- package/dist/skills/bundled/opinion/index.js.map +1 -1
- package/dist/skills/bundled/pancakeswap/index.d.ts +19 -0
- package/dist/skills/bundled/pancakeswap/index.js +260 -0
- package/dist/skills/bundled/pancakeswap/index.js.map +1 -0
- package/dist/skills/bundled/setup/index.d.ts +16 -0
- package/dist/skills/bundled/setup/index.js +427 -0
- package/dist/skills/bundled/setup/index.js.map +1 -0
- package/dist/skills/bundled/solend/index.d.ts +22 -0
- package/dist/skills/bundled/solend/index.js +401 -0
- package/dist/skills/bundled/solend/index.js.map +1 -0
- package/dist/skills/bundled/trading-evm/index.js +42 -11
- package/dist/skills/bundled/trading-evm/index.js.map +1 -1
- package/dist/skills/errors.d.ts +20 -0
- package/dist/skills/errors.js +84 -0
- package/dist/skills/errors.js.map +1 -0
- package/dist/skills/executor.d.ts +1 -1
- package/dist/skills/executor.js +515 -41
- package/dist/skills/executor.js.map +1 -1
- package/dist/skills/help.d.ts +33 -0
- package/dist/skills/help.js +73 -0
- package/dist/skills/help.js.map +1 -0
- package/dist/solana/marginfi.d.ts +112 -0
- package/dist/solana/marginfi.js +340 -0
- package/dist/solana/marginfi.js.map +1 -0
- package/dist/solana/solend.d.ts +120 -0
- package/dist/solana/solend.js +261 -0
- package/dist/solana/solend.js.map +1 -0
- package/dist/trading/bridge.d.ts +1 -1
- package/dist/trading/position-bridge.d.ts +1 -1
- package/dist/types/signal-bus.d.ts +48 -0
- package/dist/types/signal-bus.js +9 -0
- package/dist/types/signal-bus.js.map +1 -0
- package/dist/types.d.ts +17 -0
- package/dist/utils/json-utils.d.ts +8 -8
- package/package.json +8 -6
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Solend CLI Skill — Solana Lending & Borrowing (10 Commands)
|
|
4
|
+
*
|
|
5
|
+
* /solend deposit <amount> <token> - Deposit collateral
|
|
6
|
+
* /solend withdraw <amount|all> <token> - Withdraw collateral
|
|
7
|
+
* /solend borrow <amount> <token> - Borrow assets
|
|
8
|
+
* /solend repay <amount|all> <token> - Repay borrowed assets
|
|
9
|
+
* /solend obligation - View your positions
|
|
10
|
+
* /solend health - Check health factor
|
|
11
|
+
* /solend reserves - List reserves
|
|
12
|
+
* /solend rates - View supply/borrow rates
|
|
13
|
+
* /solend markets - List lending markets
|
|
14
|
+
* /solend help - Show this help
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.execute = execute;
|
|
51
|
+
const help_1 = require("../../help");
|
|
52
|
+
const errors_1 = require("../../errors");
|
|
53
|
+
const getSolanaModules = async () => {
|
|
54
|
+
const [wallet, solend, tokenlist] = await Promise.all([
|
|
55
|
+
Promise.resolve().then(() => __importStar(require('../../../solana/wallet'))),
|
|
56
|
+
Promise.resolve().then(() => __importStar(require('../../../solana/solend'))),
|
|
57
|
+
Promise.resolve().then(() => __importStar(require('../../../solana/tokenlist'))),
|
|
58
|
+
]);
|
|
59
|
+
return { wallet, solend, tokenlist };
|
|
60
|
+
};
|
|
61
|
+
function isConfigured() {
|
|
62
|
+
return !!(process.env.SOLANA_PRIVATE_KEY || process.env.SOLANA_KEYPAIR_PATH);
|
|
63
|
+
}
|
|
64
|
+
// ============================================
|
|
65
|
+
// HANDLERS
|
|
66
|
+
// ============================================
|
|
67
|
+
async function handleDeposit(args) {
|
|
68
|
+
if (!isConfigured()) {
|
|
69
|
+
return 'Solend not configured. Set SOLANA_PRIVATE_KEY.';
|
|
70
|
+
}
|
|
71
|
+
if (args.length < 2) {
|
|
72
|
+
return 'Usage: /solend deposit <amount> <token>';
|
|
73
|
+
}
|
|
74
|
+
const amount = args[0];
|
|
75
|
+
const token = args.slice(1).join(' ');
|
|
76
|
+
try {
|
|
77
|
+
const { wallet, solend, tokenlist } = await getSolanaModules();
|
|
78
|
+
const keypair = wallet.loadSolanaKeypair();
|
|
79
|
+
const connection = wallet.getSolanaConnection();
|
|
80
|
+
const [mint] = await tokenlist.resolveTokenMints([token]);
|
|
81
|
+
if (!mint) {
|
|
82
|
+
return `Token not found: ${token}`;
|
|
83
|
+
}
|
|
84
|
+
const tokens = await tokenlist.getTokenList();
|
|
85
|
+
const tokenInfo = tokens.find(t => t.address === mint);
|
|
86
|
+
const decimals = tokenInfo?.decimals || 6;
|
|
87
|
+
const amountLamports = (parseFloat(amount) * Math.pow(10, decimals)).toString();
|
|
88
|
+
const result = await solend.solendDeposit(connection, keypair, {
|
|
89
|
+
reserveMint: mint,
|
|
90
|
+
amount: amountLamports,
|
|
91
|
+
});
|
|
92
|
+
return `**Solend Deposit**\n\n` +
|
|
93
|
+
`Deposited: ${amount} ${result.symbol || token}\n` +
|
|
94
|
+
`TX: \`${result.signature}\``;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return (0, errors_1.wrapSkillError)('Solend', 'deposit', error);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function handleWithdraw(args) {
|
|
101
|
+
if (!isConfigured()) {
|
|
102
|
+
return 'Solend not configured. Set SOLANA_PRIVATE_KEY.';
|
|
103
|
+
}
|
|
104
|
+
if (args.length < 2) {
|
|
105
|
+
return 'Usage: /solend withdraw <amount|all> <token>';
|
|
106
|
+
}
|
|
107
|
+
const amount = args[0];
|
|
108
|
+
const token = args.slice(1).join(' ');
|
|
109
|
+
const withdrawAll = amount.toLowerCase() === 'all';
|
|
110
|
+
try {
|
|
111
|
+
const { wallet, solend, tokenlist } = await getSolanaModules();
|
|
112
|
+
const keypair = wallet.loadSolanaKeypair();
|
|
113
|
+
const connection = wallet.getSolanaConnection();
|
|
114
|
+
const [mint] = await tokenlist.resolveTokenMints([token]);
|
|
115
|
+
if (!mint) {
|
|
116
|
+
return `Token not found: ${token}`;
|
|
117
|
+
}
|
|
118
|
+
const tokens = await tokenlist.getTokenList();
|
|
119
|
+
const tokenInfo = tokens.find(t => t.address === mint);
|
|
120
|
+
const decimals = tokenInfo?.decimals || 6;
|
|
121
|
+
const amountLamports = withdrawAll ? '0' : (parseFloat(amount) * Math.pow(10, decimals)).toString();
|
|
122
|
+
const result = await solend.solendWithdraw(connection, keypair, {
|
|
123
|
+
reserveMint: mint,
|
|
124
|
+
amount: amountLamports,
|
|
125
|
+
withdrawAll,
|
|
126
|
+
});
|
|
127
|
+
return `**Solend Withdraw**\n\n` +
|
|
128
|
+
`Withdrew: ${withdrawAll ? 'ALL' : amount} ${result.symbol || token}\n` +
|
|
129
|
+
`TX: \`${result.signature}\``;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
return (0, errors_1.wrapSkillError)('Solend', 'withdraw', error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function handleBorrow(args) {
|
|
136
|
+
if (!isConfigured()) {
|
|
137
|
+
return 'Solend not configured. Set SOLANA_PRIVATE_KEY.';
|
|
138
|
+
}
|
|
139
|
+
if (args.length < 2) {
|
|
140
|
+
return 'Usage: /solend borrow <amount> <token>';
|
|
141
|
+
}
|
|
142
|
+
const amount = args[0];
|
|
143
|
+
const token = args.slice(1).join(' ');
|
|
144
|
+
try {
|
|
145
|
+
const { wallet, solend, tokenlist } = await getSolanaModules();
|
|
146
|
+
const keypair = wallet.loadSolanaKeypair();
|
|
147
|
+
const connection = wallet.getSolanaConnection();
|
|
148
|
+
const [mint] = await tokenlist.resolveTokenMints([token]);
|
|
149
|
+
if (!mint) {
|
|
150
|
+
return `Token not found: ${token}`;
|
|
151
|
+
}
|
|
152
|
+
const tokens = await tokenlist.getTokenList();
|
|
153
|
+
const tokenInfo = tokens.find(t => t.address === mint);
|
|
154
|
+
const decimals = tokenInfo?.decimals || 6;
|
|
155
|
+
const amountLamports = (parseFloat(amount) * Math.pow(10, decimals)).toString();
|
|
156
|
+
const result = await solend.solendBorrow(connection, keypair, {
|
|
157
|
+
reserveMint: mint,
|
|
158
|
+
amount: amountLamports,
|
|
159
|
+
});
|
|
160
|
+
return `**Solend Borrow**\n\n` +
|
|
161
|
+
`Borrowed: ${amount} ${result.symbol || token}\n` +
|
|
162
|
+
`TX: \`${result.signature}\``;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
return (0, errors_1.wrapSkillError)('Solend', 'borrow', error);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async function handleRepay(args) {
|
|
169
|
+
if (!isConfigured()) {
|
|
170
|
+
return 'Solend not configured. Set SOLANA_PRIVATE_KEY.';
|
|
171
|
+
}
|
|
172
|
+
if (args.length < 2) {
|
|
173
|
+
return 'Usage: /solend repay <amount|all> <token>';
|
|
174
|
+
}
|
|
175
|
+
const amount = args[0];
|
|
176
|
+
const token = args.slice(1).join(' ');
|
|
177
|
+
const repayAll = amount.toLowerCase() === 'all';
|
|
178
|
+
try {
|
|
179
|
+
const { wallet, solend, tokenlist } = await getSolanaModules();
|
|
180
|
+
const keypair = wallet.loadSolanaKeypair();
|
|
181
|
+
const connection = wallet.getSolanaConnection();
|
|
182
|
+
const [mint] = await tokenlist.resolveTokenMints([token]);
|
|
183
|
+
if (!mint) {
|
|
184
|
+
return `Token not found: ${token}`;
|
|
185
|
+
}
|
|
186
|
+
const tokens = await tokenlist.getTokenList();
|
|
187
|
+
const tokenInfo = tokens.find(t => t.address === mint);
|
|
188
|
+
const decimals = tokenInfo?.decimals || 6;
|
|
189
|
+
const amountLamports = repayAll ? '0' : (parseFloat(amount) * Math.pow(10, decimals)).toString();
|
|
190
|
+
const result = await solend.solendRepay(connection, keypair, {
|
|
191
|
+
reserveMint: mint,
|
|
192
|
+
amount: amountLamports,
|
|
193
|
+
repayAll,
|
|
194
|
+
});
|
|
195
|
+
return `**Solend Repay**\n\n` +
|
|
196
|
+
`Repaid: ${repayAll ? 'ALL' : amount} ${result.symbol || token}\n` +
|
|
197
|
+
`TX: \`${result.signature}\``;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
return (0, errors_1.wrapSkillError)('Solend', 'repay', error);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function handleObligation() {
|
|
204
|
+
if (!isConfigured()) {
|
|
205
|
+
return 'Solend not configured. Set SOLANA_PRIVATE_KEY.';
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
const { wallet, solend } = await getSolanaModules();
|
|
209
|
+
const keypair = wallet.loadSolanaKeypair();
|
|
210
|
+
const connection = wallet.getSolanaConnection();
|
|
211
|
+
const obligation = await solend.getSolendObligation(connection, keypair);
|
|
212
|
+
if (!obligation) {
|
|
213
|
+
return 'No active Solend position found.';
|
|
214
|
+
}
|
|
215
|
+
let output = `**Solend Position**\n\n`;
|
|
216
|
+
output += `Address: \`${obligation.address}\`\n`;
|
|
217
|
+
output += `Health Factor: **${obligation.healthFactor === Infinity ? '∞' : obligation.healthFactor.toFixed(2)}**\n`;
|
|
218
|
+
output += `LTV: ${obligation.ltv.toFixed(1)}%\n\n`;
|
|
219
|
+
if (obligation.deposits.length > 0) {
|
|
220
|
+
output += `**Deposits** ($${parseFloat(obligation.totalDepositValue).toFixed(2)})\n`;
|
|
221
|
+
for (const dep of obligation.deposits) {
|
|
222
|
+
output += ` ${dep.symbol}: ${dep.amount} ($${parseFloat(dep.amountUsd).toFixed(2)})\n`;
|
|
223
|
+
}
|
|
224
|
+
output += '\n';
|
|
225
|
+
}
|
|
226
|
+
if (obligation.borrows.length > 0) {
|
|
227
|
+
output += `**Borrows** ($${parseFloat(obligation.totalBorrowValue).toFixed(2)})\n`;
|
|
228
|
+
for (const bor of obligation.borrows) {
|
|
229
|
+
output += ` ${bor.symbol}: ${bor.amount} ($${parseFloat(bor.amountUsd).toFixed(2)})\n`;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return output;
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
return (0, errors_1.wrapSkillError)('Solend', 'obligation', error);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
async function handleHealth() {
|
|
239
|
+
if (!isConfigured()) {
|
|
240
|
+
return 'Solend not configured. Set SOLANA_PRIVATE_KEY.';
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
const { wallet, solend } = await getSolanaModules();
|
|
244
|
+
const keypair = wallet.loadSolanaKeypair();
|
|
245
|
+
const connection = wallet.getSolanaConnection();
|
|
246
|
+
const obligation = await solend.getSolendHealth(connection, keypair);
|
|
247
|
+
if (!obligation) {
|
|
248
|
+
return 'No active Solend position found.';
|
|
249
|
+
}
|
|
250
|
+
const hf = obligation.healthFactor;
|
|
251
|
+
let riskLevel = 'SAFE';
|
|
252
|
+
if (hf < 1.1)
|
|
253
|
+
riskLevel = 'CRITICAL';
|
|
254
|
+
else if (hf < 1.25)
|
|
255
|
+
riskLevel = 'HIGH';
|
|
256
|
+
else if (hf < 1.5)
|
|
257
|
+
riskLevel = 'MEDIUM';
|
|
258
|
+
else if (hf < 2)
|
|
259
|
+
riskLevel = 'LOW';
|
|
260
|
+
return `**Solend Health Check**\n\n` +
|
|
261
|
+
`Health Factor: **${hf === Infinity ? '∞' : hf.toFixed(2)}**\n` +
|
|
262
|
+
`Risk Level: **${riskLevel}**\n` +
|
|
263
|
+
`LTV: ${obligation.ltv.toFixed(1)}%\n` +
|
|
264
|
+
`Borrow Limit: $${parseFloat(obligation.borrowLimit).toFixed(2)}\n` +
|
|
265
|
+
`Liquidation Threshold: $${parseFloat(obligation.liquidationThreshold).toFixed(2)}\n\n` +
|
|
266
|
+
`Total Deposits: $${parseFloat(obligation.totalDepositValue).toFixed(2)}\n` +
|
|
267
|
+
`Total Borrows: $${parseFloat(obligation.totalBorrowValue).toFixed(2)}`;
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
return (0, errors_1.wrapSkillError)('Solend', 'health check', error);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
async function handleReserves() {
|
|
274
|
+
try {
|
|
275
|
+
const { wallet, solend } = await getSolanaModules();
|
|
276
|
+
const connection = wallet.getSolanaConnection();
|
|
277
|
+
const reserves = await solend.getSolendReserves(connection);
|
|
278
|
+
if (reserves.length === 0) {
|
|
279
|
+
return 'No reserves found.';
|
|
280
|
+
}
|
|
281
|
+
let output = `**Solend Reserves** (${reserves.length})\n\n`;
|
|
282
|
+
for (const res of reserves.slice(0, 15)) {
|
|
283
|
+
output += `**${res.symbol}**\n`;
|
|
284
|
+
output += ` Supply APY: ${res.depositRate.toFixed(2)}% | Borrow APY: ${res.borrowRate.toFixed(2)}%\n`;
|
|
285
|
+
output += ` Utilization: ${res.utilizationRate.toFixed(1)}% | LTV: ${res.ltv.toFixed(0)}%\n`;
|
|
286
|
+
}
|
|
287
|
+
if (reserves.length > 15) {
|
|
288
|
+
output += `\n... and ${reserves.length - 15} more`;
|
|
289
|
+
}
|
|
290
|
+
return output;
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
return (0, errors_1.wrapSkillError)('Solend', 'reserves', error);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
async function handleRates() {
|
|
297
|
+
try {
|
|
298
|
+
const { wallet, solend } = await getSolanaModules();
|
|
299
|
+
const connection = wallet.getSolanaConnection();
|
|
300
|
+
const reserves = await solend.getSolendReserves(connection);
|
|
301
|
+
if (reserves.length === 0) {
|
|
302
|
+
return 'No reserves found.';
|
|
303
|
+
}
|
|
304
|
+
let output = `**Solend Interest Rates**\n\n`;
|
|
305
|
+
output += `| Token | Supply APY | Borrow APY | Util |\n`;
|
|
306
|
+
output += `|-------|------------|------------|------|\n`;
|
|
307
|
+
for (const res of reserves.slice(0, 20)) {
|
|
308
|
+
output += `| ${res.symbol.padEnd(5)} | ${res.depositRate.toFixed(2).padStart(9)}% | ${res.borrowRate.toFixed(2).padStart(9)}% | ${res.utilizationRate.toFixed(0).padStart(3)}% |\n`;
|
|
309
|
+
}
|
|
310
|
+
return output;
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
return (0, errors_1.wrapSkillError)('Solend', 'rates', error);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
async function handleMarkets() {
|
|
317
|
+
return `**Solend Lending Markets**\n\n` +
|
|
318
|
+
`**Main Pool**\n` +
|
|
319
|
+
`Address: \`DdZR6zRFiUt4S5mg7AV1uKB2z1116sp1ObwbKhmYwjGh\`\n` +
|
|
320
|
+
`Use /solend reserves to see all assets in this pool.\n\n` +
|
|
321
|
+
`Solend also supports isolated pools for specific asset pairs.\n` +
|
|
322
|
+
`Visit https://solend.fi for the full list.`;
|
|
323
|
+
}
|
|
324
|
+
// ============================================
|
|
325
|
+
// MAIN HANDLER
|
|
326
|
+
// ============================================
|
|
327
|
+
async function execute(args) {
|
|
328
|
+
const parts = args.trim().split(/\s+/);
|
|
329
|
+
const command = parts[0]?.toLowerCase() || 'help';
|
|
330
|
+
const rest = parts.slice(1);
|
|
331
|
+
switch (command) {
|
|
332
|
+
case 'deposit':
|
|
333
|
+
return handleDeposit(rest);
|
|
334
|
+
case 'withdraw':
|
|
335
|
+
return handleWithdraw(rest);
|
|
336
|
+
case 'borrow':
|
|
337
|
+
return handleBorrow(rest);
|
|
338
|
+
case 'repay':
|
|
339
|
+
return handleRepay(rest);
|
|
340
|
+
case 'obligation':
|
|
341
|
+
case 'position':
|
|
342
|
+
case 'pos':
|
|
343
|
+
return handleObligation();
|
|
344
|
+
case 'health':
|
|
345
|
+
return handleHealth();
|
|
346
|
+
case 'reserves':
|
|
347
|
+
return handleReserves();
|
|
348
|
+
case 'rates':
|
|
349
|
+
return handleRates();
|
|
350
|
+
case 'markets':
|
|
351
|
+
case 'pools':
|
|
352
|
+
return handleMarkets();
|
|
353
|
+
case 'help':
|
|
354
|
+
default:
|
|
355
|
+
return (0, help_1.formatHelp)({
|
|
356
|
+
name: 'Solend',
|
|
357
|
+
emoji: '💰',
|
|
358
|
+
description: 'Solana lending and borrowing on Solend',
|
|
359
|
+
sections: [
|
|
360
|
+
{
|
|
361
|
+
title: 'Lending',
|
|
362
|
+
commands: [
|
|
363
|
+
{ cmd: '/solend deposit <amount> <token>', description: 'Deposit collateral' },
|
|
364
|
+
{ cmd: '/solend withdraw <amount|all> <token>', description: 'Withdraw collateral' },
|
|
365
|
+
{ cmd: '/solend borrow <amount> <token>', description: 'Borrow assets' },
|
|
366
|
+
{ cmd: '/solend repay <amount|all> <token>', description: 'Repay borrowed assets' },
|
|
367
|
+
{ cmd: '/solend obligation', description: 'View your positions' },
|
|
368
|
+
{ cmd: '/solend health', description: 'Check health factor' },
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
title: 'Info',
|
|
373
|
+
commands: [
|
|
374
|
+
{ cmd: '/solend reserves', description: 'List available reserves' },
|
|
375
|
+
{ cmd: '/solend rates', description: 'View supply/borrow rates' },
|
|
376
|
+
{ cmd: '/solend markets', description: 'List lending markets' },
|
|
377
|
+
],
|
|
378
|
+
},
|
|
379
|
+
],
|
|
380
|
+
examples: [
|
|
381
|
+
'/solend deposit 100 USDC',
|
|
382
|
+
'/solend borrow 50 SOL',
|
|
383
|
+
'/solend health',
|
|
384
|
+
'/solend rates',
|
|
385
|
+
],
|
|
386
|
+
seeAlso: [
|
|
387
|
+
{ cmd: '/kamino', description: 'Kamino Finance lending' },
|
|
388
|
+
{ cmd: '/marginfi', description: 'MarginFi lending' },
|
|
389
|
+
{ cmd: '/jup', description: 'Jupiter aggregator' },
|
|
390
|
+
{ cmd: '/bags', description: 'Wallet balances' },
|
|
391
|
+
],
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
exports.default = {
|
|
396
|
+
name: 'solend',
|
|
397
|
+
description: 'Solend - Solana lending and borrowing',
|
|
398
|
+
commands: ['/solend'],
|
|
399
|
+
handle: execute,
|
|
400
|
+
};
|
|
401
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/solend/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,17 +44,48 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
44
44
|
};
|
|
45
45
|
})();
|
|
46
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
const help_js_1 = require("../../help.js");
|
|
48
|
+
const errors_js_1 = require("../../errors.js");
|
|
47
49
|
function helpText() {
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
return (0, help_js_1.formatHelp)({
|
|
51
|
+
name: 'EVM Trading',
|
|
52
|
+
description: 'DEX swaps, transfers, and multi-chain balances on EVM chains.',
|
|
53
|
+
sections: [
|
|
54
|
+
{
|
|
55
|
+
title: 'Trading',
|
|
56
|
+
commands: [
|
|
57
|
+
{ cmd: '/trading-evm swap <token> <amount> [--chain <chain>]', description: 'DEX swap (Odos/1inch/Uniswap)' },
|
|
58
|
+
{ cmd: '/trading-evm approve <token> <spender>', description: 'Token approval' },
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
title: 'Account',
|
|
63
|
+
commands: [
|
|
64
|
+
{ cmd: '/trading-evm balance [chain]', description: 'Check balances (single chain or all)' },
|
|
65
|
+
{ cmd: '/trading-evm transfer <to> <amount> [token]', description: 'Transfer tokens' },
|
|
66
|
+
{ cmd: '/trading-evm wallet', description: 'Wallet info' },
|
|
67
|
+
{ cmd: '/trading-evm chains', description: 'Supported chains' },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
examples: [
|
|
72
|
+
'/trading-evm swap 0xA0b8...3E8 1.5 --chain polygon',
|
|
73
|
+
'/trading-evm balance all',
|
|
74
|
+
'/trading-evm transfer 0xDEAD...BEEF 0.1 ETH',
|
|
75
|
+
],
|
|
76
|
+
envVars: [
|
|
77
|
+
{ name: 'EVM_PRIVATE_KEY', description: 'Private key for signing transactions', required: true },
|
|
78
|
+
],
|
|
79
|
+
seeAlso: [
|
|
80
|
+
{ cmd: '/cake', description: 'PancakeSwap trading' },
|
|
81
|
+
{ cmd: '/bridge', description: 'Cross-chain bridging' },
|
|
82
|
+
{ cmd: '/bags', description: 'Portfolio overview' },
|
|
83
|
+
],
|
|
84
|
+
notes: [
|
|
85
|
+
'Shortcuts: /evm-trade',
|
|
86
|
+
'Supported chains: ethereum, polygon, arbitrum, optimism, base, avalanche, bsc',
|
|
87
|
+
],
|
|
88
|
+
});
|
|
58
89
|
}
|
|
59
90
|
async function execute(args) {
|
|
60
91
|
const parts = args.trim().split(/\s+/);
|
|
@@ -290,7 +321,7 @@ Tx: ${result.txHash || 'N/A'}${result.error ? `\nError: ${result.error}` : ''}`;
|
|
|
290
321
|
catch (err) {
|
|
291
322
|
if (cmd === 'help' || cmd === '')
|
|
292
323
|
return helpText();
|
|
293
|
-
return
|
|
324
|
+
return (0, errors_js_1.wrapSkillError)('EVM Trading', cmd || 'command', err);
|
|
294
325
|
}
|
|
295
326
|
}
|
|
296
327
|
exports.default = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/trading-evm/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,SAAS,QAAQ;IACf,OAAO
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/trading-evm/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Error Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides contextual error messages with guidance for users.
|
|
5
|
+
* Skills call skillError() or wrapSkillError() to produce helpful output.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Wrap an error with contextual hints and the skill name.
|
|
9
|
+
*/
|
|
10
|
+
export declare function wrapSkillError(skillName: string, action: string, error: unknown): string;
|
|
11
|
+
/**
|
|
12
|
+
* Create a formatted error for a skill with optional suggestions.
|
|
13
|
+
*/
|
|
14
|
+
export declare function skillError(opts: {
|
|
15
|
+
skill: string;
|
|
16
|
+
action: string;
|
|
17
|
+
message: string;
|
|
18
|
+
tip?: string;
|
|
19
|
+
seeAlso?: string[];
|
|
20
|
+
}): string;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Skill Error Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Provides contextual error messages with guidance for users.
|
|
6
|
+
* Skills call skillError() or wrapSkillError() to produce helpful output.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.wrapSkillError = wrapSkillError;
|
|
10
|
+
exports.skillError = skillError;
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// ERROR CONTEXT HINTS
|
|
13
|
+
// =============================================================================
|
|
14
|
+
const ERROR_HINTS = [
|
|
15
|
+
// Network errors
|
|
16
|
+
{ pattern: /fetch failed|ECONNREFUSED|ENOTFOUND|ETIMEDOUT|network/i, hint: 'Check your internet connection or the service may be down. Try again in a moment.' },
|
|
17
|
+
{ pattern: /rate limit|429|too many requests/i, hint: 'You\'re being rate-limited. Wait a moment before retrying.' },
|
|
18
|
+
{ pattern: /503|502|500|service unavailable|internal server/i, hint: 'The service is temporarily unavailable. Try again shortly.' },
|
|
19
|
+
// Auth errors
|
|
20
|
+
{ pattern: /unauthorized|401|403|forbidden|invalid.*key|invalid.*token/i, hint: 'Check that your API key/credentials are correct and not expired.' },
|
|
21
|
+
{ pattern: /insufficient.*balance|insufficient.*funds/i, hint: 'Your wallet balance is too low for this transaction.' },
|
|
22
|
+
// Input errors
|
|
23
|
+
{ pattern: /invalid.*address|invalid.*token|not.*found.*token/i, hint: 'Double-check the token symbol or address. Use the full contract address if the symbol isn\'t recognized.' },
|
|
24
|
+
{ pattern: /slippage|price.*impact|price.*moved/i, hint: 'Price moved during execution. Try a smaller amount or increase slippage tolerance.' },
|
|
25
|
+
{ pattern: /gas.*estimation|gas.*required|out of gas/i, hint: 'Transaction would fail on-chain. You may need more native tokens for gas or the trade parameters are invalid.' },
|
|
26
|
+
// Config errors
|
|
27
|
+
{ pattern: /private.*key|EVM_PRIVATE_KEY|SOLANA_PRIVATE_KEY/i, hint: 'Set the required private key in your environment: export EVM_PRIVATE_KEY="0x..."' },
|
|
28
|
+
{ pattern: /HYPERLIQUID_PRIVATE_KEY/i, hint: 'Set HYPERLIQUID_PRIVATE_KEY in your environment or .env file.' },
|
|
29
|
+
// Chain errors
|
|
30
|
+
{ pattern: /chain.*id|wrong.*chain|unsupported.*chain|unknown.*chain/i, hint: 'Check that you\'re using a supported chain. Common options: bsc, eth, arb, base, polygon.' },
|
|
31
|
+
{ pattern: /nonce|replacement.*underpriced/i, hint: 'A previous transaction may be pending. Wait for it to confirm or speed it up.' },
|
|
32
|
+
];
|
|
33
|
+
// =============================================================================
|
|
34
|
+
// PUBLIC API
|
|
35
|
+
// =============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Wrap an error with contextual hints and the skill name.
|
|
38
|
+
*/
|
|
39
|
+
function wrapSkillError(skillName, action, error) {
|
|
40
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
+
const hint = getHint(message);
|
|
42
|
+
const lines = [`**${skillName}** — ${action} failed`];
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push(`Error: ${truncate(message, 200)}`);
|
|
45
|
+
if (hint) {
|
|
46
|
+
lines.push('');
|
|
47
|
+
lines.push(`Tip: ${hint}`);
|
|
48
|
+
}
|
|
49
|
+
return lines.join('\n');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a formatted error for a skill with optional suggestions.
|
|
53
|
+
*/
|
|
54
|
+
function skillError(opts) {
|
|
55
|
+
const lines = [`**${opts.skill}** — ${opts.action} failed`];
|
|
56
|
+
lines.push('');
|
|
57
|
+
lines.push(`Error: ${opts.message}`);
|
|
58
|
+
const hint = opts.tip || getHint(opts.message);
|
|
59
|
+
if (hint) {
|
|
60
|
+
lines.push('');
|
|
61
|
+
lines.push(`Tip: ${hint}`);
|
|
62
|
+
}
|
|
63
|
+
if (opts.seeAlso && opts.seeAlso.length > 0) {
|
|
64
|
+
lines.push('');
|
|
65
|
+
lines.push(`See also: ${opts.seeAlso.join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
return lines.join('\n');
|
|
68
|
+
}
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// INTERNALS
|
|
71
|
+
// =============================================================================
|
|
72
|
+
function getHint(message) {
|
|
73
|
+
for (const { pattern, hint } of ERROR_HINTS) {
|
|
74
|
+
if (pattern.test(message))
|
|
75
|
+
return hint;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
function truncate(s, max) {
|
|
80
|
+
if (s.length <= max)
|
|
81
|
+
return s;
|
|
82
|
+
return s.slice(0, max - 3) + '...';
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/skills/errors.ts"],"names":[],"mappings":"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"}
|