@oobe-protocol-labs/sap-mcp-server 0.9.37 → 0.9.50
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/.env.example +14 -0
- package/CHANGELOG.md +85 -0
- package/README.md +3 -3
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
- package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
- package/dist/config/env.d.ts +51 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +32 -2
- package/dist/config/env.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/core/logger.js +1 -1
- package/dist/payments/monetization-gate.d.ts +5 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +39 -2
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/prepaid-credit-store.d.ts +111 -0
- package/dist/payments/prepaid-credit-store.d.ts.map +1 -0
- package/dist/payments/prepaid-credit-store.js +230 -0
- package/dist/payments/prepaid-credit-store.js.map +1 -0
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +40 -1
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/schema-validation.d.ts +52 -0
- package/dist/payments/schema-validation.d.ts.map +1 -0
- package/dist/payments/schema-validation.js +112 -0
- package/dist/payments/schema-validation.js.map +1 -0
- package/dist/payments/x402-paid-call.d.ts +21 -0
- package/dist/payments/x402-paid-call.d.ts.map +1 -1
- package/dist/payments/x402-paid-call.js +108 -3
- package/dist/payments/x402-paid-call.js.map +1 -1
- package/dist/perps/adrena/adrena-builder-commodity.d.ts +63 -0
- package/dist/perps/adrena/adrena-builder-commodity.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-commodity.js +200 -0
- package/dist/perps/adrena/adrena-builder-commodity.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-core.d.ts +319 -0
- package/dist/perps/adrena/adrena-builder-core.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-core.js +517 -0
- package/dist/perps/adrena/adrena-builder-core.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-liquidity.d.ts +50 -0
- package/dist/perps/adrena/adrena-builder-liquidity.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-liquidity.js +196 -0
- package/dist/perps/adrena/adrena-builder-liquidity.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-staking.d.ts +57 -0
- package/dist/perps/adrena/adrena-builder-staking.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-staking.js +368 -0
- package/dist/perps/adrena/adrena-builder-staking.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-trading.d.ts +160 -0
- package/dist/perps/adrena/adrena-builder-trading.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-trading.js +835 -0
- package/dist/perps/adrena/adrena-builder-trading.js.map +1 -0
- package/dist/perps/adrena/adrena-builder.d.ts +22 -0
- package/dist/perps/adrena/adrena-builder.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder.js +22 -0
- package/dist/perps/adrena/adrena-builder.js.map +1 -0
- package/dist/perps/adrena/adrena-constants.d.ts +163 -0
- package/dist/perps/adrena/adrena-constants.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-constants.js +122 -0
- package/dist/perps/adrena/adrena-constants.js.map +1 -0
- package/dist/perps/adrena/adrena-data-api.d.ts +180 -0
- package/dist/perps/adrena/adrena-data-api.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-data-api.js +169 -0
- package/dist/perps/adrena/adrena-data-api.js.map +1 -0
- package/dist/perps/adrena/adrena-idl.d.ts +15084 -0
- package/dist/perps/adrena/adrena-idl.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-idl.js +29903 -0
- package/dist/perps/adrena/adrena-idl.js.map +1 -0
- package/dist/perps/adrena/adrena-pda.d.ts +147 -0
- package/dist/perps/adrena/adrena-pda.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-pda.js +211 -0
- package/dist/perps/adrena/adrena-pda.js.map +1 -0
- package/dist/perps/adrena/index.d.ts +12 -0
- package/dist/perps/adrena/index.d.ts.map +1 -0
- package/dist/perps/adrena/index.js +12 -0
- package/dist/perps/adrena/index.js.map +1 -0
- package/dist/perps/chart-indicators.d.ts +27 -0
- package/dist/perps/chart-indicators.d.ts.map +1 -0
- package/dist/perps/chart-indicators.js +345 -0
- package/dist/perps/chart-indicators.js.map +1 -0
- package/dist/perps/chart-tools.d.ts +45 -0
- package/dist/perps/chart-tools.d.ts.map +1 -0
- package/dist/perps/chart-tools.js +341 -0
- package/dist/perps/chart-tools.js.map +1 -0
- package/dist/perps/perp-analytics-tools.d.ts +20 -0
- package/dist/perps/perp-analytics-tools.d.ts.map +1 -0
- package/dist/perps/perp-analytics-tools.js +868 -0
- package/dist/perps/perp-analytics-tools.js.map +1 -0
- package/dist/perps/perp-constants.d.ts +362 -0
- package/dist/perps/perp-constants.d.ts.map +1 -0
- package/dist/perps/perp-constants.js +210 -0
- package/dist/perps/perp-constants.js.map +1 -0
- package/dist/perps/perp-decoders.d.ts +47 -0
- package/dist/perps/perp-decoders.d.ts.map +1 -0
- package/dist/perps/perp-decoders.js +332 -0
- package/dist/perps/perp-decoders.js.map +1 -0
- package/dist/policy/policy-engine.d.ts +42 -0
- package/dist/policy/policy-engine.d.ts.map +1 -1
- package/dist/policy/policy-engine.js +43 -0
- package/dist/policy/policy-engine.js.map +1 -1
- package/dist/premium/activation-manager.d.ts.map +1 -1
- package/dist/premium/activation-manager.js +20 -2
- package/dist/premium/activation-manager.js.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +15 -1
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/server/server-metadata.d.ts +15 -0
- package/dist/server/server-metadata.d.ts.map +1 -1
- package/dist/server/server-metadata.js +16 -1
- package/dist/server/server-metadata.js.map +1 -1
- package/dist/solana/ata-utils.d.ts +39 -0
- package/dist/solana/ata-utils.d.ts.map +1 -0
- package/dist/solana/ata-utils.js +49 -0
- package/dist/solana/ata-utils.js.map +1 -0
- package/dist/strategies/trade-journal.d.ts +78 -0
- package/dist/strategies/trade-journal.d.ts.map +1 -0
- package/dist/strategies/trade-journal.js +92 -0
- package/dist/strategies/trade-journal.js.map +1 -0
- package/dist/tools/adrena/adrena-commodity-tools.d.ts +15 -0
- package/dist/tools/adrena/adrena-commodity-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-commodity-tools.js +137 -0
- package/dist/tools/adrena/adrena-commodity-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-data-tools.d.ts +23 -0
- package/dist/tools/adrena/adrena-data-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-data-tools.js +437 -0
- package/dist/tools/adrena/adrena-data-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-helpers.d.ts +46 -0
- package/dist/tools/adrena/adrena-helpers.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-helpers.js +41 -0
- package/dist/tools/adrena/adrena-helpers.js.map +1 -0
- package/dist/tools/adrena/adrena-index.d.ts +20 -0
- package/dist/tools/adrena/adrena-index.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-index.js +75 -0
- package/dist/tools/adrena/adrena-index.js.map +1 -0
- package/dist/tools/adrena/adrena-limit-order-tools.d.ts +22 -0
- package/dist/tools/adrena/adrena-limit-order-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-limit-order-tools.js +91 -0
- package/dist/tools/adrena/adrena-limit-order-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-liquidity-tools.d.ts +15 -0
- package/dist/tools/adrena/adrena-liquidity-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-liquidity-tools.js +108 -0
- package/dist/tools/adrena/adrena-liquidity-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-snapshot-tools.d.ts +42 -0
- package/dist/tools/adrena/adrena-snapshot-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-snapshot-tools.js +124 -0
- package/dist/tools/adrena/adrena-snapshot-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-staking-tools.d.ts +15 -0
- package/dist/tools/adrena/adrena-staking-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-staking-tools.js +139 -0
- package/dist/tools/adrena/adrena-staking-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-trading-tools.d.ts +78 -0
- package/dist/tools/adrena/adrena-trading-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-trading-tools.js +556 -0
- package/dist/tools/adrena/adrena-trading-tools.js.map +1 -0
- package/dist/tools/adrena-tools.d.ts +2 -0
- package/dist/tools/adrena-tools.d.ts.map +1 -0
- package/dist/tools/adrena-tools.js +2 -0
- package/dist/tools/adrena-tools.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts +8 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -1
- package/dist/tools/client-sdk-tools.js +32 -7
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +170 -0
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/perp-tools.d.ts +6 -31
- package/dist/tools/perp-tools.d.ts.map +1 -1
- package/dist/tools/perp-tools.js +6 -1141
- package/dist/tools/perp-tools.js.map +1 -1
- package/dist/tools/premium-tools.d.ts.map +1 -1
- package/dist/tools/premium-tools.js +123 -5
- package/dist/tools/premium-tools.js.map +1 -1
- package/dist/tools/quick-context-tool.js +1 -0
- package/dist/tools/quick-context-tool.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +4 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/transaction-tools.d.ts +21 -1
- package/dist/tools/transaction-tools.d.ts.map +1 -1
- package/dist/tools/transaction-tools.js +114 -30
- package/dist/tools/transaction-tools.js.map +1 -1
- package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
- package/dist/tools/x402-paid-call-tool.js +288 -0
- package/dist/tools/x402-paid-call-tool.js.map +1 -1
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
- package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +54 -6
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
- package/docs/BRANCH_AND_CI.md +2 -2
- package/package.json +3 -2
- package/server.json +3 -3
- package/skills/sap-defi/SKILL.md +93 -22
- package/skills/sap-mcp/TOOL_REFERENCE.md +39 -4
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name tools/adrena/adrena-trading-tools
|
|
3
|
+
* @description Trading builder tool registrations for Adrena perps:
|
|
4
|
+
* open/close long/short, set/cancel stop loss, set/cancel take profit.
|
|
5
|
+
*
|
|
6
|
+
* @module tools/adrena/adrena-trading-tools
|
|
7
|
+
*/
|
|
8
|
+
import { createTextResponse } from '../../adapters/mcp/tool-response.js';
|
|
9
|
+
import { registerTool } from '../../adapters/mcp/sdk-compat.js';
|
|
10
|
+
import { buildOpenPositionLong, buildOpenPositionShort, buildClosePositionLong, buildClosePositionShort, buildSetStopLoss, buildSetTakeProfit, buildCancelStopLoss, buildCancelTakeProfit, buildSimulatePosition, buildPositionPackage, getCustodyPublicKey, fetchOraclePrice, } from '../../perps/adrena/index.js';
|
|
11
|
+
import { MAIN_POOL_TOKENS, COMMODITY_TOKENS, COLLATERAL_TOKENS, priceToRaw, getConnection, parsePublicKey, } from './adrena-helpers.js';
|
|
12
|
+
/**
|
|
13
|
+
* @name validateTradingPolicyFromContext
|
|
14
|
+
* @description Validate trading parameters against the policy engine.
|
|
15
|
+
* Returns null if allowed, or a PolicyViolationResult if rejected.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
function validateTradingPolicyFromContext(context, market, side, collateralUsd, leverage, hasStopLoss, slippageBps) {
|
|
19
|
+
try {
|
|
20
|
+
const result = context.policyEngine.validateTradingPolicy({
|
|
21
|
+
market, side, collateralUsd, leverage, hasStopLoss, slippageBps,
|
|
22
|
+
});
|
|
23
|
+
return result.allowed ? null : result;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Policy engine not available or misconfigured — allow by default.
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
31
|
+
* Trading Builders
|
|
32
|
+
* ═══════════════════════════════════════════════════════════════════ */
|
|
33
|
+
/**
|
|
34
|
+
* @name registerAdrenaOpenLongTool
|
|
35
|
+
* @description Register sap_adrena_build_open_long.
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
export function registerAdrenaOpenLongTool(server, context) {
|
|
39
|
+
const schema = {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: {
|
|
42
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58). This is the fee payer and signer.' },
|
|
43
|
+
principalToken: { type: 'string', description: 'Asset to trade (long). Supported: JITOSOL, WBTC, BONK.', enum: MAIN_POOL_TOKENS },
|
|
44
|
+
collateralToken: { type: 'string', description: 'Collateral token. Must match principal for longs. Supported: JITOSOL, WBTC, BONK.', enum: COLLATERAL_TOKENS },
|
|
45
|
+
collateralAmount: { type: 'number', description: 'Collateral amount in human-readable units (e.g. 10 = 10 JITOSOL).', minimum: 0 },
|
|
46
|
+
leverage: { type: 'number', description: 'Leverage multiplier (e.g. 3 = 3x).', minimum: 1, maximum: 100 },
|
|
47
|
+
priceUsd: { type: 'number', description: 'Optional limit price in USD. Omit for market order.', minimum: 0 },
|
|
48
|
+
},
|
|
49
|
+
required: ['owner', 'principalToken', 'collateralToken', 'collateralAmount', 'leverage'],
|
|
50
|
+
additionalProperties: false,
|
|
51
|
+
};
|
|
52
|
+
registerTool(server, 'sap_adrena_build_open_long', {
|
|
53
|
+
description: 'Build an unsigned transaction to open or increase a long perp position on Adrena. Returns transactionBase64 for local signing via sap_payments_finalize_transaction. The agent must sign locally — SAP MCP never signs user-owned perp transactions.',
|
|
54
|
+
inputSchema: schema,
|
|
55
|
+
}, async (args) => {
|
|
56
|
+
try {
|
|
57
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
58
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
59
|
+
const collateralToken = String(args['collateralToken']).toUpperCase();
|
|
60
|
+
const collateralAmount = Number(args['collateralAmount']);
|
|
61
|
+
const leverage = Number(args['leverage']);
|
|
62
|
+
const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
|
|
63
|
+
const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
|
|
64
|
+
// Policy validation before building.
|
|
65
|
+
const violation = validateTradingPolicyFromContext(context, principalToken, 'long', collateralAmount, leverage, false);
|
|
66
|
+
if (violation) {
|
|
67
|
+
return createTextResponse(JSON.stringify({ error: 'PolicyViolation', ...violation }), { isError: true });
|
|
68
|
+
}
|
|
69
|
+
const result = await buildOpenPositionLong(getConnection(context), owner, principalToken, collateralToken, collateralAmount, leverage, price);
|
|
70
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build open long transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @name registerAdrenaOpenShortTool
|
|
79
|
+
* @description Register sap_adrena_build_open_short.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
export function registerAdrenaOpenShortTool(server, context) {
|
|
83
|
+
const schema = {
|
|
84
|
+
type: 'object',
|
|
85
|
+
properties: {
|
|
86
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
87
|
+
principalToken: { type: 'string', description: 'Asset to short. Supported: JITOSOL, WBTC, BONK.', enum: MAIN_POOL_TOKENS },
|
|
88
|
+
collateralToken: { type: 'string', description: 'Collateral token. Must be USDC for shorts.', enum: ['USDC'] },
|
|
89
|
+
collateralAmount: { type: 'number', description: 'Collateral (USDC) amount in human-readable units.', minimum: 0 },
|
|
90
|
+
leverage: { type: 'number', description: 'Leverage multiplier.', minimum: 1, maximum: 100 },
|
|
91
|
+
priceUsd: { type: 'number', description: 'Optional limit price in USD. Omit for market order.', minimum: 0 },
|
|
92
|
+
},
|
|
93
|
+
required: ['owner', 'principalToken', 'collateralToken', 'collateralAmount', 'leverage'],
|
|
94
|
+
additionalProperties: false,
|
|
95
|
+
};
|
|
96
|
+
registerTool(server, 'sap_adrena_build_open_short', {
|
|
97
|
+
description: 'Build an unsigned transaction to open or increase a short perp position on Adrena. Collateral must be USDC for shorts. Returns transactionBase64 for local signing.',
|
|
98
|
+
inputSchema: schema,
|
|
99
|
+
}, async (args) => {
|
|
100
|
+
try {
|
|
101
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
102
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
103
|
+
const collateralToken = String(args['collateralToken']).toUpperCase();
|
|
104
|
+
const collateralAmount = Number(args['collateralAmount']);
|
|
105
|
+
const leverage = Number(args['leverage']);
|
|
106
|
+
const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
|
|
107
|
+
const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
|
|
108
|
+
// Policy validation before building.
|
|
109
|
+
const violation = validateTradingPolicyFromContext(context, principalToken, 'short', collateralAmount, leverage, false);
|
|
110
|
+
if (violation) {
|
|
111
|
+
return createTextResponse(JSON.stringify({ error: 'PolicyViolation', ...violation }), { isError: true });
|
|
112
|
+
}
|
|
113
|
+
const result = await buildOpenPositionShort(getConnection(context), owner, principalToken, collateralToken, collateralAmount, leverage, price);
|
|
114
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build open short transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @name registerAdrenaCloseLongTool
|
|
123
|
+
* @description Register sap_adrena_build_close_long.
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
export function registerAdrenaCloseLongTool(server, context) {
|
|
127
|
+
const schema = {
|
|
128
|
+
type: 'object',
|
|
129
|
+
properties: {
|
|
130
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
131
|
+
principalToken: { type: 'string', description: 'Asset of the position. Supported: JITOSOL, WBTC, BONK.', enum: MAIN_POOL_TOKENS },
|
|
132
|
+
priceUsd: { type: 'number', description: 'Optional close price in USD. Omit for market close.', minimum: 0 },
|
|
133
|
+
percentage: { type: 'number', description: 'Percentage to close (0-1000000, where 1000000 = 100%). Default 1000000.', minimum: 0, maximum: 1000000 },
|
|
134
|
+
},
|
|
135
|
+
required: ['owner', 'principalToken'],
|
|
136
|
+
additionalProperties: false,
|
|
137
|
+
};
|
|
138
|
+
registerTool(server, 'sap_adrena_build_close_long', {
|
|
139
|
+
description: 'Build an unsigned transaction to close a long perp position on Adrena. Default closes 100% at market price. Returns transactionBase64 for local signing.',
|
|
140
|
+
inputSchema: schema,
|
|
141
|
+
}, async (args) => {
|
|
142
|
+
try {
|
|
143
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
144
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
145
|
+
const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
|
|
146
|
+
const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
|
|
147
|
+
const percentage = args['percentage'] !== undefined ? BigInt(Math.floor(Number(args['percentage']))) : 1000000n;
|
|
148
|
+
const result = await buildClosePositionLong(getConnection(context), owner, principalToken, price, percentage);
|
|
149
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build close long transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* @name registerAdrenaCloseShortTool
|
|
158
|
+
* @description Register sap_adrena_build_close_short.
|
|
159
|
+
* @internal
|
|
160
|
+
*/
|
|
161
|
+
export function registerAdrenaCloseShortTool(server, context) {
|
|
162
|
+
const schema = {
|
|
163
|
+
type: 'object',
|
|
164
|
+
properties: {
|
|
165
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
166
|
+
principalToken: { type: 'string', description: 'Asset of the position.', enum: MAIN_POOL_TOKENS },
|
|
167
|
+
collateralToken: { type: 'string', description: 'Collateral token. USDC for shorts.', enum: ['USDC'] },
|
|
168
|
+
priceUsd: { type: 'number', description: 'Optional close price in USD.', minimum: 0 },
|
|
169
|
+
percentage: { type: 'number', description: 'Percentage to close (0-1000000). Default 1000000.', minimum: 0, maximum: 1000000 },
|
|
170
|
+
},
|
|
171
|
+
required: ['owner', 'principalToken', 'collateralToken'],
|
|
172
|
+
additionalProperties: false,
|
|
173
|
+
};
|
|
174
|
+
registerTool(server, 'sap_adrena_build_close_short', {
|
|
175
|
+
description: 'Build an unsigned transaction to close a short perp position on Adrena. Returns transactionBase64 for local signing.',
|
|
176
|
+
inputSchema: schema,
|
|
177
|
+
}, async (args) => {
|
|
178
|
+
try {
|
|
179
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
180
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
181
|
+
const collateralToken = String(args['collateralToken']).toUpperCase();
|
|
182
|
+
const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
|
|
183
|
+
const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
|
|
184
|
+
const percentage = args['percentage'] !== undefined ? BigInt(Math.floor(Number(args['percentage']))) : 1000000n;
|
|
185
|
+
const result = await buildClosePositionShort(getConnection(context), owner, principalToken, collateralToken, price, percentage);
|
|
186
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build close short transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
194
|
+
* SL / TP Builders
|
|
195
|
+
* ═══════════════════════════════════════════════════════════════════ */
|
|
196
|
+
/**
|
|
197
|
+
* @name registerAdrenaSetStopLossTool
|
|
198
|
+
* @description Register sap_adrena_build_set_stop_loss.
|
|
199
|
+
* @internal
|
|
200
|
+
*/
|
|
201
|
+
export function registerAdrenaSetStopLossTool(server, context) {
|
|
202
|
+
const schema = {
|
|
203
|
+
type: 'object',
|
|
204
|
+
properties: {
|
|
205
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
206
|
+
principalToken: { type: 'string', description: 'Asset of the position.', enum: [...MAIN_POOL_TOKENS, ...COMMODITY_TOKENS] },
|
|
207
|
+
side: { type: 'string', description: 'Position side.', enum: ['long', 'short'] },
|
|
208
|
+
stopLossPriceUsd: { type: 'number', description: 'Stop loss trigger price in USD.', minimum: 0 },
|
|
209
|
+
closePositionPriceUsd: { type: 'number', description: 'Optional close position price in USD. If set, the position closes at this price when triggered.', minimum: 0 },
|
|
210
|
+
},
|
|
211
|
+
required: ['owner', 'principalToken', 'side', 'stopLossPriceUsd'],
|
|
212
|
+
additionalProperties: false,
|
|
213
|
+
};
|
|
214
|
+
registerTool(server, 'sap_adrena_build_set_stop_loss', {
|
|
215
|
+
description: 'Build an unsigned transaction to set stop loss on an Adrena position. Returns transactionBase64 for local signing.',
|
|
216
|
+
inputSchema: schema,
|
|
217
|
+
}, async (args) => {
|
|
218
|
+
try {
|
|
219
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
220
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
221
|
+
const side = args['side'] === 'short' ? 'short' : 'long';
|
|
222
|
+
const stopLossPriceUsd = Number(args['stopLossPriceUsd']);
|
|
223
|
+
const closePositionPriceUsd = args['closePositionPriceUsd'] !== undefined ? Number(args['closePositionPriceUsd']) : null;
|
|
224
|
+
const stopLossLimitPrice = priceToRaw(stopLossPriceUsd);
|
|
225
|
+
const closePositionPrice = closePositionPriceUsd !== null ? priceToRaw(closePositionPriceUsd) : null;
|
|
226
|
+
const result = await buildSetStopLoss(getConnection(context), owner, principalToken, side, stopLossLimitPrice, closePositionPrice);
|
|
227
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build set stop loss transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* @name registerAdrenaSetTakeProfitTool
|
|
236
|
+
* @description Register sap_adrena_build_set_take_profit.
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
export function registerAdrenaSetTakeProfitTool(server, context) {
|
|
240
|
+
const schema = {
|
|
241
|
+
type: 'object',
|
|
242
|
+
properties: {
|
|
243
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
244
|
+
principalToken: { type: 'string', description: 'Asset of the position.', enum: [...MAIN_POOL_TOKENS, ...COMMODITY_TOKENS] },
|
|
245
|
+
side: { type: 'string', description: 'Position side.', enum: ['long', 'short'] },
|
|
246
|
+
takeProfitPriceUsd: { type: 'number', description: 'Take profit trigger price in USD.', minimum: 0 },
|
|
247
|
+
},
|
|
248
|
+
required: ['owner', 'principalToken', 'side', 'takeProfitPriceUsd'],
|
|
249
|
+
additionalProperties: false,
|
|
250
|
+
};
|
|
251
|
+
registerTool(server, 'sap_adrena_build_set_take_profit', {
|
|
252
|
+
description: 'Build an unsigned transaction to set take profit on an Adrena position. Returns transactionBase64 for local signing.',
|
|
253
|
+
inputSchema: schema,
|
|
254
|
+
}, async (args) => {
|
|
255
|
+
try {
|
|
256
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
257
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
258
|
+
const side = args['side'] === 'short' ? 'short' : 'long';
|
|
259
|
+
const takeProfitPriceUsd = Number(args['takeProfitPriceUsd']);
|
|
260
|
+
const takeProfitLimitPrice = priceToRaw(takeProfitPriceUsd);
|
|
261
|
+
const result = await buildSetTakeProfit(getConnection(context), owner, principalToken, side, takeProfitLimitPrice);
|
|
262
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
263
|
+
}
|
|
264
|
+
catch (err) {
|
|
265
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build set take profit transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* @name registerAdrenaCancelStopLossTool
|
|
271
|
+
* @description Register sap_adrena_build_cancel_stop_loss.
|
|
272
|
+
* @internal
|
|
273
|
+
*/
|
|
274
|
+
export function registerAdrenaCancelStopLossTool(server, context) {
|
|
275
|
+
const schema = {
|
|
276
|
+
type: 'object',
|
|
277
|
+
properties: {
|
|
278
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
279
|
+
principalToken: { type: 'string', description: 'Asset of the position.', enum: [...MAIN_POOL_TOKENS, ...COMMODITY_TOKENS] },
|
|
280
|
+
side: { type: 'string', description: 'Position side.', enum: ['long', 'short'] },
|
|
281
|
+
},
|
|
282
|
+
required: ['owner', 'principalToken', 'side'],
|
|
283
|
+
additionalProperties: false,
|
|
284
|
+
};
|
|
285
|
+
registerTool(server, 'sap_adrena_build_cancel_stop_loss', {
|
|
286
|
+
description: 'Build an unsigned transaction to cancel stop loss on an Adrena position. Returns transactionBase64 for local signing.',
|
|
287
|
+
inputSchema: schema,
|
|
288
|
+
}, async (args) => {
|
|
289
|
+
try {
|
|
290
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
291
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
292
|
+
const side = args['side'] === 'short' ? 'short' : 'long';
|
|
293
|
+
const result = await buildCancelStopLoss(getConnection(context), owner, principalToken, side);
|
|
294
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build cancel stop loss transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* @name registerAdrenaCancelTakeProfitTool
|
|
303
|
+
* @description Register sap_adrena_build_cancel_take_profit.
|
|
304
|
+
* @internal
|
|
305
|
+
*/
|
|
306
|
+
export function registerAdrenaCancelTakeProfitTool(server, context) {
|
|
307
|
+
const schema = {
|
|
308
|
+
type: 'object',
|
|
309
|
+
properties: {
|
|
310
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
311
|
+
principalToken: { type: 'string', description: 'Asset of the position.', enum: [...MAIN_POOL_TOKENS, ...COMMODITY_TOKENS] },
|
|
312
|
+
side: { type: 'string', description: 'Position side.', enum: ['long', 'short'] },
|
|
313
|
+
},
|
|
314
|
+
required: ['owner', 'principalToken', 'side'],
|
|
315
|
+
additionalProperties: false,
|
|
316
|
+
};
|
|
317
|
+
registerTool(server, 'sap_adrena_build_cancel_take_profit', {
|
|
318
|
+
description: 'Build an unsigned transaction to cancel take profit on an Adrena position. Returns transactionBase64 for local signing.',
|
|
319
|
+
inputSchema: schema,
|
|
320
|
+
}, async (args) => {
|
|
321
|
+
try {
|
|
322
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
323
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
324
|
+
const side = args['side'] === 'short' ? 'short' : 'long';
|
|
325
|
+
const result = await buildCancelTakeProfit(getConnection(context), owner, principalToken, side);
|
|
326
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build cancel take profit transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
334
|
+
* Free Simulation (dry-run, no x402 charge)
|
|
335
|
+
* ═══════════════════════════════════════════════════════════════════ */
|
|
336
|
+
/**
|
|
337
|
+
* @name registerAdrenaSimulatePositionTool
|
|
338
|
+
* @description Register sap_adrena_simulate_position — a FREE dry-run tool that
|
|
339
|
+
* simulates opening a perp position without building or paying for a transaction.
|
|
340
|
+
* @internal
|
|
341
|
+
*/
|
|
342
|
+
export function registerAdrenaSimulatePositionTool(server, context) {
|
|
343
|
+
const schema = {
|
|
344
|
+
type: 'object',
|
|
345
|
+
properties: {
|
|
346
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58). This is the fee payer and signer.' },
|
|
347
|
+
principalToken: { type: 'string', description: 'Asset to trade. Supported: JITOSOL, WBTC, BONK, plus XAU, XAG, WTI in the commodities pool.', enum: [...MAIN_POOL_TOKENS, ...COMMODITY_TOKENS] },
|
|
348
|
+
collateralToken: { type: 'string', description: 'Collateral token. For longs must match principal (main pool) or be USDC (commodities pool). For shorts must be USDC. Supported: USDC, JITOSOL, WBTC, BONK.', enum: COLLATERAL_TOKENS },
|
|
349
|
+
collateralAmount: { type: 'number', description: 'Collateral amount in human-readable units (e.g. 10 = 10 JITOSOL or 10 USDC).', minimum: 0 },
|
|
350
|
+
leverage: { type: 'number', description: 'Leverage multiplier (e.g. 3 = 3x).', minimum: 1, maximum: 100 },
|
|
351
|
+
side: { type: 'string', description: 'Position side: long or short.', enum: ['long', 'short'] },
|
|
352
|
+
poolName: { type: 'string', description: 'Pool to use. Default: main-pool. Use commodities-pool for XAU/XAG/WTI.', enum: ['main-pool', 'commodities-pool'] },
|
|
353
|
+
},
|
|
354
|
+
required: ['owner', 'principalToken', 'collateralToken', 'collateralAmount', 'leverage', 'side'],
|
|
355
|
+
additionalProperties: false,
|
|
356
|
+
};
|
|
357
|
+
registerTool(server, 'sap_adrena_simulate_position', {
|
|
358
|
+
description: 'FREE dry-run tool (no x402 charge): simulates opening a perp position on Adrena by building the same instructions as the open position builder, then calling connection.simulateTransaction(). Returns Adrena program logs, compute units consumed, whether the position would succeed, and the pre-flight balance check — without serializing or returning transaction bytes. Use this to validate position parameters and diagnose on-chain failures before building a paid transaction.',
|
|
359
|
+
inputSchema: schema,
|
|
360
|
+
}, async (args) => {
|
|
361
|
+
try {
|
|
362
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
363
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
364
|
+
const collateralToken = String(args['collateralToken']).toUpperCase();
|
|
365
|
+
const collateralAmount = Number(args['collateralAmount']);
|
|
366
|
+
const leverage = Number(args['leverage']);
|
|
367
|
+
const side = args['side'] === 'short' ? 'short' : 'long';
|
|
368
|
+
const poolName = (args['poolName'] === 'commodities-pool' ? 'commodities-pool' : 'main-pool');
|
|
369
|
+
const result = await buildSimulatePosition(getConnection(context), owner, principalToken, collateralToken, collateralAmount, leverage, side, poolName);
|
|
370
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
371
|
+
}
|
|
372
|
+
catch (err) {
|
|
373
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to simulate position', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* @name registerAdrenaPositionPackageTool
|
|
379
|
+
* @description Register sap_adrena_build_position_package — batch open+SL+TP.
|
|
380
|
+
* @internal
|
|
381
|
+
*/
|
|
382
|
+
export function registerAdrenaPositionPackageTool(server, context) {
|
|
383
|
+
const schema = {
|
|
384
|
+
type: 'object',
|
|
385
|
+
properties: {
|
|
386
|
+
owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
|
|
387
|
+
principalToken: { type: 'string', description: 'Asset to trade.', enum: [...MAIN_POOL_TOKENS] },
|
|
388
|
+
collateralToken: { type: 'string', description: 'Collateral token. USDC for shorts, match principal for longs.', enum: [...COLLATERAL_TOKENS] },
|
|
389
|
+
collateralAmount: { type: 'number', description: 'Collateral amount in human-readable units.', minimum: 0 },
|
|
390
|
+
leverage: { type: 'number', description: 'Leverage multiplier (e.g. 3 = 3x).', minimum: 1, maximum: 100 },
|
|
391
|
+
side: { type: 'string', description: 'Position side.', enum: ['long', 'short'] },
|
|
392
|
+
stopLossPriceUsd: { type: 'number', description: 'Optional stop loss trigger price in USD. Omit to skip.', minimum: 0 },
|
|
393
|
+
takeProfitPriceUsd: { type: 'number', description: 'Optional take profit trigger price in USD. Omit to skip.', minimum: 0 },
|
|
394
|
+
priceUsd: { type: 'number', description: 'Optional limit price in USD for the open. Omit for market order.', minimum: 0 },
|
|
395
|
+
},
|
|
396
|
+
required: ['owner', 'principalToken', 'collateralToken', 'collateralAmount', 'leverage', 'side'],
|
|
397
|
+
additionalProperties: false,
|
|
398
|
+
};
|
|
399
|
+
registerTool(server, 'sap_adrena_build_position_package', {
|
|
400
|
+
description: 'Build a single unsigned transaction that atomically opens a perp position AND sets stop loss AND take profit in one transaction. 1 payment, 1 signing, 1 submit — instead of 3 separate calls. If stopLossPriceUsd or takeProfitPriceUsd is omitted, that instruction is skipped. Returns transactionBase64 for local signing via sap_payments_finalize_transaction. Includes balanceCheck.',
|
|
401
|
+
inputSchema: schema,
|
|
402
|
+
}, async (args) => {
|
|
403
|
+
try {
|
|
404
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
405
|
+
const principalToken = String(args['principalToken']).toUpperCase();
|
|
406
|
+
const collateralToken = String(args['collateralToken']).toUpperCase();
|
|
407
|
+
const collateralAmount = Number(args['collateralAmount']);
|
|
408
|
+
const leverage = Number(args['leverage']);
|
|
409
|
+
const side = (args['side'] === 'short' ? 'short' : 'long');
|
|
410
|
+
const stopLossPriceUsd = args['stopLossPriceUsd'] !== undefined ? Number(args['stopLossPriceUsd']) : null;
|
|
411
|
+
const takeProfitPriceUsd = args['takeProfitPriceUsd'] !== undefined ? Number(args['takeProfitPriceUsd']) : null;
|
|
412
|
+
const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
|
|
413
|
+
const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
|
|
414
|
+
// Policy validation before building.
|
|
415
|
+
const hasStopLoss = stopLossPriceUsd !== null;
|
|
416
|
+
const violation = validateTradingPolicyFromContext(context, principalToken, side, collateralAmount, leverage, hasStopLoss);
|
|
417
|
+
if (violation) {
|
|
418
|
+
return createTextResponse(JSON.stringify({ error: 'PolicyViolation', ...violation }), { isError: true });
|
|
419
|
+
}
|
|
420
|
+
const result = await buildPositionPackage(getConnection(context), owner, principalToken, collateralToken, collateralAmount, leverage, side, stopLossPriceUsd, takeProfitPriceUsd, price);
|
|
421
|
+
return createTextResponse(JSON.stringify(result, null, 2));
|
|
422
|
+
}
|
|
423
|
+
catch (err) {
|
|
424
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build position package', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* @name registerAdrenaTradeIntentTool
|
|
430
|
+
* @description Register sap_adrena_trade_intent — intent-level trading API.
|
|
431
|
+
* Resolves mint, decimals, max leverage, collateral token automatically.
|
|
432
|
+
* @internal
|
|
433
|
+
*/
|
|
434
|
+
export function registerAdrenaTradeIntentTool(server, context) {
|
|
435
|
+
registerTool(server, 'sap_adrena_trade_intent', {
|
|
436
|
+
description: 'Intent-level Adrena trading API. Pass market name, side, USD collateral, and leverage (or "max"). The tool resolves mint addresses, decimals, max leverage from on-chain custody accounts, converts USD collateral to token amounts via oracle price, validates parameters, and returns a ready-to-sign transaction. Supports optional stopLossPct and takeProfitPct for atomic position+SL+TP in one transaction. Reduces 5 tool calls to 1.',
|
|
437
|
+
inputSchema: {
|
|
438
|
+
type: 'object',
|
|
439
|
+
properties: {
|
|
440
|
+
owner: { type: 'string', description: 'Wallet public key (base58).' },
|
|
441
|
+
market: { type: 'string', description: 'Market symbol: BONK, JITOSOL, WBTC, USDC, XAU, XAG, WTI.', },
|
|
442
|
+
side: { type: 'string', description: 'Position side.', enum: ['long', 'short'] },
|
|
443
|
+
collateralUsd: { type: 'number', description: 'Collateral amount in USD. Converted to token amount using oracle price.', minimum: 0 },
|
|
444
|
+
leverage: { type: 'string', description: 'Leverage multiplier (e.g. "3" for 3x) or "max" for maxInitialLeverage.' },
|
|
445
|
+
stopLossPct: { type: 'number', description: 'Optional stop loss as % from entry (e.g. 5 = 5% away). Omit to skip.' },
|
|
446
|
+
takeProfitPct: { type: 'number', description: 'Optional take profit as % from entry (e.g. 15 = 15% away). Omit to skip.' },
|
|
447
|
+
poolName: { type: 'string', description: 'Pool: main-pool (default) or commodities-pool.', enum: ['main-pool', 'commodities-pool'] },
|
|
448
|
+
},
|
|
449
|
+
required: ['owner', 'market', 'side', 'collateralUsd', 'leverage'],
|
|
450
|
+
additionalProperties: false,
|
|
451
|
+
},
|
|
452
|
+
}, async (args) => {
|
|
453
|
+
try {
|
|
454
|
+
const owner = parsePublicKey(String(args['owner']));
|
|
455
|
+
const market = String(args['market']).toUpperCase();
|
|
456
|
+
const side = (args['side'] === 'short' ? 'short' : 'long');
|
|
457
|
+
const collateralUsd = Number(args['collateralUsd']);
|
|
458
|
+
const leverageInput = String(args['leverage']);
|
|
459
|
+
const poolName = (args['poolName'] === 'commodities-pool' ? 'commodities-pool' : 'main-pool');
|
|
460
|
+
const stopLossPct = args['stopLossPct'] !== undefined ? Number(args['stopLossPct']) : null;
|
|
461
|
+
const takeProfitPct = args['takeProfitPct'] !== undefined ? Number(args['takeProfitPct']) : null;
|
|
462
|
+
const connection = getConnection(context);
|
|
463
|
+
// Resolve custody address for the market
|
|
464
|
+
const custodyAddr = getCustodyPublicKey(market, poolName);
|
|
465
|
+
const custodyInfo = await connection.getAccountInfo(custodyAddr, 'confirmed');
|
|
466
|
+
if (!custodyInfo || !custodyInfo.data || custodyInfo.data.length < 184) {
|
|
467
|
+
return createTextResponse(JSON.stringify({ error: `Custody account for ${market} not found` }), { isError: true });
|
|
468
|
+
}
|
|
469
|
+
const d = custodyInfo.data;
|
|
470
|
+
const maxInitialLeverageBps = d.readUInt32LE(176);
|
|
471
|
+
const maxLeverageBps = d.readUInt32LE(180);
|
|
472
|
+
const maxInitialLeverage = maxInitialLeverageBps / 10000;
|
|
473
|
+
const maxLeverage = maxLeverageBps / 10000;
|
|
474
|
+
// Resolve leverage
|
|
475
|
+
let leverage;
|
|
476
|
+
if (leverageInput.toLowerCase() === 'max') {
|
|
477
|
+
leverage = maxInitialLeverage;
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
leverage = Number(leverageInput);
|
|
481
|
+
if (leverage > maxInitialLeverage) {
|
|
482
|
+
return createTextResponse(JSON.stringify({
|
|
483
|
+
error: `Leverage ${leverage} exceeds maxInitialLeverage ${maxInitialLeverage} for ${market}`,
|
|
484
|
+
suggestedLeverage: maxInitialLeverage,
|
|
485
|
+
}), { isError: true });
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// Resolve collateral token: USDC for shorts, match market for longs
|
|
489
|
+
const collateralToken = side === 'short' ? 'USDC' : market;
|
|
490
|
+
// Policy validation before building.
|
|
491
|
+
const hasStopLoss = stopLossPct !== null;
|
|
492
|
+
const violation = validateTradingPolicyFromContext(context, market, side, collateralUsd, leverage, hasStopLoss);
|
|
493
|
+
if (violation) {
|
|
494
|
+
return createTextResponse(JSON.stringify({ error: 'PolicyViolation', ...violation }), { isError: true });
|
|
495
|
+
}
|
|
496
|
+
// Get oracle price to convert USD → token amount
|
|
497
|
+
const oraclePrice = await fetchOraclePrice(market, side);
|
|
498
|
+
const priceUsd = Number(oraclePrice) / Math.pow(10, 10);
|
|
499
|
+
if (priceUsd <= 0) {
|
|
500
|
+
return createTextResponse(JSON.stringify({ error: `Oracle price for ${market} unavailable` }), { isError: true });
|
|
501
|
+
}
|
|
502
|
+
// Convert USD collateral to token amount
|
|
503
|
+
// For shorts: collateral is USDC (6 decimals), 1 USDC ≈ $1
|
|
504
|
+
// For longs: collateral is the token itself, amount = USD / price
|
|
505
|
+
let collateralAmount;
|
|
506
|
+
if (side === 'short') {
|
|
507
|
+
// USDC is ~$1, so collateralAmount ≈ collateralUsd
|
|
508
|
+
collateralAmount = collateralUsd;
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
// Token collateral: amount = USD / token price
|
|
512
|
+
collateralAmount = collateralUsd / priceUsd;
|
|
513
|
+
}
|
|
514
|
+
// Resolve SL/TP prices from percentages
|
|
515
|
+
let stopLossPriceUsd = null;
|
|
516
|
+
let takeProfitPriceUsd = null;
|
|
517
|
+
if (stopLossPct !== null) {
|
|
518
|
+
// For long: SL below entry. For short: SL above entry
|
|
519
|
+
stopLossPriceUsd = side === 'long'
|
|
520
|
+
? priceUsd * (1 - stopLossPct / 100)
|
|
521
|
+
: priceUsd * (1 + stopLossPct / 100);
|
|
522
|
+
}
|
|
523
|
+
if (takeProfitPct !== null) {
|
|
524
|
+
// For long: TP above entry. For short: TP below entry
|
|
525
|
+
takeProfitPriceUsd = side === 'long'
|
|
526
|
+
? priceUsd * (1 + takeProfitPct / 100)
|
|
527
|
+
: priceUsd * (1 - takeProfitPct / 100);
|
|
528
|
+
}
|
|
529
|
+
// Build position package (open + SL + TP atomic)
|
|
530
|
+
const result = await buildPositionPackage(connection, owner, market, collateralToken, collateralAmount, leverage, side, stopLossPriceUsd, takeProfitPriceUsd, null);
|
|
531
|
+
// Enrich with intent metadata
|
|
532
|
+
const enrichedResult = {
|
|
533
|
+
...result,
|
|
534
|
+
intent: {
|
|
535
|
+
market,
|
|
536
|
+
side,
|
|
537
|
+
collateralUsd,
|
|
538
|
+
collateralToken,
|
|
539
|
+
collateralAmount,
|
|
540
|
+
leverage,
|
|
541
|
+
maxInitialLeverage,
|
|
542
|
+
maxLeverage,
|
|
543
|
+
oraclePriceUsd: priceUsd,
|
|
544
|
+
stopLossPriceUsd,
|
|
545
|
+
takeProfitPriceUsd,
|
|
546
|
+
poolName,
|
|
547
|
+
},
|
|
548
|
+
};
|
|
549
|
+
return createTextResponse(JSON.stringify(enrichedResult, null, 2));
|
|
550
|
+
}
|
|
551
|
+
catch (err) {
|
|
552
|
+
return createTextResponse(JSON.stringify({ error: 'Failed to build trade intent', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
//# sourceMappingURL=adrena-trading-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adrena-trading-tools.js","sourceRoot":"","sources":["../../../src/tools/adrena/adrena-trading-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adrena-tools.d.ts","sourceRoot":"","sources":["../../src/tools/adrena-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adrena-tools.js","sourceRoot":"","sources":["../../src/tools/adrena-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|