@clawnch/clawtomaton 0.2.2 → 0.4.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 +82 -10
- package/dist/agent/index.d.ts +5 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +120 -10
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/prompt.d.ts +2 -0
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +199 -2
- package/dist/agent/prompt.js.map +1 -1
- package/dist/bunker/client.d.ts +113 -0
- package/dist/bunker/client.d.ts.map +1 -0
- package/dist/bunker/client.js +404 -0
- package/dist/bunker/client.js.map +1 -0
- package/dist/bunker/self-deploy.d.ts +54 -0
- package/dist/bunker/self-deploy.d.ts.map +1 -0
- package/dist/bunker/self-deploy.js +353 -0
- package/dist/bunker/self-deploy.js.map +1 -0
- package/dist/bunker/threat-monitor.d.ts +47 -0
- package/dist/bunker/threat-monitor.d.ts.map +1 -0
- package/dist/bunker/threat-monitor.js +173 -0
- package/dist/bunker/threat-monitor.js.map +1 -0
- package/dist/bunker/types.d.ts +320 -0
- package/dist/bunker/types.d.ts.map +1 -0
- package/dist/bunker/types.js +9 -0
- package/dist/bunker/types.js.map +1 -0
- package/dist/cli.js +207 -9
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/heartbeat/index.d.ts +28 -0
- package/dist/heartbeat/index.d.ts.map +1 -1
- package/dist/heartbeat/index.js +240 -11
- package/dist/heartbeat/index.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/market/index.d.ts +20 -1
- package/dist/market/index.d.ts.map +1 -1
- package/dist/market/index.js +76 -4
- package/dist/market/index.js.map +1 -1
- package/dist/skills/analyze-market.d.ts +17 -0
- package/dist/skills/analyze-market.d.ts.map +1 -0
- package/dist/skills/analyze-market.js +156 -0
- package/dist/skills/analyze-market.js.map +1 -0
- package/dist/skills/bunker.d.ts +29 -0
- package/dist/skills/bunker.d.ts.map +1 -0
- package/dist/skills/bunker.js +502 -0
- package/dist/skills/bunker.js.map +1 -0
- package/dist/skills/check-balance.d.ts +2 -2
- package/dist/skills/check-balance.d.ts.map +1 -1
- package/dist/skills/check-balance.js +43 -8
- package/dist/skills/check-balance.js.map +1 -1
- package/dist/skills/check-price.d.ts +11 -0
- package/dist/skills/check-price.d.ts.map +1 -0
- package/dist/skills/check-price.js +83 -0
- package/dist/skills/check-price.js.map +1 -0
- package/dist/skills/claim-vault.d.ts +15 -0
- package/dist/skills/claim-vault.d.ts.map +1 -0
- package/dist/skills/claim-vault.js +96 -0
- package/dist/skills/claim-vault.js.map +1 -0
- package/dist/skills/deploy.d.ts.map +1 -1
- package/dist/skills/deploy.js +10 -1
- package/dist/skills/deploy.js.map +1 -1
- package/dist/skills/index.d.ts +9 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +34 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/manage-orders.d.ts +26 -0
- package/dist/skills/manage-orders.d.ts.map +1 -0
- package/dist/skills/manage-orders.js +470 -0
- package/dist/skills/manage-orders.js.map +1 -0
- package/dist/skills/portfolio.d.ts +19 -0
- package/dist/skills/portfolio.d.ts.map +1 -0
- package/dist/skills/portfolio.js +189 -0
- package/dist/skills/portfolio.js.map +1 -0
- package/dist/skills/watch-activity.d.ts +12 -0
- package/dist/skills/watch-activity.d.ts.map +1 -0
- package/dist/skills/watch-activity.js +130 -0
- package/dist/skills/watch-activity.js.map +1 -0
- package/dist/skills/xmtp.d.ts +18 -0
- package/dist/skills/xmtp.d.ts.map +1 -0
- package/dist/skills/xmtp.js +180 -0
- package/dist/skills/xmtp.js.map +1 -0
- package/dist/state/index.d.ts +25 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +156 -0
- package/dist/state/index.js.map +1 -1
- package/dist/survival/index.d.ts.map +1 -1
- package/dist/survival/index.js +3 -0
- package/dist/survival/index.js.map +1 -1
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/xmtp/client.d.ts +79 -0
- package/dist/xmtp/client.d.ts.map +1 -0
- package/dist/xmtp/client.js +282 -0
- package/dist/xmtp/client.js.map +1 -0
- package/dist/xmtp/index.d.ts +9 -0
- package/dist/xmtp/index.d.ts.map +1 -0
- package/dist/xmtp/index.js +8 -0
- package/dist/xmtp/index.js.map +1 -0
- package/dist/xmtp/types.d.ts +59 -0
- package/dist/xmtp/types.d.ts.map +1 -0
- package/dist/xmtp/types.js +5 -0
- package/dist/xmtp/types.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: manage_orders — Create and manage conditional orders.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - limit_buy / limit_sell: Execute at a specific price
|
|
6
|
+
* - stop_loss: Sell when price drops below threshold
|
|
7
|
+
* - take_profit: Sell when price rises above threshold
|
|
8
|
+
* - dca: Recurring buys at fixed intervals
|
|
9
|
+
* - trailing_stop: Sell when price drops N% from its peak
|
|
10
|
+
* - twap: Split a large trade into time-distributed chunks
|
|
11
|
+
*
|
|
12
|
+
* Advanced features:
|
|
13
|
+
* - Order chaining (create follow-up orders on execution)
|
|
14
|
+
* - Risk management (position sizing, drawdown circuit breaker, rate limits)
|
|
15
|
+
* - Pause/resume individual orders
|
|
16
|
+
* - Tag-based grouping and bulk cancel
|
|
17
|
+
*
|
|
18
|
+
* Orders persist in the agent's state store. The heartbeat checks pending
|
|
19
|
+
* orders against current prices and wakes the agent to execute triggers.
|
|
20
|
+
*
|
|
21
|
+
* Actions: create, list, cancel, cancel_tag, check, executed, failed,
|
|
22
|
+
* pause, resume, risk, reset_circuit_breaker, cleanup
|
|
23
|
+
*/
|
|
24
|
+
import { ClawnchOrders } from '@clawnch/clawncher-sdk';
|
|
25
|
+
/**
|
|
26
|
+
* Build a ClawnchOrders instance from the agent context.
|
|
27
|
+
* Uses the agent's shared StateStore — NOT a separate DB connection.
|
|
28
|
+
* Includes risk storage for drawdown/rate limiting.
|
|
29
|
+
*/
|
|
30
|
+
function getOrders(ctx) {
|
|
31
|
+
if (!ctx.stateStore)
|
|
32
|
+
return null;
|
|
33
|
+
return new ClawnchOrders(ctx.stateStore, ctx.stateStore.asRiskStorage());
|
|
34
|
+
}
|
|
35
|
+
export const manageOrdersSkill = {
|
|
36
|
+
name: 'manage_orders',
|
|
37
|
+
description: [
|
|
38
|
+
'Create and manage conditional orders: limit buy/sell, stop-loss, take-profit, DCA, trailing stop, TWAP.',
|
|
39
|
+
'Supports order chaining (auto-create follow-up orders) and risk management (position limits, drawdown circuit breaker).',
|
|
40
|
+
'Actions: create, list, cancel, cancel_tag, check, executed, failed, pause, resume, risk, reset_circuit_breaker, cleanup.',
|
|
41
|
+
].join(' '),
|
|
42
|
+
parameters: [
|
|
43
|
+
{
|
|
44
|
+
name: 'action',
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'One of: create, list, cancel, cancel_tag, check, executed, failed, pause, resume, risk, reset_circuit_breaker, cleanup',
|
|
47
|
+
required: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'type',
|
|
51
|
+
type: 'string',
|
|
52
|
+
description: 'Order type: limit_buy, limit_sell, stop_loss, take_profit, dca, trailing_stop, twap',
|
|
53
|
+
required: false,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'token',
|
|
57
|
+
type: 'address',
|
|
58
|
+
description: 'Token address (defaults to own token)',
|
|
59
|
+
required: false,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'triggerPrice',
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Trigger price in ETH (e.g. "0.000005"). Not needed for trailing_stop or twap.',
|
|
65
|
+
required: false,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'side',
|
|
69
|
+
type: 'string',
|
|
70
|
+
description: 'Trade side: buy or sell',
|
|
71
|
+
required: false,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'amountPct',
|
|
75
|
+
type: 'number',
|
|
76
|
+
description: 'Amount as percentage of holdings (1-100)',
|
|
77
|
+
required: false,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'amountRaw',
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: 'Absolute amount in human-readable units (e.g. "0.01")',
|
|
83
|
+
required: false,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'orderId',
|
|
87
|
+
type: 'string',
|
|
88
|
+
description: 'Order ID (for cancel/executed/failed/pause/resume)',
|
|
89
|
+
required: false,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'tag',
|
|
93
|
+
type: 'string',
|
|
94
|
+
description: 'Tag for grouping orders (for create/cancel_tag)',
|
|
95
|
+
required: false,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'currentPrice',
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'Current price in ETH (for check action)',
|
|
101
|
+
required: false,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'executionResult',
|
|
105
|
+
type: 'string',
|
|
106
|
+
description: 'TX hash or result string (for executed action)',
|
|
107
|
+
required: false,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'dcaIntervalHours',
|
|
111
|
+
type: 'number',
|
|
112
|
+
description: 'Hours between DCA buys',
|
|
113
|
+
required: false,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'dcaMaxBuys',
|
|
117
|
+
type: 'number',
|
|
118
|
+
description: 'Max DCA buys (omit for unlimited)',
|
|
119
|
+
required: false,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'trailingPct',
|
|
123
|
+
type: 'number',
|
|
124
|
+
description: 'Trailing stop: % drop from peak that triggers sell (e.g. 15 = 15%)',
|
|
125
|
+
required: false,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'floorPrice',
|
|
129
|
+
type: 'string',
|
|
130
|
+
description: 'Trailing stop: absolute floor price in ETH (never trail below this)',
|
|
131
|
+
required: false,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'twapChunks',
|
|
135
|
+
type: 'number',
|
|
136
|
+
description: 'TWAP: number of chunks to split trade into',
|
|
137
|
+
required: false,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'twapWindowHours',
|
|
141
|
+
type: 'number',
|
|
142
|
+
description: 'TWAP: time window in hours over which to execute all chunks',
|
|
143
|
+
required: false,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'twapMaxPrice',
|
|
147
|
+
type: 'string',
|
|
148
|
+
description: 'TWAP: max price in ETH (skip chunks if price exceeds this for buys)',
|
|
149
|
+
required: false,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: 'twapMinPrice',
|
|
153
|
+
type: 'string',
|
|
154
|
+
description: 'TWAP: min price in ETH (skip chunks if price below this for sells)',
|
|
155
|
+
required: false,
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'chainType',
|
|
159
|
+
type: 'string',
|
|
160
|
+
description: 'Chain order: type of follow-up order to create on execution',
|
|
161
|
+
required: false,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: 'chainTriggerPrice',
|
|
165
|
+
type: 'string',
|
|
166
|
+
description: 'Chain order: trigger price for the follow-up',
|
|
167
|
+
required: false,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
name: 'chainSide',
|
|
171
|
+
type: 'string',
|
|
172
|
+
description: 'Chain order: side (buy/sell) for the follow-up',
|
|
173
|
+
required: false,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'chainAmountPct',
|
|
177
|
+
type: 'number',
|
|
178
|
+
description: 'Chain order: amount % for the follow-up',
|
|
179
|
+
required: false,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'slippageBps',
|
|
183
|
+
type: 'number',
|
|
184
|
+
description: 'Slippage tolerance in bps (default 200 = 2%)',
|
|
185
|
+
required: false,
|
|
186
|
+
default: 200,
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
execute: async (params, ctx) => {
|
|
190
|
+
try {
|
|
191
|
+
const action = params.action;
|
|
192
|
+
const orders = getOrders(ctx);
|
|
193
|
+
if (!orders) {
|
|
194
|
+
return { callId: '', success: false, result: null, error: 'No state store available.' };
|
|
195
|
+
}
|
|
196
|
+
switch (action) {
|
|
197
|
+
case 'create':
|
|
198
|
+
return handleCreate(params, ctx, orders);
|
|
199
|
+
case 'list':
|
|
200
|
+
return handleList(params, orders);
|
|
201
|
+
case 'cancel':
|
|
202
|
+
return handleCancel(params, orders);
|
|
203
|
+
case 'cancel_tag':
|
|
204
|
+
return handleCancelTag(params, orders);
|
|
205
|
+
case 'check':
|
|
206
|
+
return handleCheck(params, orders);
|
|
207
|
+
case 'executed':
|
|
208
|
+
return handleExecuted(params, orders);
|
|
209
|
+
case 'failed':
|
|
210
|
+
return handleFailed(params, orders);
|
|
211
|
+
case 'pause':
|
|
212
|
+
return handlePause(params, orders);
|
|
213
|
+
case 'resume':
|
|
214
|
+
return handleResume(params, orders);
|
|
215
|
+
case 'risk':
|
|
216
|
+
return handleRisk(orders);
|
|
217
|
+
case 'reset_circuit_breaker':
|
|
218
|
+
return handleResetCircuitBreaker(orders);
|
|
219
|
+
case 'cleanup':
|
|
220
|
+
return handleCleanup(orders);
|
|
221
|
+
default:
|
|
222
|
+
return { callId: '', success: false, result: null, error: `Unknown action: ${action}` };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
// ============================================================================
|
|
231
|
+
// Action handlers
|
|
232
|
+
// ============================================================================
|
|
233
|
+
function handleCreate(params, ctx, orders) {
|
|
234
|
+
const type = params.type;
|
|
235
|
+
if (!type) {
|
|
236
|
+
return { callId: '', success: false, result: null, error: 'Missing "type". Use: limit_buy, limit_sell, stop_loss, take_profit, dca, trailing_stop, twap' };
|
|
237
|
+
}
|
|
238
|
+
const token = params.token ?? ctx.identity.tokenAddress;
|
|
239
|
+
if (!token) {
|
|
240
|
+
return { callId: '', success: false, result: null, error: 'No token address.' };
|
|
241
|
+
}
|
|
242
|
+
const triggerPrice = parseFloat(params.triggerPrice);
|
|
243
|
+
const needsTriggerPrice = ['limit_buy', 'limit_sell', 'stop_loss', 'take_profit'].includes(type);
|
|
244
|
+
if (needsTriggerPrice && (isNaN(triggerPrice) || triggerPrice <= 0)) {
|
|
245
|
+
return { callId: '', success: false, result: null, error: 'Invalid or missing triggerPrice for this order type.' };
|
|
246
|
+
}
|
|
247
|
+
// Trailing stop validation
|
|
248
|
+
if (type === 'trailing_stop' && !params.trailingPct) {
|
|
249
|
+
return { callId: '', success: false, result: null, error: 'trailing_stop requires trailingPct parameter.' };
|
|
250
|
+
}
|
|
251
|
+
// TWAP validation
|
|
252
|
+
if (type === 'twap' && (!params.twapChunks || !params.twapWindowHours)) {
|
|
253
|
+
return { callId: '', success: false, result: null, error: 'twap requires twapChunks and twapWindowHours parameters.' };
|
|
254
|
+
}
|
|
255
|
+
const side = params.side ?? (type.includes('buy') || type === 'dca' ? 'buy' : 'sell');
|
|
256
|
+
// Build chain config if provided
|
|
257
|
+
let chain;
|
|
258
|
+
if (params.chainType) {
|
|
259
|
+
chain = [{
|
|
260
|
+
type: params.chainType,
|
|
261
|
+
triggerPriceEth: parseFloat(params.chainTriggerPrice) || 0,
|
|
262
|
+
action: {
|
|
263
|
+
side: params.chainSide ?? 'sell',
|
|
264
|
+
amountPct: params.chainAmountPct,
|
|
265
|
+
slippageBps: params.slippageBps ?? 200,
|
|
266
|
+
},
|
|
267
|
+
}];
|
|
268
|
+
}
|
|
269
|
+
const order = orders.create({
|
|
270
|
+
type,
|
|
271
|
+
token,
|
|
272
|
+
triggerPriceEth: triggerPrice || 0,
|
|
273
|
+
action: {
|
|
274
|
+
side: side,
|
|
275
|
+
amountPct: params.amountPct,
|
|
276
|
+
amountRaw: params.amountRaw,
|
|
277
|
+
slippageBps: params.slippageBps ?? 200,
|
|
278
|
+
},
|
|
279
|
+
dca: type === 'dca'
|
|
280
|
+
? {
|
|
281
|
+
intervalMs: (params.dcaIntervalHours ?? 24) * 60 * 60 * 1000,
|
|
282
|
+
amountEthPerBuy: params.amountRaw ?? '0.001',
|
|
283
|
+
maxBuys: params.dcaMaxBuys ?? null,
|
|
284
|
+
}
|
|
285
|
+
: undefined,
|
|
286
|
+
trailing: type === 'trailing_stop'
|
|
287
|
+
? {
|
|
288
|
+
pct: params.trailingPct,
|
|
289
|
+
floorPriceEth: params.floorPrice ? parseFloat(params.floorPrice) : undefined,
|
|
290
|
+
}
|
|
291
|
+
: undefined,
|
|
292
|
+
twap: type === 'twap'
|
|
293
|
+
? {
|
|
294
|
+
totalChunks: params.twapChunks,
|
|
295
|
+
windowMs: (params.twapWindowHours ?? 1) * 60 * 60 * 1000,
|
|
296
|
+
maxPriceEth: params.twapMaxPrice ? parseFloat(params.twapMaxPrice) : undefined,
|
|
297
|
+
minPriceEth: params.twapMinPrice ? parseFloat(params.twapMinPrice) : undefined,
|
|
298
|
+
}
|
|
299
|
+
: undefined,
|
|
300
|
+
chain,
|
|
301
|
+
tag: params.tag,
|
|
302
|
+
});
|
|
303
|
+
const lines = [
|
|
304
|
+
`Order created: ${order.id}`,
|
|
305
|
+
` Type: ${order.type}`,
|
|
306
|
+
` ${order.description}`,
|
|
307
|
+
` Token: ${order.token}`,
|
|
308
|
+
];
|
|
309
|
+
if (order.trailing) {
|
|
310
|
+
lines.push(` Trailing: ${order.trailing.pct}% drop from peak (HWM: ${order.trailing.highWaterMark.toExponential(4)} ETH)`);
|
|
311
|
+
}
|
|
312
|
+
if (order.twap) {
|
|
313
|
+
lines.push(` TWAP: ${order.twap.chunksCompleted}/${order.twap.totalChunks} chunks, ${order.twap.amountPerChunk} per chunk`);
|
|
314
|
+
}
|
|
315
|
+
if (order.chain && order.chain.length > 0) {
|
|
316
|
+
lines.push(` Chain: ${order.chain.length} follow-up order(s) on execution`);
|
|
317
|
+
}
|
|
318
|
+
if (order.tag) {
|
|
319
|
+
lines.push(` Tag: ${order.tag}`);
|
|
320
|
+
}
|
|
321
|
+
return { callId: '', success: true, result: lines.join('\n') };
|
|
322
|
+
}
|
|
323
|
+
function handleList(_params, orders) {
|
|
324
|
+
const all = orders.list();
|
|
325
|
+
if (all.length === 0) {
|
|
326
|
+
return { callId: '', success: true, result: 'No orders.' };
|
|
327
|
+
}
|
|
328
|
+
const lines = [`${all.length} order(s):`];
|
|
329
|
+
for (const o of all) {
|
|
330
|
+
lines.push(` [${o.status}] ${o.id}: ${o.description}${o.tag ? ` [tag:${o.tag}]` : ''}`);
|
|
331
|
+
if (o.dca) {
|
|
332
|
+
lines.push(` DCA: ${o.dca.buysCompleted}/${o.dca.maxBuys ?? '∞'} buys, ${o.dca.amountEthPerBuy} ETH each`);
|
|
333
|
+
}
|
|
334
|
+
if (o.trailing) {
|
|
335
|
+
lines.push(` Trailing: peak ${o.trailing.highWaterMark.toExponential(4)}, trigger ${o.trailing.currentTriggerPrice.toExponential(4)}`);
|
|
336
|
+
}
|
|
337
|
+
if (o.twap) {
|
|
338
|
+
lines.push(` TWAP: ${o.twap.chunksCompleted}/${o.twap.totalChunks} chunks, ${o.twap.amountPerChunk} each`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Risk summary
|
|
342
|
+
const riskSummary = orders.getRiskSummary();
|
|
343
|
+
lines.push(``, `--- Risk ---`, riskSummary);
|
|
344
|
+
return { callId: '', success: true, result: lines.join('\n') };
|
|
345
|
+
}
|
|
346
|
+
function handleCancel(params, orders) {
|
|
347
|
+
const orderId = params.orderId;
|
|
348
|
+
if (!orderId) {
|
|
349
|
+
return { callId: '', success: false, result: null, error: 'Missing orderId.' };
|
|
350
|
+
}
|
|
351
|
+
const cancelled = orders.cancel(orderId);
|
|
352
|
+
if (!cancelled) {
|
|
353
|
+
return { callId: '', success: false, result: null, error: `Order ${orderId} not found or not cancellable.` };
|
|
354
|
+
}
|
|
355
|
+
return { callId: '', success: true, result: `Order ${orderId} cancelled.` };
|
|
356
|
+
}
|
|
357
|
+
function handleCancelTag(params, orders) {
|
|
358
|
+
const tag = params.tag;
|
|
359
|
+
if (!tag) {
|
|
360
|
+
return { callId: '', success: false, result: null, error: 'Missing tag parameter.' };
|
|
361
|
+
}
|
|
362
|
+
const count = orders.cancelByTag(tag);
|
|
363
|
+
return { callId: '', success: true, result: `Cancelled ${count} order(s) with tag "${tag}".` };
|
|
364
|
+
}
|
|
365
|
+
function handleCheck(params, orders) {
|
|
366
|
+
const priceStr = params.currentPrice;
|
|
367
|
+
if (!priceStr) {
|
|
368
|
+
return { callId: '', success: false, result: null, error: 'Missing currentPrice.' };
|
|
369
|
+
}
|
|
370
|
+
const currentPrice = parseFloat(priceStr);
|
|
371
|
+
if (isNaN(currentPrice) || currentPrice <= 0) {
|
|
372
|
+
return { callId: '', success: false, result: null, error: 'Invalid currentPrice.' };
|
|
373
|
+
}
|
|
374
|
+
const triggered = orders.checkTriggers(currentPrice);
|
|
375
|
+
if (triggered.length === 0) {
|
|
376
|
+
const pending = orders.list('pending');
|
|
377
|
+
return {
|
|
378
|
+
callId: '',
|
|
379
|
+
success: true,
|
|
380
|
+
result: `No orders triggered at ${currentPrice} ETH. ${pending.length} pending.`,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
const lines = [`${triggered.length} order(s) triggered at ${currentPrice} ETH:`];
|
|
384
|
+
for (const o of triggered) {
|
|
385
|
+
lines.push(` ${o.id} [${o.type}]: ${o.description}`);
|
|
386
|
+
lines.push(` → swap then manage_orders action=executed orderId=${o.id}`);
|
|
387
|
+
}
|
|
388
|
+
return {
|
|
389
|
+
callId: '',
|
|
390
|
+
success: true,
|
|
391
|
+
result: lines.join('\n'),
|
|
392
|
+
metadata: {
|
|
393
|
+
triggeredOrders: triggered.map(o => ({
|
|
394
|
+
id: o.id,
|
|
395
|
+
type: o.type,
|
|
396
|
+
action: o.action,
|
|
397
|
+
token: o.token,
|
|
398
|
+
})),
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
function handleExecuted(params, orders) {
|
|
403
|
+
const orderId = params.orderId;
|
|
404
|
+
if (!orderId) {
|
|
405
|
+
return { callId: '', success: false, result: null, error: 'Missing orderId.' };
|
|
406
|
+
}
|
|
407
|
+
const executionResult = params.executionResult ?? 'executed';
|
|
408
|
+
const chainedOrders = orders.markExecuted(orderId, executionResult);
|
|
409
|
+
const lines = [`Order ${orderId} marked as executed.`];
|
|
410
|
+
if (chainedOrders.length > 0) {
|
|
411
|
+
lines.push(`Created ${chainedOrders.length} chained order(s):`);
|
|
412
|
+
for (const co of chainedOrders) {
|
|
413
|
+
lines.push(` ${co.id}: ${co.description}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return { callId: '', success: true, result: lines.join('\n') };
|
|
417
|
+
}
|
|
418
|
+
function handleFailed(params, orders) {
|
|
419
|
+
const orderId = params.orderId;
|
|
420
|
+
if (!orderId) {
|
|
421
|
+
return { callId: '', success: false, result: null, error: 'Missing orderId.' };
|
|
422
|
+
}
|
|
423
|
+
orders.markPending(orderId);
|
|
424
|
+
orders.recordFailure();
|
|
425
|
+
return {
|
|
426
|
+
callId: '',
|
|
427
|
+
success: true,
|
|
428
|
+
result: `Order ${orderId} reverted to pending. Failure recorded (cooldown active).`,
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
function handlePause(params, orders) {
|
|
432
|
+
const orderId = params.orderId;
|
|
433
|
+
if (!orderId) {
|
|
434
|
+
return { callId: '', success: false, result: null, error: 'Missing orderId.' };
|
|
435
|
+
}
|
|
436
|
+
const paused = orders.pause(orderId);
|
|
437
|
+
if (!paused) {
|
|
438
|
+
return { callId: '', success: false, result: null, error: `Order ${orderId} not found or not in pending state.` };
|
|
439
|
+
}
|
|
440
|
+
return { callId: '', success: true, result: `Order ${orderId} paused.` };
|
|
441
|
+
}
|
|
442
|
+
function handleResume(params, orders) {
|
|
443
|
+
const orderId = params.orderId;
|
|
444
|
+
if (!orderId) {
|
|
445
|
+
return { callId: '', success: false, result: null, error: 'Missing orderId.' };
|
|
446
|
+
}
|
|
447
|
+
const resumed = orders.resume(orderId);
|
|
448
|
+
if (!resumed) {
|
|
449
|
+
return { callId: '', success: false, result: null, error: `Order ${orderId} not found or not paused.` };
|
|
450
|
+
}
|
|
451
|
+
return { callId: '', success: true, result: `Order ${orderId} resumed.` };
|
|
452
|
+
}
|
|
453
|
+
function handleRisk(orders) {
|
|
454
|
+
return { callId: '', success: true, result: orders.getRiskSummary() };
|
|
455
|
+
}
|
|
456
|
+
function handleResetCircuitBreaker(orders) {
|
|
457
|
+
orders.resetCircuitBreaker();
|
|
458
|
+
return { callId: '', success: true, result: 'Circuit breaker reset. Orders will resume on next trigger check.' };
|
|
459
|
+
}
|
|
460
|
+
function handleCleanup(orders) {
|
|
461
|
+
const removed = orders.cleanup();
|
|
462
|
+
return {
|
|
463
|
+
callId: '',
|
|
464
|
+
success: true,
|
|
465
|
+
result: removed > 0
|
|
466
|
+
? `Cleaned up ${removed} completed/cancelled/expired order(s).`
|
|
467
|
+
: 'No orders to clean up.',
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=manage-orders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-orders.js","sourceRoot":"","sources":["../../src/skills/manage-orders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: portfolio — View multi-token portfolio with P&L and allocation.
|
|
3
|
+
*
|
|
4
|
+
* Shows:
|
|
5
|
+
* - All token positions with current value and unrealized P&L
|
|
6
|
+
* - Realized P&L from past sells
|
|
7
|
+
* - Portfolio allocation percentages
|
|
8
|
+
* - Concentration warnings
|
|
9
|
+
* - Historical performance (if snapshots exist)
|
|
10
|
+
*
|
|
11
|
+
* Actions: view, history, record_trade
|
|
12
|
+
*
|
|
13
|
+
* The portfolio is populated automatically by handleSkillSideEffects
|
|
14
|
+
* when the agent executes swaps. The agent can also manually record
|
|
15
|
+
* trades via the record_trade action for OTC / external transfers.
|
|
16
|
+
*/
|
|
17
|
+
import type { SkillDefinition } from '../types.js';
|
|
18
|
+
export declare const portfolioSkill: SkillDefinition;
|
|
19
|
+
//# sourceMappingURL=portfolio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/skills/portfolio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAE7E,eAAO,MAAM,cAAc,EAAE,eA+E5B,CAAC"}
|