amped-defi 1.0.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 +757 -0
- package/dist/__mocks__/@sodax/sdk.d.ts +24 -0
- package/dist/__mocks__/@sodax/sdk.d.ts.map +1 -0
- package/dist/__mocks__/@sodax/sdk.js +24 -0
- package/dist/__mocks__/@sodax/sdk.js.map +1 -0
- package/dist/__tests__/setup.d.ts +4 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +32 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +281 -0
- package/dist/index.js.map +1 -0
- package/dist/policy/policyEngine.d.ts +119 -0
- package/dist/policy/policyEngine.d.ts.map +1 -0
- package/dist/policy/policyEngine.js +322 -0
- package/dist/policy/policyEngine.js.map +1 -0
- package/dist/providers/spokeProviderFactory.d.ts +38 -0
- package/dist/providers/spokeProviderFactory.d.ts.map +1 -0
- package/dist/providers/spokeProviderFactory.js +212 -0
- package/dist/providers/spokeProviderFactory.js.map +1 -0
- package/dist/sodax/client.d.ts +34 -0
- package/dist/sodax/client.d.ts.map +1 -0
- package/dist/sodax/client.js +99 -0
- package/dist/sodax/client.js.map +1 -0
- package/dist/tools/bridge.d.ts +105 -0
- package/dist/tools/bridge.d.ts.map +1 -0
- package/dist/tools/bridge.js +334 -0
- package/dist/tools/bridge.js.map +1 -0
- package/dist/tools/discovery.d.ts +141 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +777 -0
- package/dist/tools/discovery.js.map +1 -0
- package/dist/tools/moneyMarket.d.ts +227 -0
- package/dist/tools/moneyMarket.d.ts.map +1 -0
- package/dist/tools/moneyMarket.js +867 -0
- package/dist/tools/moneyMarket.js.map +1 -0
- package/dist/tools/portfolio.d.ts +43 -0
- package/dist/tools/portfolio.d.ts.map +1 -0
- package/dist/tools/portfolio.js +538 -0
- package/dist/tools/portfolio.js.map +1 -0
- package/dist/tools/swap.d.ts +71 -0
- package/dist/tools/swap.d.ts.map +1 -0
- package/dist/tools/swap.js +762 -0
- package/dist/tools/swap.js.map +1 -0
- package/dist/tools/walletManagement.d.ts +80 -0
- package/dist/tools/walletManagement.d.ts.map +1 -0
- package/dist/tools/walletManagement.js +289 -0
- package/dist/tools/walletManagement.js.map +1 -0
- package/dist/types.d.ts +205 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errorUtils.d.ts +2 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +19 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/utils/errors.d.ts +144 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +310 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/positionAggregator.d.ts +122 -0
- package/dist/utils/positionAggregator.d.ts.map +1 -0
- package/dist/utils/positionAggregator.js +377 -0
- package/dist/utils/positionAggregator.js.map +1 -0
- package/dist/utils/priceService.d.ts +45 -0
- package/dist/utils/priceService.d.ts.map +1 -0
- package/dist/utils/priceService.js +108 -0
- package/dist/utils/priceService.js.map +1 -0
- package/dist/utils/sodaxApi.d.ts +92 -0
- package/dist/utils/sodaxApi.d.ts.map +1 -0
- package/dist/utils/sodaxApi.js +143 -0
- package/dist/utils/sodaxApi.js.map +1 -0
- package/dist/utils/tokenResolver.d.ts +54 -0
- package/dist/utils/tokenResolver.d.ts.map +1 -0
- package/dist/utils/tokenResolver.js +252 -0
- package/dist/utils/tokenResolver.js.map +1 -0
- package/dist/wallet/backendConfig.d.ts +37 -0
- package/dist/wallet/backendConfig.d.ts.map +1 -0
- package/dist/wallet/backendConfig.js +125 -0
- package/dist/wallet/backendConfig.js.map +1 -0
- package/dist/wallet/backends/BankrBackend.d.ts +73 -0
- package/dist/wallet/backends/BankrBackend.d.ts.map +1 -0
- package/dist/wallet/backends/BankrBackend.js +315 -0
- package/dist/wallet/backends/BankrBackend.js.map +1 -0
- package/dist/wallet/backends/BankrWalletProvider.d.ts +75 -0
- package/dist/wallet/backends/BankrWalletProvider.d.ts.map +1 -0
- package/dist/wallet/backends/BankrWalletProvider.js +243 -0
- package/dist/wallet/backends/BankrWalletProvider.js.map +1 -0
- package/dist/wallet/backends/EnvBackend.d.ts +50 -0
- package/dist/wallet/backends/EnvBackend.d.ts.map +1 -0
- package/dist/wallet/backends/EnvBackend.js +114 -0
- package/dist/wallet/backends/EnvBackend.js.map +1 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.d.ts +40 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.d.ts.map +1 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.js +81 -0
- package/dist/wallet/backends/EvmWalletSkillBackend.js.map +1 -0
- package/dist/wallet/backends/index.d.ts +10 -0
- package/dist/wallet/backends/index.d.ts.map +1 -0
- package/dist/wallet/backends/index.js +10 -0
- package/dist/wallet/backends/index.js.map +1 -0
- package/dist/wallet/index.d.ts +9 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +12 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/providers/AmpedWalletProvider.d.ts +107 -0
- package/dist/wallet/providers/AmpedWalletProvider.d.ts.map +1 -0
- package/dist/wallet/providers/AmpedWalletProvider.js +208 -0
- package/dist/wallet/providers/AmpedWalletProvider.js.map +1 -0
- package/dist/wallet/providers/BankrBackend.d.ts +105 -0
- package/dist/wallet/providers/BankrBackend.d.ts.map +1 -0
- package/dist/wallet/providers/BankrBackend.js +327 -0
- package/dist/wallet/providers/BankrBackend.js.map +1 -0
- package/dist/wallet/providers/LocalKeyBackend.d.ts +62 -0
- package/dist/wallet/providers/LocalKeyBackend.d.ts.map +1 -0
- package/dist/wallet/providers/LocalKeyBackend.js +152 -0
- package/dist/wallet/providers/LocalKeyBackend.js.map +1 -0
- package/dist/wallet/providers/chainConfig.d.ts +209 -0
- package/dist/wallet/providers/chainConfig.d.ts.map +1 -0
- package/dist/wallet/providers/chainConfig.js +175 -0
- package/dist/wallet/providers/chainConfig.js.map +1 -0
- package/dist/wallet/providers/index.d.ts +30 -0
- package/dist/wallet/providers/index.d.ts.map +1 -0
- package/dist/wallet/providers/index.js +32 -0
- package/dist/wallet/providers/index.js.map +1 -0
- package/dist/wallet/providers/types.d.ts +156 -0
- package/dist/wallet/providers/types.d.ts.map +1 -0
- package/dist/wallet/providers/types.js +11 -0
- package/dist/wallet/providers/types.js.map +1 -0
- package/dist/wallet/skillWalletAdapter.d.ts +96 -0
- package/dist/wallet/skillWalletAdapter.d.ts.map +1 -0
- package/dist/wallet/skillWalletAdapter.js +280 -0
- package/dist/wallet/skillWalletAdapter.js.map +1 -0
- package/dist/wallet/types.d.ts +134 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/dist/wallet/types.js +138 -0
- package/dist/wallet/types.js.map +1 -0
- package/dist/wallet/walletManager.d.ts +111 -0
- package/dist/wallet/walletManager.d.ts.map +1 -0
- package/dist/wallet/walletManager.js +476 -0
- package/dist/wallet/walletManager.js.map +1 -0
- package/dist/wallet/walletRegistry.d.ts +95 -0
- package/dist/wallet/walletRegistry.d.ts.map +1 -0
- package/dist/wallet/walletRegistry.js +184 -0
- package/dist/wallet/walletRegistry.js.map +1 -0
- package/index.js +2 -0
- package/openclaw.plugin.json +37 -0
- package/package.json +69 -0
- package/src/__mocks__/@sodax/sdk.ts +28 -0
- package/src/__tests__/errors.test.ts +238 -0
- package/src/__tests__/policyEngine.test.ts +354 -0
- package/src/__tests__/positionAggregator.test.ts +271 -0
- package/src/__tests__/setup.ts +35 -0
- package/src/__tests__/sodaxApi.test.ts +203 -0
- package/src/__tests__/walletRegistry.test.ts +155 -0
- package/src/index.ts +376 -0
- package/src/policy/policyEngine.ts +389 -0
- package/src/providers/spokeProviderFactory.ts +283 -0
- package/src/sodax/client.ts +113 -0
- package/src/tools/bridge.ts +425 -0
- package/src/tools/discovery.ts +989 -0
- package/src/tools/moneyMarket.ts +1265 -0
- package/src/tools/portfolio.ts +697 -0
- package/src/tools/swap.ts +926 -0
- package/src/tools/walletManagement.ts +359 -0
- package/src/types.ts +228 -0
- package/src/utils/errorUtils.ts +16 -0
- package/src/utils/errors.ts +396 -0
- package/src/utils/positionAggregator.ts +559 -0
- package/src/utils/priceService.ts +153 -0
- package/src/utils/sodaxApi.ts +261 -0
- package/src/utils/tokenResolver.ts +286 -0
- package/src/wallet/backendConfig.ts +151 -0
- package/src/wallet/backends/BankrBackend.ts +399 -0
- package/src/wallet/backends/BankrWalletProvider.ts +329 -0
- package/src/wallet/backends/EnvBackend.ts +149 -0
- package/src/wallet/backends/EvmWalletSkillBackend.ts +110 -0
- package/src/wallet/backends/index.ts +10 -0
- package/src/wallet/index.ts +14 -0
- package/src/wallet/providers/AmpedWalletProvider.ts +267 -0
- package/src/wallet/providers/BankrBackend.ts +407 -0
- package/src/wallet/providers/LocalKeyBackend.ts +184 -0
- package/src/wallet/providers/chainConfig.ts +194 -0
- package/src/wallet/providers/index.ts +62 -0
- package/src/wallet/providers/types.ts +186 -0
- package/src/wallet/skillWalletAdapter.ts +335 -0
- package/src/wallet/types.ts +248 -0
- package/src/wallet/walletManager.ts +561 -0
- package/src/wallet/walletRegistry.ts +216 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Amped DeFi Plugin
|
|
3
|
+
*
|
|
4
|
+
* OpenClaw plugin for DeFi operations (swaps, bridging, money market)
|
|
5
|
+
* via the SODAX SDK.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Type, TSchema } from '@sinclair/typebox';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* OpenClaw Plugin API (defined locally to avoid SDK dependency)
|
|
12
|
+
*/
|
|
13
|
+
interface OpenClawPluginApi {
|
|
14
|
+
pluginConfig: Record<string, unknown>;
|
|
15
|
+
logger: {
|
|
16
|
+
info: (msg: string) => void;
|
|
17
|
+
warn: (msg: string) => void;
|
|
18
|
+
error: (msg: string) => void;
|
|
19
|
+
debug: (msg: string) => void;
|
|
20
|
+
};
|
|
21
|
+
registerTool: (tool: {
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
parameters: TSchema;
|
|
25
|
+
execute: (toolCallId: string, params: unknown) => Promise<{
|
|
26
|
+
content: Array<{ type: 'text'; text: string }>;
|
|
27
|
+
details?: unknown;
|
|
28
|
+
}>;
|
|
29
|
+
}) => void;
|
|
30
|
+
registerService: (service: {
|
|
31
|
+
id: string;
|
|
32
|
+
start: () => void;
|
|
33
|
+
stop: () => Promise<void> | void;
|
|
34
|
+
}) => void;
|
|
35
|
+
on: (event: string, handler: (event: unknown, ctx: unknown) => unknown) => void;
|
|
36
|
+
}
|
|
37
|
+
import { getSodaxClientAsync, resetSodaxClient } from './sodax/client';
|
|
38
|
+
import { getCacheStats } from './providers/spokeProviderFactory';
|
|
39
|
+
import { PolicyEngine } from './policy/policyEngine';
|
|
40
|
+
import { getWalletManager } from './wallet/walletManager';
|
|
41
|
+
import { getWalletRegistry } from './wallet/walletRegistry';
|
|
42
|
+
|
|
43
|
+
// Tool schemas and handlers
|
|
44
|
+
import {
|
|
45
|
+
SwapQuoteSchema, SwapExecuteSchema, SwapStatusSchema, SwapCancelSchema,
|
|
46
|
+
handleSwapQuote, handleSwapExecute, handleSwapStatus, handleSwapCancel
|
|
47
|
+
} from './tools/swap';
|
|
48
|
+
import {
|
|
49
|
+
BridgeDiscoverSchema, BridgeQuoteSchema, BridgeExecuteSchema,
|
|
50
|
+
handleBridgeDiscover, handleBridgeQuote, handleBridgeExecute
|
|
51
|
+
} from './tools/bridge';
|
|
52
|
+
import {
|
|
53
|
+
MmSupplySchema, MmWithdrawSchema, MmBorrowSchema, MmRepaySchema,
|
|
54
|
+
handleMmSupply, handleMmWithdraw, handleMmBorrow, handleMmRepay
|
|
55
|
+
} from './tools/moneyMarket';
|
|
56
|
+
import {
|
|
57
|
+
SupportedChainsSchema, SupportedTokensSchema, WalletAddressSchema,
|
|
58
|
+
MoneyMarketReservesSchema, MoneyMarketPositionsSchema, CrossChainPositionsSchema,
|
|
59
|
+
UserIntentsSchema, ListWalletsSchema,
|
|
60
|
+
handleSupportedChains, handleSupportedTokens, handleWalletAddress,
|
|
61
|
+
handleMoneyMarketReserves, handleMoneyMarketPositions, handleCrossChainPositions,
|
|
62
|
+
handleUserIntents, handleListWallets
|
|
63
|
+
} from './tools/discovery';
|
|
64
|
+
import {
|
|
65
|
+
AddWalletSchema, RenameWalletSchema, RemoveWalletSchema, SetDefaultWalletSchema,
|
|
66
|
+
handleAddWallet, handleRenameWallet, handleRemoveWallet, handleSetDefaultWallet
|
|
67
|
+
} from './tools/walletManagement';
|
|
68
|
+
import {
|
|
69
|
+
PortfolioSummarySchema,
|
|
70
|
+
handlePortfolioSummary
|
|
71
|
+
} from './tools/portfolio';
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Plugin configuration schema (matches openclaw.plugin.json)
|
|
75
|
+
*/
|
|
76
|
+
const configSchema = Type.Object({
|
|
77
|
+
walletsJson: Type.Optional(Type.String()),
|
|
78
|
+
rpcUrlsJson: Type.Optional(Type.String()),
|
|
79
|
+
mode: Type.Optional(Type.Union([Type.Literal('execute'), Type.Literal('simulate')])),
|
|
80
|
+
dynamicConfig: Type.Optional(Type.Boolean()),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Apply plugin config to environment
|
|
85
|
+
*/
|
|
86
|
+
function applyConfig(config: Record<string, unknown>): void {
|
|
87
|
+
if (config.walletsJson && typeof config.walletsJson === 'string') {
|
|
88
|
+
process.env.AMPED_OC_WALLETS_JSON = config.walletsJson;
|
|
89
|
+
}
|
|
90
|
+
if (config.rpcUrlsJson && typeof config.rpcUrlsJson === 'string') {
|
|
91
|
+
process.env.AMPED_OC_RPC_URLS_JSON = config.rpcUrlsJson;
|
|
92
|
+
}
|
|
93
|
+
if (config.mode && typeof config.mode === 'string') {
|
|
94
|
+
process.env.AMPED_OC_MODE = config.mode;
|
|
95
|
+
}
|
|
96
|
+
if (config.dynamicConfig !== undefined) {
|
|
97
|
+
process.env.AMPED_OC_SODAX_DYNAMIC_CONFIG = config.dynamicConfig ? 'true' : 'false';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Validate required environment variables
|
|
103
|
+
*/
|
|
104
|
+
function validateEnvironment(): string[] {
|
|
105
|
+
const missing: string[] = [];
|
|
106
|
+
|
|
107
|
+
if (!process.env.AMPED_OC_WALLETS_JSON) {
|
|
108
|
+
missing.push('AMPED_OC_WALLETS_JSON');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const mode = process.env.AMPED_OC_MODE || 'execute';
|
|
112
|
+
if (mode === 'execute' && !process.env.AMPED_OC_RPC_URLS_JSON) {
|
|
113
|
+
missing.push('AMPED_OC_RPC_URLS_JSON');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return missing;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Deep-clone an object while converting BigInt values to strings
|
|
122
|
+
* Prevents serialization errors when OpenClaw framework handles the details field
|
|
123
|
+
*/
|
|
124
|
+
function sanitizeBigInt(obj: unknown): unknown {
|
|
125
|
+
return JSON.parse(JSON.stringify(obj, (_, v) =>
|
|
126
|
+
typeof v === 'bigint' ? v.toString() : v
|
|
127
|
+
));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Helper to wrap a handler for OpenClaw's tool format
|
|
132
|
+
*/
|
|
133
|
+
function wrapHandler(handler: (params: unknown) => Promise<unknown>) {
|
|
134
|
+
return async (_toolCallId: string, params: unknown) => {
|
|
135
|
+
const result = await handler(params);
|
|
136
|
+
// Sanitize BigInt values in details to prevent framework serialization errors
|
|
137
|
+
const sanitizedResult = sanitizeBigInt(result);
|
|
138
|
+
return {
|
|
139
|
+
content: [{ type: 'text' as const, text: JSON.stringify(result, (k, v) => typeof v === 'bigint' ? v.toString() : v, 2) }],
|
|
140
|
+
details: sanitizedResult,
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* OpenClaw Plugin Definition
|
|
147
|
+
*/
|
|
148
|
+
export default {
|
|
149
|
+
id: 'amped-defi',
|
|
150
|
+
name: 'Amped DeFi',
|
|
151
|
+
description: 'DeFi operations plugin for swaps, bridging, and money market via SODAX SDK',
|
|
152
|
+
kind: 'tools' as const,
|
|
153
|
+
configSchema,
|
|
154
|
+
|
|
155
|
+
register(api: OpenClawPluginApi) {
|
|
156
|
+
// Apply config from OpenClaw
|
|
157
|
+
const config = api.pluginConfig as Record<string, unknown> || {};
|
|
158
|
+
applyConfig(config);
|
|
159
|
+
|
|
160
|
+
// Check for missing env vars (silent)
|
|
161
|
+
validateEnvironment();
|
|
162
|
+
|
|
163
|
+
// Initialize core components (async, non-blocking, silent)
|
|
164
|
+
(async () => {
|
|
165
|
+
try {
|
|
166
|
+
await getSodaxClientAsync();
|
|
167
|
+
getCacheStats();
|
|
168
|
+
new PolicyEngine();
|
|
169
|
+
getWalletManager();
|
|
170
|
+
} catch (_error) {
|
|
171
|
+
// Silent initialization - errors will surface when tools are used
|
|
172
|
+
}
|
|
173
|
+
})();
|
|
174
|
+
|
|
175
|
+
// Register Discovery Tools
|
|
176
|
+
api.registerTool({
|
|
177
|
+
name: 'amped_supported_chains',
|
|
178
|
+
description: 'List all blockchain networks supported by the Amped DeFi plugin',
|
|
179
|
+
parameters: SupportedChainsSchema,
|
|
180
|
+
execute: wrapHandler(handleSupportedChains),
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
api.registerTool({
|
|
184
|
+
name: 'amped_supported_tokens',
|
|
185
|
+
description: 'List tokens supported on a specific chain for swaps and bridging',
|
|
186
|
+
parameters: SupportedTokensSchema,
|
|
187
|
+
execute: wrapHandler(handleSupportedTokens),
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
api.registerTool({
|
|
191
|
+
name: 'amped_wallet_address',
|
|
192
|
+
description: 'Get the wallet address for a specific wallet ID',
|
|
193
|
+
parameters: WalletAddressSchema,
|
|
194
|
+
execute: wrapHandler(handleWalletAddress),
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
api.registerTool({
|
|
198
|
+
name: 'amped_money_market_reserves',
|
|
199
|
+
description: 'Get money market reserve info (APY, utilization, liquidity)',
|
|
200
|
+
parameters: MoneyMarketReservesSchema,
|
|
201
|
+
execute: wrapHandler(handleMoneyMarketReserves),
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
api.registerTool({
|
|
205
|
+
name: 'amped_money_market_positions',
|
|
206
|
+
description: 'Get user positions in money market on a single chain',
|
|
207
|
+
parameters: MoneyMarketPositionsSchema,
|
|
208
|
+
execute: wrapHandler(handleMoneyMarketPositions),
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
api.registerTool({
|
|
212
|
+
name: 'amped_cross_chain_positions',
|
|
213
|
+
description: 'Get aggregated money market positions across all chains',
|
|
214
|
+
parameters: CrossChainPositionsSchema,
|
|
215
|
+
execute: wrapHandler(handleCrossChainPositions),
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
api.registerTool({
|
|
219
|
+
name: 'amped_user_intents',
|
|
220
|
+
description: 'Query user intent history from SODAX API',
|
|
221
|
+
parameters: UserIntentsSchema,
|
|
222
|
+
execute: wrapHandler(handleUserIntents),
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
api.registerTool({
|
|
226
|
+
name: 'amped_list_wallets',
|
|
227
|
+
description: 'List ALL configured wallets including evm-wallet-skill, Bankr, and env wallets. Shows nicknames, addresses, types, and supported chains. Use this when user asks "what wallets do I have" or "show my wallets".',
|
|
228
|
+
parameters: ListWalletsSchema,
|
|
229
|
+
execute: wrapHandler(handleListWallets),
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
api.registerTool({
|
|
233
|
+
name: 'amped_portfolio_summary',
|
|
234
|
+
description: 'Get a comprehensive portfolio summary including wallet balances (native + major tokens) across chains and money market positions. Use when user asks for "portfolio", "balances", or "summary of positions".',
|
|
235
|
+
parameters: PortfolioSummarySchema,
|
|
236
|
+
execute: wrapHandler(handlePortfolioSummary),
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Register Wallet Management Tools
|
|
240
|
+
api.registerTool({
|
|
241
|
+
name: 'amped_add_wallet',
|
|
242
|
+
description: 'Add a new wallet with a nickname (evm-wallet-skill, bankr, or env)',
|
|
243
|
+
parameters: AddWalletSchema,
|
|
244
|
+
execute: wrapHandler(handleAddWallet),
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
api.registerTool({
|
|
248
|
+
name: 'amped_rename_wallet',
|
|
249
|
+
description: 'Rename a wallet to a new nickname',
|
|
250
|
+
parameters: RenameWalletSchema,
|
|
251
|
+
execute: wrapHandler(handleRenameWallet),
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
api.registerTool({
|
|
255
|
+
name: 'amped_remove_wallet',
|
|
256
|
+
description: 'Remove a wallet from configuration (does not delete funds)',
|
|
257
|
+
parameters: RemoveWalletSchema,
|
|
258
|
+
execute: wrapHandler(handleRemoveWallet),
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
api.registerTool({
|
|
262
|
+
name: 'amped_set_default_wallet',
|
|
263
|
+
description: 'Set which wallet to use by default for operations',
|
|
264
|
+
parameters: SetDefaultWalletSchema,
|
|
265
|
+
execute: wrapHandler(handleSetDefaultWallet),
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// Register Swap Tools
|
|
269
|
+
api.registerTool({
|
|
270
|
+
name: 'amped_swap_quote',
|
|
271
|
+
description: 'Get a quote for swapping tokens (same chain or cross-chain)',
|
|
272
|
+
parameters: SwapQuoteSchema,
|
|
273
|
+
execute: wrapHandler(handleSwapQuote),
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
api.registerTool({
|
|
277
|
+
name: 'amped_swap_execute',
|
|
278
|
+
description: 'Execute a token swap using a previously obtained quote',
|
|
279
|
+
parameters: SwapExecuteSchema,
|
|
280
|
+
execute: wrapHandler(handleSwapExecute),
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
api.registerTool({
|
|
284
|
+
name: 'amped_swap_status',
|
|
285
|
+
description: 'Check the status of a swap/bridge operation by intent ID',
|
|
286
|
+
parameters: SwapStatusSchema,
|
|
287
|
+
execute: wrapHandler(handleSwapStatus),
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
api.registerTool({
|
|
291
|
+
name: 'amped_swap_cancel',
|
|
292
|
+
description: 'Cancel a pending swap/bridge operation',
|
|
293
|
+
parameters: SwapCancelSchema,
|
|
294
|
+
execute: wrapHandler(handleSwapCancel),
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
// Register Bridge Tools
|
|
298
|
+
api.registerTool({
|
|
299
|
+
name: 'amped_bridge_discover',
|
|
300
|
+
description: 'Discover available bridge routes between chains',
|
|
301
|
+
parameters: BridgeDiscoverSchema,
|
|
302
|
+
execute: wrapHandler(handleBridgeDiscover),
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
api.registerTool({
|
|
306
|
+
name: 'amped_bridge_quote',
|
|
307
|
+
description: 'Get a quote for bridging tokens between chains',
|
|
308
|
+
parameters: BridgeQuoteSchema,
|
|
309
|
+
execute: wrapHandler(handleBridgeQuote),
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
api.registerTool({
|
|
313
|
+
name: 'amped_bridge_execute',
|
|
314
|
+
description: 'Execute a bridge transfer using a previously obtained quote',
|
|
315
|
+
parameters: BridgeExecuteSchema,
|
|
316
|
+
execute: wrapHandler(handleBridgeExecute),
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
// Register Money Market Tools
|
|
320
|
+
api.registerTool({
|
|
321
|
+
name: 'amped_mm_supply',
|
|
322
|
+
description: 'Supply (deposit) tokens to money market to earn interest',
|
|
323
|
+
parameters: MmSupplySchema,
|
|
324
|
+
execute: wrapHandler(handleMmSupply),
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
api.registerTool({
|
|
328
|
+
name: 'amped_mm_withdraw',
|
|
329
|
+
description: 'Withdraw supplied tokens from money market',
|
|
330
|
+
parameters: MmWithdrawSchema,
|
|
331
|
+
execute: wrapHandler(handleMmWithdraw),
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
api.registerTool({
|
|
335
|
+
name: 'amped_mm_borrow',
|
|
336
|
+
description: 'Borrow tokens from money market (cross-chain capable)',
|
|
337
|
+
parameters: MmBorrowSchema,
|
|
338
|
+
execute: wrapHandler(handleMmBorrow),
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
api.registerTool({
|
|
342
|
+
name: 'amped_mm_repay',
|
|
343
|
+
description: 'Repay borrowed tokens to money market',
|
|
344
|
+
parameters: MmRepaySchema,
|
|
345
|
+
execute: wrapHandler(handleMmRepay),
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
// Register cleanup service
|
|
349
|
+
api.registerService({
|
|
350
|
+
id: 'amped-defi',
|
|
351
|
+
start: () => {},
|
|
352
|
+
stop: async () => {
|
|
353
|
+
resetSodaxClient();
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
},
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
// Re-export types and utilities for external use
|
|
360
|
+
export * from './types';
|
|
361
|
+
export { getSodaxClient, getSodaxClientAsync, resetSodaxClient } from './sodax/client';
|
|
362
|
+
export { getSpokeProvider, getCacheStats, clearProviderCache } from './providers/spokeProviderFactory';
|
|
363
|
+
export type { SpokeProvider } from './providers/spokeProviderFactory';
|
|
364
|
+
export { EvmSpokeProvider, SonicSpokeProvider } from '@sodax/sdk';
|
|
365
|
+
export { PolicyEngine } from './policy/policyEngine';
|
|
366
|
+
export { WalletRegistry, getWalletRegistry } from './wallet/walletRegistry';
|
|
367
|
+
export { WalletManager, getWalletManager, resetWalletManager } from './wallet/walletManager';
|
|
368
|
+
export type { IWalletBackend, WalletInfo, WalletBackendType } from './wallet/types';
|
|
369
|
+
|
|
370
|
+
// Legacy exports for backward compatibility
|
|
371
|
+
export async function activate() {
|
|
372
|
+
// Deprecated - use default export
|
|
373
|
+
}
|
|
374
|
+
export async function deactivate() {
|
|
375
|
+
resetSodaxClient();
|
|
376
|
+
}
|