jaspervault_cli 1.0.27 → 1.0.29
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 +25 -24
- package/dist/bin/jv.js +6 -2
- package/dist/bin/jv.js.map +1 -1
- package/dist/src/client.js +28 -1
- package/dist/src/client.js.map +1 -1
- package/dist/src/commands/deposit.js +129 -125
- package/dist/src/commands/deposit.js.map +1 -1
- package/dist/src/commands/install.d.ts +2 -0
- package/dist/src/commands/install.js +184 -0
- package/dist/src/commands/install.js.map +1 -0
- package/dist/src/commands/limit-order.js +7 -0
- package/dist/src/commands/limit-order.js.map +1 -1
- package/dist/src/commands/mcp.d.ts +2 -0
- package/dist/src/commands/mcp.js +10 -0
- package/dist/src/commands/mcp.js.map +1 -0
- package/dist/src/commands/sl.js +12 -2
- package/dist/src/commands/sl.js.map +1 -1
- package/dist/src/commands/tp.js +12 -2
- package/dist/src/commands/tp.js.map +1 -1
- package/dist/src/commands/vault.js +111 -87
- package/dist/src/commands/vault.js.map +1 -1
- package/dist/src/commands/withdraw.d.ts +2 -0
- package/dist/src/commands/withdraw.js +114 -0
- package/dist/src/commands/withdraw.js.map +1 -0
- package/dist/src/mcp/executor.d.ts +23 -0
- package/dist/src/mcp/executor.js +75 -0
- package/dist/src/mcp/executor.js.map +1 -0
- package/dist/src/mcp/index.d.ts +1 -0
- package/dist/src/mcp/index.js +58 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/installer.d.ts +9 -0
- package/dist/src/mcp/installer.js +66 -0
- package/dist/src/mcp/installer.js.map +1 -0
- package/dist/src/mcp/tools.d.ts +15 -0
- package/dist/src/mcp/tools.js +250 -0
- package/dist/src/mcp/tools.js.map +1 -0
- package/dist/src/services/order-signer.js +1 -1
- package/dist/src/services/order-signer.js.map +1 -1
- package/dist/src/services/session-poller.d.ts +12 -0
- package/dist/src/services/session-poller.js +57 -0
- package/dist/src/services/session-poller.js.map +1 -0
- package/dist/src/templates/skill-body.d.ts +1 -1
- package/dist/src/templates/skill-body.js +1 -1
- package/dist/src/templates/skill-content/SKILL.core.md +52 -45
- package/dist/src/templates/skill-content/frontmatter/claude.md +1 -1
- package/dist/src/templates/skill-content/frontmatter/openclaw.md +2 -2
- package/dist/src/templates/skill-content/references/onboarding.md +68 -87
- package/dist/src/templates/skill-content/references/queries.md +58 -188
- package/dist/src/templates/skill-content/references/trading.md +128 -178
- package/dist/src/types.d.ts +13 -6
- package/dist/src/utils/config.d.ts +1 -1
- package/dist/src/utils/config.js +1 -1
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/endpoints.d.ts +3 -0
- package/dist/src/utils/endpoints.js +5 -0
- package/dist/src/utils/endpoints.js.map +1 -1
- package/package.json +3 -5
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
export const TOOLS = [
|
|
2
|
+
// ── Trading ──
|
|
3
|
+
{
|
|
4
|
+
name: 'create_order',
|
|
5
|
+
description: 'Create a market or limit order. For market orders, omit limit_price. ' +
|
|
6
|
+
'To close a position, create an opposite-side order. ' +
|
|
7
|
+
'Returns jobId (market) or limitOrderId (limit).',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
side: { type: 'string', enum: ['long', 'short'], description: 'Order direction' },
|
|
12
|
+
symbol: { type: 'string', description: 'Trading symbol, e.g. JBTC, JETH' },
|
|
13
|
+
margin: { type: 'number', description: 'Margin (collateral) in USDC' },
|
|
14
|
+
leverage: { type: 'number', description: 'Leverage multiplier (default: 50)' },
|
|
15
|
+
limit_price: { type: 'number', description: 'Limit price in USDC. Omit for market order.' },
|
|
16
|
+
ppo: { type: 'boolean', description: 'Enable PPO hedge option protection' },
|
|
17
|
+
ppo_expire: { type: 'string', enum: ['30m', '8h'], description: 'PPO expiry duration' },
|
|
18
|
+
ppo_category: { type: 'string', enum: ['ATM', 'OTM'], description: 'PPO option category' },
|
|
19
|
+
ppo_tier: { type: 'number', description: 'OTM strike offset tier 1-5 (0.1%-0.5%)' },
|
|
20
|
+
ttl: { type: 'number', description: 'Order TTL in seconds (default: 3600)' },
|
|
21
|
+
},
|
|
22
|
+
required: ['side', 'symbol', 'margin'],
|
|
23
|
+
},
|
|
24
|
+
cliCommand: ['order', 'create'],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'protect_order',
|
|
28
|
+
description: 'Add PPO hedge option protection to an existing position without changing position size.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
order_id: { type: 'string', description: 'Existing perps order ID to protect' },
|
|
33
|
+
symbol: { type: 'string', description: 'Asset symbol, e.g. JBTC' },
|
|
34
|
+
ppo_expire: { type: 'string', enum: ['30m', '8h'], description: 'Option expiry (default: 30m)' },
|
|
35
|
+
ppo_category: { type: 'string', enum: ['ATM', 'OTM'], description: 'Option category (default: ATM)' },
|
|
36
|
+
ppo_tier: { type: 'number', description: 'OTM strike offset tier 1-5' },
|
|
37
|
+
},
|
|
38
|
+
required: ['order_id', 'symbol'],
|
|
39
|
+
},
|
|
40
|
+
cliCommand: ['order', 'protect'],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'set_take_profit',
|
|
44
|
+
description: 'Set a take-profit limit order for an existing position.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
order_id: { type: 'string', description: 'Existing order ID' },
|
|
49
|
+
price: { type: 'number', description: 'Take-profit price in USDC' },
|
|
50
|
+
symbol: { type: 'string', description: 'Asset symbol, e.g. JBTC' },
|
|
51
|
+
side: { type: 'string', enum: ['long', 'short'], description: 'Position side (default: long)' },
|
|
52
|
+
ppo: { type: 'boolean', description: 'Enable PPO hedge option' },
|
|
53
|
+
ppo_expire: { type: 'string', enum: ['30m', '8h'] },
|
|
54
|
+
ppo_category: { type: 'string', enum: ['ATM', 'OTM'] },
|
|
55
|
+
ppo_tier: { type: 'number' },
|
|
56
|
+
ttl: { type: 'number', description: 'Order TTL in seconds (default: 86400)' },
|
|
57
|
+
},
|
|
58
|
+
required: ['order_id', 'price', 'symbol'],
|
|
59
|
+
},
|
|
60
|
+
cliCommand: ['tp', 'set'],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'set_stop_loss',
|
|
64
|
+
description: 'Set a stop-loss limit order for an existing position.',
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: 'object',
|
|
67
|
+
properties: {
|
|
68
|
+
order_id: { type: 'string', description: 'Existing order ID' },
|
|
69
|
+
price: { type: 'number', description: 'Stop-loss price in USDC' },
|
|
70
|
+
symbol: { type: 'string', description: 'Asset symbol, e.g. JBTC' },
|
|
71
|
+
side: { type: 'string', enum: ['long', 'short'], description: 'Position side (default: long)' },
|
|
72
|
+
ppo: { type: 'boolean', description: 'Enable PPO hedge option' },
|
|
73
|
+
ppo_expire: { type: 'string', enum: ['30m', '8h'] },
|
|
74
|
+
ppo_category: { type: 'string', enum: ['ATM', 'OTM'] },
|
|
75
|
+
ppo_tier: { type: 'number' },
|
|
76
|
+
ttl: { type: 'number', description: 'Order TTL in seconds (default: 86400)' },
|
|
77
|
+
},
|
|
78
|
+
required: ['order_id', 'price', 'symbol'],
|
|
79
|
+
},
|
|
80
|
+
cliCommand: ['sl', 'set'],
|
|
81
|
+
},
|
|
82
|
+
// ── Queries ──
|
|
83
|
+
{
|
|
84
|
+
name: 'list_orders',
|
|
85
|
+
description: 'List positions/orders. Defaults to active positions only. Use all=true to include closed.',
|
|
86
|
+
inputSchema: {
|
|
87
|
+
type: 'object',
|
|
88
|
+
properties: {
|
|
89
|
+
position_side: { type: 'string', enum: ['LONG', 'SHORT'], description: 'Filter by side' },
|
|
90
|
+
all: { type: 'boolean', description: 'Include closed orders (default: active only)' },
|
|
91
|
+
since: { type: 'string', description: 'Filter orders after this time (e.g. "7d", "2025-01-01")' },
|
|
92
|
+
until: { type: 'string', description: 'Filter orders before this time' },
|
|
93
|
+
page: { type: 'number', description: 'Page number (default: 1)' },
|
|
94
|
+
limit: { type: 'number', description: 'Items per page (default: 20)' },
|
|
95
|
+
},
|
|
96
|
+
required: [],
|
|
97
|
+
},
|
|
98
|
+
cliCommand: ['orders', 'list', '--pretty'],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'get_order',
|
|
102
|
+
description: 'Get a single order/position by ID.',
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
order_id: { type: 'string', description: 'Order ID' },
|
|
107
|
+
},
|
|
108
|
+
required: ['order_id'],
|
|
109
|
+
},
|
|
110
|
+
cliCommand: ['orders', 'get'],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'get_order_stats',
|
|
114
|
+
description: 'Get order statistics for the configured vault.',
|
|
115
|
+
inputSchema: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
properties: {},
|
|
118
|
+
required: [],
|
|
119
|
+
},
|
|
120
|
+
cliCommand: ['orders', 'stats', '--pretty'],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'get_price',
|
|
124
|
+
description: 'Get real-time market price for an asset.',
|
|
125
|
+
inputSchema: {
|
|
126
|
+
type: 'object',
|
|
127
|
+
properties: {
|
|
128
|
+
symbol: { type: 'string', description: 'Asset symbol, e.g. JBTC, JETH' },
|
|
129
|
+
},
|
|
130
|
+
required: ['symbol'],
|
|
131
|
+
},
|
|
132
|
+
cliCommand: ['price'],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: 'get_job_status',
|
|
136
|
+
description: 'Get execution status/result of a market order job.',
|
|
137
|
+
inputSchema: {
|
|
138
|
+
type: 'object',
|
|
139
|
+
properties: {
|
|
140
|
+
job_id: { type: 'string', description: 'Job ID returned from market order creation' },
|
|
141
|
+
},
|
|
142
|
+
required: ['job_id'],
|
|
143
|
+
},
|
|
144
|
+
cliCommand: ['job', 'status'],
|
|
145
|
+
},
|
|
146
|
+
// ── Limit Orders ──
|
|
147
|
+
{
|
|
148
|
+
name: 'list_limit_orders',
|
|
149
|
+
description: 'List limit orders by wallet address.',
|
|
150
|
+
inputSchema: {
|
|
151
|
+
type: 'object',
|
|
152
|
+
properties: {
|
|
153
|
+
wallet: { type: 'string', description: 'Wallet address' },
|
|
154
|
+
status: {
|
|
155
|
+
type: 'string',
|
|
156
|
+
enum: ['PENDING', 'TRIGGERED', 'EXECUTING', 'COMPLETED', 'FAILED', 'EXPIRED', 'CANCELLED'],
|
|
157
|
+
description: 'Filter by status',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
required: ['wallet'],
|
|
161
|
+
},
|
|
162
|
+
cliCommand: ['limit-order', 'list'],
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'get_limit_order_status',
|
|
166
|
+
description: 'Get status of a specific limit order.',
|
|
167
|
+
inputSchema: {
|
|
168
|
+
type: 'object',
|
|
169
|
+
properties: {
|
|
170
|
+
limit_order_id: { type: 'string', description: 'Limit order ID' },
|
|
171
|
+
},
|
|
172
|
+
required: ['limit_order_id'],
|
|
173
|
+
},
|
|
174
|
+
cliCommand: ['limit-order', 'status'],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: 'cancel_limit_order',
|
|
178
|
+
description: 'Cancel a pending limit order.',
|
|
179
|
+
inputSchema: {
|
|
180
|
+
type: 'object',
|
|
181
|
+
properties: {
|
|
182
|
+
limit_order_id: { type: 'string', description: 'Limit order ID to cancel' },
|
|
183
|
+
},
|
|
184
|
+
required: ['limit_order_id'],
|
|
185
|
+
},
|
|
186
|
+
cliCommand: ['limit-order', 'cancel'],
|
|
187
|
+
},
|
|
188
|
+
// ── Wallet Setup & Deposit (hosted web page) ──
|
|
189
|
+
{
|
|
190
|
+
name: 'wallet_setup',
|
|
191
|
+
description: 'Set up a new JasperVault wallet via hosted web page. ' +
|
|
192
|
+
'Returns a URL that the user must open in their browser to connect their wallet ' +
|
|
193
|
+
'and sign the delegation authorization. Polls automatically until complete.',
|
|
194
|
+
inputSchema: {
|
|
195
|
+
type: 'object',
|
|
196
|
+
properties: {
|
|
197
|
+
network: { type: 'string', description: 'Network name (default: jaspervault)' },
|
|
198
|
+
vault_types: { type: 'string', description: 'Comma-separated vault types (default: 33,37)' },
|
|
199
|
+
},
|
|
200
|
+
required: [],
|
|
201
|
+
},
|
|
202
|
+
cliCommand: ['vault', 'setup'],
|
|
203
|
+
timeoutMs: 960_000, // 16 minutes
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: 'deposit_via_browser',
|
|
207
|
+
description: 'Deposit tokens from Base to JasperVault via hosted web page. ' +
|
|
208
|
+
'Returns a URL for the user to open in their browser to approve and send the deposit transaction. ' +
|
|
209
|
+
'Use when the user cannot sign transactions locally (e.g. WhatsApp, Telegram agents).',
|
|
210
|
+
inputSchema: {
|
|
211
|
+
type: 'object',
|
|
212
|
+
properties: {
|
|
213
|
+
token: { type: 'string', description: 'Token: jbtc | jusdc | cbbtc | usdc' },
|
|
214
|
+
amount: { type: 'number', description: 'Amount in human-readable units, e.g. 1000 for USDC' },
|
|
215
|
+
network: { type: 'string', description: 'Network name (default: jaspervault)' },
|
|
216
|
+
},
|
|
217
|
+
required: ['token', 'amount'],
|
|
218
|
+
},
|
|
219
|
+
cliCommand: ['deposit'],
|
|
220
|
+
timeoutMs: 960_000,
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: 'withdraw_via_browser',
|
|
224
|
+
description: 'Withdraw tokens from JasperVault to Base via hosted web page. ' +
|
|
225
|
+
'Returns a URL for the user to open in their browser to sign the withdrawal, bridge, and redeem. ' +
|
|
226
|
+
'Use when the user cannot sign transactions locally (e.g. WhatsApp, Telegram agents).',
|
|
227
|
+
inputSchema: {
|
|
228
|
+
type: 'object',
|
|
229
|
+
properties: {
|
|
230
|
+
token: { type: 'string', description: 'Token: jbtc | jusdc | cbbtc | usdc' },
|
|
231
|
+
amount: { type: 'number', description: 'Amount in human-readable units, e.g. 100 for USDC' },
|
|
232
|
+
network: { type: 'string', description: 'Network name (default: base_uat)' },
|
|
233
|
+
},
|
|
234
|
+
required: ['token', 'amount'],
|
|
235
|
+
},
|
|
236
|
+
cliCommand: ['withdraw'],
|
|
237
|
+
timeoutMs: 960_000,
|
|
238
|
+
},
|
|
239
|
+
];
|
|
240
|
+
/**
|
|
241
|
+
* Parameters that are positional arguments (not flags) in CLI.
|
|
242
|
+
* Key: tool name, Value: param name that should be passed as positional arg.
|
|
243
|
+
*/
|
|
244
|
+
export const POSITIONAL_ARGS = {
|
|
245
|
+
get_order: 'order_id',
|
|
246
|
+
get_job_status: 'job_id',
|
|
247
|
+
get_limit_order_status: 'limit_order_id',
|
|
248
|
+
cancel_limit_order: 'limit_order_id',
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ export async function buildSignData(intent, profile, network) {
|
|
|
38
38
|
const tpSlIntent = intent;
|
|
39
39
|
orderID = Number(tpSlIntent.orderID);
|
|
40
40
|
targetPrice = ethers.parseUnits(tpSlIntent.price, 18).toString();
|
|
41
|
-
marginAmount = '0';
|
|
41
|
+
marginAmount = tpSlIntent.marginAmount ?? '0';
|
|
42
42
|
productType = (100 * 10 ** 12).toString();
|
|
43
43
|
writerSide = tpSlIntent.side === 'short' ? 'long' : 'short';
|
|
44
44
|
signOrderType = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-signer.js","sourceRoot":"","sources":["../../../src/services/order-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,GAAG,gFAAgF,CAAC;AACrG,MAAM,eAAe,GAAG,GAAG,IAAI,GAAG,CAAC;AAEnC,MAAM,gCAAgC,GAAG;IACvC,qfAAqf;CACtf,CAAC;AAQF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA4C,EAC5C,OAAqB,EACrB,OAAe;IAEf,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC;IAC1E,MAAM,UAAU,GAAG,MAAoC,CAAC;IAExD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC;IACxE,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,SAAS,GAAG,aAAc,CAAC;IAEjC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAK,MAA2B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrG,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAK,MAA2B,CAAC,IAAI,IAAI,MAAM,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,IAAK,MAA2B,CAAC,UAAU,IAAI,IAAI,CAAC;IACrF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAEvD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC;IAC1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,IAAI,WAAmB,CAAC;IACxB,IAAI,OAAe,CAAC;IACpB,IAAI,UAA4B,CAAC;IACjC,IAAI,aAAqB,CAAC;IAE1B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,MAA0B,CAAC;QAC9C,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjE,YAAY,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"order-signer.js","sourceRoot":"","sources":["../../../src/services/order-signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ApiClient } from '../client.js';
|
|
2
|
+
import type { CliSessionStatusResponse } from '../types.js';
|
|
3
|
+
export interface PollSessionOptions {
|
|
4
|
+
intervalMs?: number;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Poll a CLI session until it reaches a terminal status (completed / failed / expired).
|
|
9
|
+
* Uses raw fetch to avoid process.exit on transient HTTP errors (e.g. 429 rate limit).
|
|
10
|
+
* Outputs periodic heartbeat JSON to stderr so MCP can relay progress.
|
|
11
|
+
*/
|
|
12
|
+
export declare function pollSession(apiClient: ApiClient, sessionId: string, opts?: PollSessionOptions): Promise<CliSessionStatusResponse>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ENDPOINTS } from '../utils/endpoints.js';
|
|
2
|
+
import { loadConfig } from '../utils/config.js';
|
|
3
|
+
const DEFAULT_INTERVAL_MS = 3_000;
|
|
4
|
+
const DEFAULT_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes
|
|
5
|
+
const HEARTBEAT_INTERVAL_MS = 10_000;
|
|
6
|
+
/**
|
|
7
|
+
* Poll a CLI session until it reaches a terminal status (completed / failed / expired).
|
|
8
|
+
* Uses raw fetch to avoid process.exit on transient HTTP errors (e.g. 429 rate limit).
|
|
9
|
+
* Outputs periodic heartbeat JSON to stderr so MCP can relay progress.
|
|
10
|
+
*/
|
|
11
|
+
export async function pollSession(apiClient, sessionId, opts) {
|
|
12
|
+
const intervalMs = opts?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
13
|
+
const timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
14
|
+
const start = Date.now();
|
|
15
|
+
let lastHeartbeat = 0;
|
|
16
|
+
const config = loadConfig();
|
|
17
|
+
const baseUrl = config.apiUrl.endsWith('/') ? config.apiUrl.slice(0, -1) : config.apiUrl;
|
|
18
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
19
|
+
if (config.apiKey) {
|
|
20
|
+
headers['Authorization'] = `Bearer ${config.apiKey}`;
|
|
21
|
+
}
|
|
22
|
+
while (Date.now() - start < timeoutMs) {
|
|
23
|
+
try {
|
|
24
|
+
const url = `${baseUrl}${ENDPOINTS.CLI_SESSION_STATUS}/${sessionId}/status`;
|
|
25
|
+
const response = await fetch(url, { method: 'GET', headers });
|
|
26
|
+
if (response.ok) {
|
|
27
|
+
const body = await response.json();
|
|
28
|
+
let data = body.data;
|
|
29
|
+
// Unwrap marketplace double-envelope
|
|
30
|
+
if (data && typeof data === 'object' && 'code' in data && 'data' in data) {
|
|
31
|
+
data = data.data;
|
|
32
|
+
}
|
|
33
|
+
if (data && data.status !== 'pending') {
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// On non-ok (429, 500, etc.), just retry next tick
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Swallow network errors during polling — retry on next tick
|
|
41
|
+
}
|
|
42
|
+
// Emit heartbeat on stderr for MCP/agent consumption
|
|
43
|
+
const elapsed = Math.round((Date.now() - start) / 1000);
|
|
44
|
+
if (Date.now() - lastHeartbeat >= HEARTBEAT_INTERVAL_MS) {
|
|
45
|
+
process.stderr.write(JSON.stringify({
|
|
46
|
+
status: 'waiting',
|
|
47
|
+
phase: 'user_signing',
|
|
48
|
+
elapsed,
|
|
49
|
+
message: 'Waiting for user to complete signing in browser...',
|
|
50
|
+
}) + '\n');
|
|
51
|
+
lastHeartbeat = Date.now();
|
|
52
|
+
}
|
|
53
|
+
await new Promise((r) => setTimeout(r, intervalMs));
|
|
54
|
+
}
|
|
55
|
+
return { status: 'expired' };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=session-poller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-poller.js","sourceRoot":"","sources":["../../../src/services/session-poller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AACxD,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAOrC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAoB,EACpB,SAAiB,EACjB,IAAyB;IAEzB,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,mBAAmB,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,kBAAkB,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACzF,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS,CAAC,kBAAkB,IAAI,SAAS,SAAS,CAAC;YAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAE9D,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiC,CAAC;gBAClE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBAErB,qCAAqC;gBACrC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACzE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACnB,CAAC;gBAED,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACtC,OAAO,IAAgC,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,mDAAmD;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;QAED,qDAAqD;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,IAAI,qBAAqB,EAAE,CAAC;YACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;gBACb,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,cAAc;gBACrB,OAAO;gBACP,OAAO,EAAE,oDAAoD;aAC9D,CAAC,GAAG,IAAI,CACV,CAAC;YACF,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Skill template content and banner for jv
|
|
2
|
+
* Skill template content and banner for jv install command.
|
|
3
3
|
* Generates a multi-file skill structure:
|
|
4
4
|
* SKILL.md — compact core rules + activation + intent table
|
|
5
5
|
* references/ — detailed docs loaded on demand by the agent
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Skill template content and banner for jv
|
|
2
|
+
* Skill template content and banner for jv install command.
|
|
3
3
|
* Generates a multi-file skill structure:
|
|
4
4
|
* SKILL.md — compact core rules + activation + intent table
|
|
5
5
|
* references/ — detailed docs loaded on demand by the agent
|
|
@@ -1,51 +1,58 @@
|
|
|
1
1
|
# JasperVault Trading Skill
|
|
2
2
|
|
|
3
|
-
Trade perpetual contracts on JasperVault
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
|
33
|
-
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
| Open
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
3
|
+
Trade perpetual contracts on JasperVault using the `jasper-vault` MCP tools. No private key is ever required — the user signs in their browser.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
JasperVault provides MCP tools (via `jasper-vault` MCP server) for all trading operations. These tools handle timeouts, polling, and error recovery automatically. Always use MCP tools — never run `jv` shell commands directly, because long-running operations like wallet setup will be killed by shell timeouts.
|
|
8
|
+
|
|
9
|
+
## Important Behaviors
|
|
10
|
+
|
|
11
|
+
1. **Browser signing**: `wallet_setup` and `deposit_via_browser` return a URL. Display it as a clickable link — the user opens it in their browser to connect their wallet and sign. The tool polls automatically and returns the result when done (up to 16 minutes).
|
|
12
|
+
|
|
13
|
+
2. **Real-time prices**: Always call `get_price` before any price-dependent operation. Never guess prices — they change every second.
|
|
14
|
+
|
|
15
|
+
3. **PPO auto-cancellation**: The smart contract automatically cancels existing PPO hedge options when you execute any position operation (reduce, close, add size) without `ppo: true`. There is no separate "cancel PPO" tool. Attempting a separate cancellation risks unintended position closures.
|
|
16
|
+
|
|
17
|
+
4. **Standalone PPO**: To add hedge protection to an existing position, use `protect_order`. Don't use `create_order` with `ppo: true` for this — that adds position size. `create_order` with `ppo` is only for opening new positions or adding size with protection.
|
|
18
|
+
|
|
19
|
+
5. **Market order result**: `create_order` (without `limit_price`) auto-waits up to 60s for the on-chain result. If `status === "completed"`, the order is executed — don't retry or place another order. The `operation` field contains raw on-chain data in wei — don't interpret it. Use `list_orders` to verify the actual position with human-readable fields.
|
|
20
|
+
|
|
21
|
+
6. **Deposit flow**: `deposit_via_browser` returns a URL for the user to open in their browser. The tool polls automatically. If `arrived` is false after completion, tokens may still be in transit — tell the user to wait a few minutes.
|
|
22
|
+
|
|
23
|
+
## Getting Started
|
|
24
|
+
|
|
25
|
+
Check if vault is initialized by calling `list_orders`. If it fails with errors like "delegation key not found" or "vault not initialized" or "no profile":
|
|
26
|
+
- Tell the user their vault needs initialization — they'll sign in their browser, no private key needed.
|
|
27
|
+
- Call `wallet_setup` and display the returned URL as a clickable link.
|
|
28
|
+
- Wait for the tool to return success, then proceed.
|
|
29
|
+
|
|
30
|
+
## Intent → MCP Tool Reference
|
|
31
|
+
|
|
32
|
+
| User Intent | MCP Tool | Key Parameters | Details |
|
|
33
|
+
|-------------|----------|----------------|---------|
|
|
34
|
+
| Initialize wallet | `wallet_setup` | — | [onboarding](references/onboarding.md) |
|
|
35
|
+
| Deposit tokens | `deposit_via_browser` | `token`, `amount` | [onboarding](references/onboarding.md) |
|
|
36
|
+
| Withdraw tokens | `withdraw_via_browser` | `token`, `amount` | [onboarding](references/onboarding.md) |
|
|
37
|
+
| Get current price | `get_price` | `symbol` | [queries](references/queries.md) |
|
|
38
|
+
| Open position (market) | `create_order` | `side`, `symbol`, `margin` | [trading](references/trading.md) |
|
|
39
|
+
| Open position (limit) | `create_order` | + `limit_price` | [trading](references/trading.md) |
|
|
40
|
+
| Close position | `create_order` | opposite `side` | [trading](references/trading.md) |
|
|
41
|
+
| Add size | `create_order` | same `side` | [trading](references/trading.md) |
|
|
42
|
+
| Set take-profit | `set_take_profit` | `order_id`, `price`, `symbol` | [trading](references/trading.md) |
|
|
43
|
+
| Set stop-loss | `set_stop_loss` | `order_id`, `price`, `symbol` | [trading](references/trading.md) |
|
|
44
|
+
| Add PPO to existing | `protect_order` | `order_id`, `symbol` | [trading](references/trading.md) |
|
|
45
|
+
| Open with PPO | `create_order` | + `ppo: true` | [trading](references/trading.md) |
|
|
46
|
+
| Remove hedge | `create_order` | without `ppo` | [trading](references/trading.md) |
|
|
47
|
+
| List positions | `list_orders` | — | [queries](references/queries.md) |
|
|
48
|
+
| Get position detail | `get_order` | `order_id` | [queries](references/queries.md) |
|
|
49
|
+
| Portfolio stats | `get_order_stats` | — | [queries](references/queries.md) |
|
|
50
|
+
| Job status | `get_job_status` | `job_id` | [queries](references/queries.md) |
|
|
51
|
+
| List limit orders | `list_limit_orders` | `wallet` | [queries](references/queries.md) |
|
|
52
|
+
| Cancel limit order | `cancel_limit_order` | `limit_order_id` | [queries](references/queries.md) |
|
|
46
53
|
|
|
47
54
|
## Security
|
|
48
55
|
|
|
49
56
|
- Never log or display private keys, signatures, or API keys.
|
|
50
|
-
- The
|
|
51
|
-
-
|
|
57
|
+
- The system signs orders via a delegation wallet stored in `~/.jaspervault/keys.json`.
|
|
58
|
+
- Never ask the user to set `PRIVATE_KEY` — that's for CI/automation only.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jasper-vault-cli
|
|
3
|
-
description: "Trade perpetual contracts (perps) on JasperVault — open/close positions, set TP/SL, manage limit orders, deposit, and query portfolio
|
|
3
|
+
description: "Trade perpetual contracts (perps) on JasperVault using the jasper-vault MCP tools — open/close positions, set TP/SL, manage limit orders, deposit/withdraw, and query portfolio. Initialize wallet via browser signing (no private key needed). Use this skill whenever the user mentions JasperVault, perps trading, opening positions, setting stop-loss or take-profit, depositing crypto, or checking their portfolio."
|
|
4
4
|
---
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jasper-vault-cli
|
|
3
|
-
description: "Trade perpetual contracts (perps) on JasperVault — open/close positions, set TP/SL, manage limit orders, deposit, and query portfolio
|
|
3
|
+
description: "Trade perpetual contracts (perps) on JasperVault using the jasper-vault MCP tools — open/close positions, set TP/SL, manage limit orders, deposit/withdraw, and query portfolio. Initialize wallet via browser signing (no private key needed). Use this skill whenever the user mentions JasperVault, perps trading, opening positions, setting stop-loss or take-profit, depositing crypto, or checking their portfolio."
|
|
4
4
|
trigger: "jaspervault|jasper vault|jasper trading|jv|jv trade|jv order|在jasper交易|jasper 交易|初始化钱包|连接钱包|开仓|平仓|做多|做空|止盈|止损|查看持仓|永续合约"
|
|
5
|
-
tools: [
|
|
5
|
+
tools: [mcp]
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
8
8
|
requires:
|