@continuumdao/continuum-node-sdk 1.3.30 → 1.3.31
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/dist/agent-host-catalog.json +2 -0
- package/dist/core/chart/analysis/analysis-catalog.d.ts +19 -13
- package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.js +120 -106
- package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts +10 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js +123 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +19 -0
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.js +135 -6
- package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts +13 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js +11 -0
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +2 -0
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +6 -0
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts +41 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js +80 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js.map +1 -0
- package/dist/core/mpc/broadcast-sign-result.d.ts +1 -0
- package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/broadcast-sign-result.js +66 -0
- package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
- package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts +13 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts.map +1 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.js +93 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.js.map +1 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts +6 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts.map +1 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.js +59 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.js.map +1 -0
- package/dist/core/mpc/eip712-sign-request.d.ts +8 -0
- package/dist/core/mpc/eip712-sign-request.d.ts.map +1 -0
- package/dist/core/mpc/eip712-sign-request.js +65 -0
- package/dist/core/mpc/eip712-sign-request.js.map +1 -0
- package/dist/core/mpc/trigger-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/trigger-sign-result.js +15 -1
- package/dist/core/mpc/trigger-sign-result.js.map +1 -1
- package/dist/mcp/chart.d.ts.map +1 -1
- package/dist/mcp/chart.js +10 -4
- package/dist/mcp/chart.js.map +1 -1
- package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
- package/dist/mcp/deferred/tool-group-map.js +2 -0
- package/dist/mcp/deferred/tool-group-map.js.map +1 -1
- package/dist/mcp/defi/bitquery-api-key.d.ts +16 -0
- package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -0
- package/dist/mcp/defi/bitquery-api-key.js +86 -0
- package/dist/mcp/defi/bitquery-api-key.js.map +1 -0
- package/dist/mcp/defi/catalog-adapter.d.ts +3 -2
- package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
- package/dist/mcp/defi/catalog-adapter.js +7 -2
- package/dist/mcp/defi/catalog-adapter.js.map +1 -1
- package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -1
- package/dist/mcp/defi/defi-protocol-fetch-meta.js +6 -4
- package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -1
- package/dist/mcp/defi/handler.d.ts.map +1 -1
- package/dist/mcp/defi/handler.js +9 -3
- package/dist/mcp/defi/handler.js.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.js +8 -1
- package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
- package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
- package/dist/mcp/defi/uniswap-api-key.js +3 -0
- package/dist/mcp/defi/uniswap-api-key.js.map +1 -1
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts +2 -2
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js +3 -3
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js.map +1 -1
- package/dist/mcp/resources/agent-cron-jobs.md +11 -1
- package/dist/mcp/resources/uniswap-tpsl-monitor-cron.example.md +27 -0
- package/dist/mcp/trade-tools.d.ts.map +1 -1
- package/dist/mcp/trade-tools.js +183 -3
- package/dist/mcp/trade-tools.js.map +1 -1
- package/package.json +2 -2
|
@@ -157,6 +157,8 @@
|
|
|
157
157
|
"build_trade_from_candlestick": "chart",
|
|
158
158
|
"build_trade_from_key_levels": "chart",
|
|
159
159
|
"build_trade_from_momentum": "chart",
|
|
160
|
+
"evaluate_uniswap_tpsl_monitor": "chart",
|
|
161
|
+
"register_uniswap_tpsl_monitor_cron": "agent_cron",
|
|
160
162
|
"submit_trade_from_consensus": "chart"
|
|
161
163
|
},
|
|
162
164
|
"toolsWithoutOhlcvSessionBind": [
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
export type ChartAnalysisDataKind = 'ohlcv' | 'time_series';
|
|
2
|
+
export type ChartAnalysisCatalogEntry = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
description: string;
|
|
6
|
+
analyzeTool: string;
|
|
7
|
+
dataKind: ChartAnalysisDataKind;
|
|
8
|
+
optionalSkill?: string;
|
|
9
|
+
relatedDrawing?: {
|
|
10
|
+
calculateTool: string;
|
|
11
|
+
applyField: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
2
14
|
export type ChartAnalysisCatalog = {
|
|
3
|
-
analyses:
|
|
4
|
-
id: string;
|
|
5
|
-
label: string;
|
|
6
|
-
description: string;
|
|
7
|
-
analyzeTool: string;
|
|
8
|
-
dataKind: ChartAnalysisDataKind;
|
|
9
|
-
optionalSkill?: string;
|
|
10
|
-
relatedDrawing?: {
|
|
11
|
-
calculateTool: string;
|
|
12
|
-
applyField: string;
|
|
13
|
-
};
|
|
14
|
-
}>;
|
|
15
|
+
analyses: ChartAnalysisCatalogEntry[];
|
|
15
16
|
exampleUserPhrases: string[];
|
|
16
17
|
};
|
|
17
|
-
export
|
|
18
|
+
export type ListChartAnalysisOptionsInput = {
|
|
19
|
+
/** When set, only return analyses that can run on this session data kind. */
|
|
20
|
+
dataKind?: ChartAnalysisDataKind;
|
|
21
|
+
};
|
|
22
|
+
export declare function chartAnalysisMatchesDataKind(entry: Pick<ChartAnalysisCatalogEntry, 'analyzeTool' | 'dataKind'>, dataKind: ChartAnalysisDataKind | undefined): boolean;
|
|
23
|
+
export declare function listChartAnalysisOptions(input?: ListChartAnalysisOptionsInput): ChartAnalysisCatalog;
|
|
18
24
|
//# sourceMappingURL=analysis-catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-catalog.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/analysis-catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,aAAa,CAAC;AAE5D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"analysis-catalog.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/analysis-catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,aAAa,CAAC;AAE5D,MAAM,MAAM,yBAAyB,GAAG;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC3C,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAKF,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,IAAI,CAAC,yBAAyB,EAAE,aAAa,GAAG,UAAU,CAAC,EAClE,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,CAQT;AAkHD,wBAAgB,wBAAwB,CACvC,KAAK,GAAE,6BAAkC,GACvC,oBAAoB,CAsBtB"}
|
|
@@ -1,110 +1,124 @@
|
|
|
1
|
-
|
|
1
|
+
/** Bollinger accepts OHLCV bars or line-only points. */
|
|
2
|
+
const ANALYSES_FOR_BOTH_DATA_KINDS = new Set(['analyze_bollinger_bands']);
|
|
3
|
+
export function chartAnalysisMatchesDataKind(entry, dataKind) {
|
|
4
|
+
if (!dataKind) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
if (ANALYSES_FOR_BOTH_DATA_KINDS.has(entry.analyzeTool)) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
return entry.dataKind === dataKind;
|
|
11
|
+
}
|
|
12
|
+
const ALL_CHART_ANALYSES = [
|
|
13
|
+
{
|
|
14
|
+
id: 'trend_structure',
|
|
15
|
+
label: 'Trend structure',
|
|
16
|
+
description: 'Swing phases, higher-high / lower-low structure, bias, key swings',
|
|
17
|
+
analyzeTool: 'analyze_trend_structure',
|
|
18
|
+
dataKind: 'ohlcv',
|
|
19
|
+
optionalSkill: 'chart-analysis-trend',
|
|
20
|
+
relatedDrawing: { calculateTool: 'calculate_trend_lines', applyField: 'trendLines' },
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'key_levels',
|
|
24
|
+
label: 'Key levels (level to level)',
|
|
25
|
+
description: 'Closest support below and resistance above last close; bounce/rejection trade (no Fib targets)',
|
|
26
|
+
analyzeTool: 'analyze_key_levels',
|
|
27
|
+
dataKind: 'ohlcv',
|
|
28
|
+
optionalSkill: 'chart-analysis-levels',
|
|
29
|
+
relatedDrawing: { calculateTool: 'calculate_key_levels', applyField: 'horizontalLevels' },
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'key_level_fibonacci',
|
|
33
|
+
label: 'Key level Fibonacci',
|
|
34
|
+
description: 'Outer concentric swing range; 0.618 retracement entry and range-leg targets',
|
|
35
|
+
analyzeTool: 'analyze_key_level_fibonacci',
|
|
36
|
+
dataKind: 'ohlcv',
|
|
37
|
+
optionalSkill: 'chart-analysis-levels',
|
|
38
|
+
relatedDrawing: { calculateTool: 'calculate_key_levels', applyField: 'horizontalLevels' },
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'momentum',
|
|
42
|
+
label: 'Momentum',
|
|
43
|
+
description: 'RSI and MACD readings, overbought/oversold flags, crossover state',
|
|
44
|
+
analyzeTool: 'analyze_momentum',
|
|
45
|
+
dataKind: 'ohlcv',
|
|
46
|
+
optionalSkill: 'chart-analysis-momentum',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'range_volatility',
|
|
50
|
+
label: 'Range / volatility',
|
|
51
|
+
description: 'Price range bounds, compression vs expansion, ATR-style stats',
|
|
52
|
+
analyzeTool: 'analyze_range_volatility',
|
|
53
|
+
dataKind: 'ohlcv',
|
|
54
|
+
optionalSkill: 'chart-analysis-range',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: 'bollinger_bands',
|
|
58
|
+
label: 'Bollinger analysis',
|
|
59
|
+
description: 'Bollinger bands on OHLCV or line metrics; band-to-band fade trade when price is near an outer band',
|
|
60
|
+
analyzeTool: 'analyze_bollinger_bands',
|
|
61
|
+
dataKind: 'ohlcv',
|
|
62
|
+
optionalSkill: 'chart-analysis-bollinger',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 'moving_averages',
|
|
66
|
+
label: 'Moving averages',
|
|
67
|
+
description: 'Fast/slow MA crossover and proximity+retest trade setups from OHLCV (default SMA 50/200)',
|
|
68
|
+
analyzeTool: 'analyze_moving_averages',
|
|
69
|
+
dataKind: 'ohlcv',
|
|
70
|
+
optionalSkill: 'chart-analysis-moving-averages',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'candlestick_patterns',
|
|
74
|
+
label: 'Candlestick patterns',
|
|
75
|
+
description: 'TA-Lib-style pattern recognition (doji, hammer, engulfing, etc.) with buy/sell/hold and confidence',
|
|
76
|
+
analyzeTool: 'analyze_candlestick_patterns',
|
|
77
|
+
dataKind: 'ohlcv',
|
|
78
|
+
optionalSkill: 'chart-analysis-patterns',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: 'chart_patterns',
|
|
82
|
+
label: 'Classic chart patterns',
|
|
83
|
+
description: 'Multi-bar geometry patterns (H&S, doubles, triangles, cup & handle, etc.) with 5-level classification and interpretation',
|
|
84
|
+
analyzeTool: 'analyze_chart_patterns',
|
|
85
|
+
dataKind: 'ohlcv',
|
|
86
|
+
optionalSkill: 'chart-analysis-classic-patterns',
|
|
87
|
+
relatedDrawing: {
|
|
88
|
+
calculateTool: 'calculate_chart_pattern_drawings',
|
|
89
|
+
applyField: 'patternOverlay',
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'time_series_trend',
|
|
94
|
+
label: 'Time-series trend',
|
|
95
|
+
description: 'Direction bias, slope, and value peaks/troughs on line-only metrics',
|
|
96
|
+
analyzeTool: 'analyze_time_series_trend',
|
|
97
|
+
dataKind: 'time_series',
|
|
98
|
+
optionalSkill: 'chart-analysis-time-series',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'time_series_momentum',
|
|
102
|
+
label: 'Time-series momentum',
|
|
103
|
+
description: 'RSI and rate-of-change on line-only metrics (TVL, fees, index levels)',
|
|
104
|
+
analyzeTool: 'analyze_time_series_momentum',
|
|
105
|
+
dataKind: 'time_series',
|
|
106
|
+
optionalSkill: 'chart-analysis-time-series',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: 'time_series_stats',
|
|
110
|
+
label: 'Time-series stats',
|
|
111
|
+
description: 'Min/max/mean, period change %, return volatility, compression',
|
|
112
|
+
analyzeTool: 'analyze_time_series_stats',
|
|
113
|
+
dataKind: 'time_series',
|
|
114
|
+
optionalSkill: 'chart-analysis-time-series',
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
export function listChartAnalysisOptions(input = {}) {
|
|
118
|
+
const dataKind = input.dataKind;
|
|
119
|
+
const analyses = ALL_CHART_ANALYSES.filter(entry => chartAnalysisMatchesDataKind(entry, dataKind));
|
|
2
120
|
return {
|
|
3
|
-
analyses
|
|
4
|
-
{
|
|
5
|
-
id: 'trend_structure',
|
|
6
|
-
label: 'Trend structure',
|
|
7
|
-
description: 'Swing phases, higher-high / lower-low structure, bias, key swings',
|
|
8
|
-
analyzeTool: 'analyze_trend_structure',
|
|
9
|
-
dataKind: 'ohlcv',
|
|
10
|
-
optionalSkill: 'chart-analysis-trend',
|
|
11
|
-
relatedDrawing: { calculateTool: 'calculate_trend_lines', applyField: 'trendLines' },
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
id: 'key_levels',
|
|
15
|
-
label: 'Key levels (level to level)',
|
|
16
|
-
description: 'Closest support below and resistance above last close; bounce/rejection trade (no Fib targets)',
|
|
17
|
-
analyzeTool: 'analyze_key_levels',
|
|
18
|
-
dataKind: 'ohlcv',
|
|
19
|
-
optionalSkill: 'chart-analysis-levels',
|
|
20
|
-
relatedDrawing: { calculateTool: 'calculate_key_levels', applyField: 'horizontalLevels' },
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
id: 'key_level_fibonacci',
|
|
24
|
-
label: 'Key level Fibonacci',
|
|
25
|
-
description: 'Outer concentric swing range; 0.618 retracement entry and range-leg targets',
|
|
26
|
-
analyzeTool: 'analyze_key_level_fibonacci',
|
|
27
|
-
dataKind: 'ohlcv',
|
|
28
|
-
optionalSkill: 'chart-analysis-levels',
|
|
29
|
-
relatedDrawing: { calculateTool: 'calculate_key_levels', applyField: 'horizontalLevels' },
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
id: 'momentum',
|
|
33
|
-
label: 'Momentum',
|
|
34
|
-
description: 'RSI and MACD readings, overbought/oversold flags, crossover state',
|
|
35
|
-
analyzeTool: 'analyze_momentum',
|
|
36
|
-
dataKind: 'ohlcv',
|
|
37
|
-
optionalSkill: 'chart-analysis-momentum',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: 'range_volatility',
|
|
41
|
-
label: 'Range / volatility',
|
|
42
|
-
description: 'Price range bounds, compression vs expansion, ATR-style stats',
|
|
43
|
-
analyzeTool: 'analyze_range_volatility',
|
|
44
|
-
dataKind: 'ohlcv',
|
|
45
|
-
optionalSkill: 'chart-analysis-range',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
id: 'bollinger_bands',
|
|
49
|
-
label: 'Bollinger analysis',
|
|
50
|
-
description: 'Bollinger bands on OHLCV or line metrics; band-to-band fade trade when price is near an outer band',
|
|
51
|
-
analyzeTool: 'analyze_bollinger_bands',
|
|
52
|
-
dataKind: 'ohlcv',
|
|
53
|
-
optionalSkill: 'chart-analysis-bollinger',
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
id: 'moving_averages',
|
|
57
|
-
label: 'Moving averages',
|
|
58
|
-
description: 'Fast/slow MA crossover and proximity+retest trade setups from OHLCV (default SMA 50/200)',
|
|
59
|
-
analyzeTool: 'analyze_moving_averages',
|
|
60
|
-
dataKind: 'ohlcv',
|
|
61
|
-
optionalSkill: 'chart-analysis-moving-averages',
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
id: 'candlestick_patterns',
|
|
65
|
-
label: 'Candlestick patterns',
|
|
66
|
-
description: 'TA-Lib-style pattern recognition (doji, hammer, engulfing, etc.) with buy/sell/hold and confidence',
|
|
67
|
-
analyzeTool: 'analyze_candlestick_patterns',
|
|
68
|
-
dataKind: 'ohlcv',
|
|
69
|
-
optionalSkill: 'chart-analysis-patterns',
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
id: 'chart_patterns',
|
|
73
|
-
label: 'Classic chart patterns',
|
|
74
|
-
description: 'Multi-bar geometry patterns (H&S, doubles, triangles, cup & handle, etc.) with 5-level classification and interpretation',
|
|
75
|
-
analyzeTool: 'analyze_chart_patterns',
|
|
76
|
-
dataKind: 'ohlcv',
|
|
77
|
-
optionalSkill: 'chart-analysis-classic-patterns',
|
|
78
|
-
relatedDrawing: {
|
|
79
|
-
calculateTool: 'calculate_chart_pattern_drawings',
|
|
80
|
-
applyField: 'patternOverlay',
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
id: 'time_series_trend',
|
|
85
|
-
label: 'Time-series trend',
|
|
86
|
-
description: 'Direction bias, slope, and value peaks/troughs on line-only metrics',
|
|
87
|
-
analyzeTool: 'analyze_time_series_trend',
|
|
88
|
-
dataKind: 'time_series',
|
|
89
|
-
optionalSkill: 'chart-analysis-time-series',
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
id: 'time_series_momentum',
|
|
93
|
-
label: 'Time-series momentum',
|
|
94
|
-
description: 'RSI and rate-of-change on line-only metrics (TVL, fees, index levels)',
|
|
95
|
-
analyzeTool: 'analyze_time_series_momentum',
|
|
96
|
-
dataKind: 'time_series',
|
|
97
|
-
optionalSkill: 'chart-analysis-time-series',
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
id: 'time_series_stats',
|
|
101
|
-
label: 'Time-series stats',
|
|
102
|
-
description: 'Min/max/mean, period change %, return volatility, compression',
|
|
103
|
-
analyzeTool: 'analyze_time_series_stats',
|
|
104
|
-
dataKind: 'time_series',
|
|
105
|
-
optionalSkill: 'chart-analysis-time-series',
|
|
106
|
-
},
|
|
107
|
-
],
|
|
121
|
+
analyses,
|
|
108
122
|
exampleUserPhrases: [
|
|
109
123
|
'interpret this chart',
|
|
110
124
|
'analyze ETH',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-catalog.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/analysis-catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analysis-catalog.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/analysis-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NodeSdkConfig } from '../../../../config/schema.js';
|
|
2
|
+
import type { SdkResult } from '../../../result.js';
|
|
3
|
+
import type { DefiProtocolContext } from '../../../../mcp/defi/context.js';
|
|
4
|
+
import type { TradeIdea } from './trade-idea.js';
|
|
5
|
+
import type { BuildTradeFromTradeIdeaInput } from './build-trade.js';
|
|
6
|
+
export declare function buildUniswapLimitOrderFromTradeIdea(config: NodeSdkConfig, defiContext: DefiProtocolContext, idea: TradeIdea, input: BuildTradeFromTradeIdeaInput): Promise<SdkResult<{
|
|
7
|
+
requestId: string;
|
|
8
|
+
mappedTool: string;
|
|
9
|
+
}>>;
|
|
10
|
+
//# sourceMappingURL=build-trade-uniswap-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-trade-uniswap-limit.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/build-trade-uniswap-limit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,iCAAiC,CAAC;AAEzE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AAgCnE,wBAAsB,mCAAmC,CACxD,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,4BAA4B,GACjC,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAyG7D"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { getMcpToolDefinitions } from '@continuumdao/ctm-mpc-defi/agent';
|
|
2
|
+
import { resolveTokenFromRegistry } from '../../../registry/tokens.js';
|
|
3
|
+
import { executeDefiMcpTool } from '../../../../mcp/defi/handler.js';
|
|
4
|
+
import { formatHumanPrice, validateBuildTradePrices } from './build-trade.js';
|
|
5
|
+
const UNISWAP_LIMIT_QUOTE_TOOL = 'ctm_uniswap_v4_limit_order_quote';
|
|
6
|
+
const UNISWAP_BUILD_LIMIT_TOOL = 'ctm_uniswap_v4_build_limit_order_multisign';
|
|
7
|
+
const DEFAULT_COLLATERAL_SYMBOL = 'USDC';
|
|
8
|
+
const MAINNET_CHAIN_ID = 1;
|
|
9
|
+
const DEFAULT_ORDER_TTL_SEC = 7 * 24 * 60 * 60;
|
|
10
|
+
function findDefiTool(toolName) {
|
|
11
|
+
return getMcpToolDefinitions().find(tool => tool.name === toolName) ?? null;
|
|
12
|
+
}
|
|
13
|
+
function humanToBaseUnits(human, decimals) {
|
|
14
|
+
const trimmed = human.trim();
|
|
15
|
+
if (!trimmed || !/^\d+(\.\d+)?$/.test(trimmed)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const [whole, frac = ''] = trimmed.split('.');
|
|
19
|
+
const fracPadded = (frac + '0'.repeat(decimals)).slice(0, decimals);
|
|
20
|
+
const combined = `${whole}${fracPadded}`.replace(/^0+/, '') || '0';
|
|
21
|
+
try {
|
|
22
|
+
return BigInt(combined).toString();
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function limitPriceFromEntry(entry) {
|
|
29
|
+
return formatHumanPrice(entry);
|
|
30
|
+
}
|
|
31
|
+
export async function buildUniswapLimitOrderFromTradeIdea(config, defiContext, idea, input) {
|
|
32
|
+
const chainId = input.chainId || MAINNET_CHAIN_ID;
|
|
33
|
+
if (chainId !== MAINNET_CHAIN_ID) {
|
|
34
|
+
return {
|
|
35
|
+
ok: false,
|
|
36
|
+
reason: `UniswapX limit orders require Ethereum mainnet (chainId ${MAINNET_CHAIN_ID}). Got ${chainId}.`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (idea.side !== 'long' && idea.side !== 'short') {
|
|
40
|
+
return { ok: false, reason: 'Trade idea side must be long or short for Uniswap limit orders.' };
|
|
41
|
+
}
|
|
42
|
+
const validated = validateBuildTradePrices(idea, input);
|
|
43
|
+
if (!validated.ok) {
|
|
44
|
+
return validated;
|
|
45
|
+
}
|
|
46
|
+
const symbol = idea.symbol?.trim().toUpperCase();
|
|
47
|
+
if (!symbol) {
|
|
48
|
+
return { ok: false, reason: 'Trade idea is missing symbol for Uniswap mapping.' };
|
|
49
|
+
}
|
|
50
|
+
const sizeUsd = input.sizeUsdHuman?.trim();
|
|
51
|
+
if (!sizeUsd) {
|
|
52
|
+
return { ok: false, reason: 'sizeUsdHuman is required for Uniswap limit orders.' };
|
|
53
|
+
}
|
|
54
|
+
const tokenOut = await resolveTokenFromRegistry(config, {
|
|
55
|
+
chainId,
|
|
56
|
+
tokenSymbol: idea.side === 'long' ? symbol : DEFAULT_COLLATERAL_SYMBOL,
|
|
57
|
+
});
|
|
58
|
+
if (!tokenOut.ok) {
|
|
59
|
+
return tokenOut;
|
|
60
|
+
}
|
|
61
|
+
const tokenIn = await resolveTokenFromRegistry(config, {
|
|
62
|
+
chainId,
|
|
63
|
+
tokenSymbol: idea.side === 'long' ? DEFAULT_COLLATERAL_SYMBOL : symbol,
|
|
64
|
+
});
|
|
65
|
+
if (!tokenIn.ok) {
|
|
66
|
+
return tokenIn;
|
|
67
|
+
}
|
|
68
|
+
const inDecimals = idea.side === 'long' ? 6 : 18;
|
|
69
|
+
const amountBase = humanToBaseUnits(sizeUsd, inDecimals);
|
|
70
|
+
if (!amountBase) {
|
|
71
|
+
return { ok: false, reason: `Invalid sizeUsdHuman ${sizeUsd} for Uniswap limit quote.` };
|
|
72
|
+
}
|
|
73
|
+
const quoteTool = findDefiTool(UNISWAP_LIMIT_QUOTE_TOOL);
|
|
74
|
+
const buildTool = findDefiTool(UNISWAP_BUILD_LIMIT_TOOL);
|
|
75
|
+
if (!quoteTool || !buildTool) {
|
|
76
|
+
return { ok: false, reason: 'Uniswap V4 limit order MCP tools are not registered.' };
|
|
77
|
+
}
|
|
78
|
+
const tokenInAddr = tokenIn.data.contractAddress === '0x0' ? '0x0000000000000000000000000000000000000000' : tokenIn.data.contractAddress;
|
|
79
|
+
const tokenOutAddr = tokenOut.data.contractAddress === '0x0' ? '0x0000000000000000000000000000000000000000' : tokenOut.data.contractAddress;
|
|
80
|
+
const orderDeadline = input.expiryDate != null && input.expiryDate > 0
|
|
81
|
+
? Math.floor(input.expiryDate)
|
|
82
|
+
: Math.floor(Date.now() / 1000) + DEFAULT_ORDER_TTL_SEC;
|
|
83
|
+
const quoteResult = await executeDefiMcpTool(config, defiContext, quoteTool, {
|
|
84
|
+
type: 'EXACT_INPUT',
|
|
85
|
+
amount: amountBase,
|
|
86
|
+
limitPrice: limitPriceFromEntry(validated.data.entry),
|
|
87
|
+
tokenIn: tokenInAddr,
|
|
88
|
+
tokenOut: tokenOutAddr,
|
|
89
|
+
chainId,
|
|
90
|
+
orderDeadline,
|
|
91
|
+
keyGenId: input.keyGenId,
|
|
92
|
+
});
|
|
93
|
+
if (quoteResult.isError) {
|
|
94
|
+
const text = quoteResult.content?.[0]?.type === 'text' ? quoteResult.content[0].text : 'Uniswap limit quote failed.';
|
|
95
|
+
return { ok: false, reason: text };
|
|
96
|
+
}
|
|
97
|
+
const fullLimitQuote = quoteResult.structuredContent && typeof quoteResult.structuredContent === 'object'
|
|
98
|
+
? quoteResult.structuredContent
|
|
99
|
+
: null;
|
|
100
|
+
if (!fullLimitQuote) {
|
|
101
|
+
return { ok: false, reason: 'Uniswap limit quote returned no structured content.' };
|
|
102
|
+
}
|
|
103
|
+
const buildResult = await executeDefiMcpTool(config, defiContext, buildTool, {
|
|
104
|
+
keyGenId: input.keyGenId,
|
|
105
|
+
chainId,
|
|
106
|
+
purposeText: input.purposeText,
|
|
107
|
+
fullLimitQuote,
|
|
108
|
+
...(input.expiryDate != null && input.expiryDate > 0 ? { expiryDate: Math.floor(input.expiryDate) } : {}),
|
|
109
|
+
});
|
|
110
|
+
if (buildResult.isError) {
|
|
111
|
+
const text = buildResult.content?.[0]?.type === 'text' ? buildResult.content[0].text : 'Uniswap build_limit_order failed.';
|
|
112
|
+
return { ok: false, reason: text };
|
|
113
|
+
}
|
|
114
|
+
const structured = buildResult.structuredContent && typeof buildResult.structuredContent === 'object'
|
|
115
|
+
? buildResult.structuredContent
|
|
116
|
+
: {};
|
|
117
|
+
const requestId = String(structured.requestId ?? '').trim();
|
|
118
|
+
if (!requestId) {
|
|
119
|
+
return { ok: false, reason: 'Uniswap build_limit_order did not return requestId.' };
|
|
120
|
+
}
|
|
121
|
+
return { ok: true, data: { requestId, mappedTool: UNISWAP_BUILD_LIMIT_TOOL } };
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=build-trade-uniswap-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-trade-uniswap-limit.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/build-trade-uniswap-limit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAC,gBAAgB,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AAE5E,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AACpE,MAAM,wBAAwB,GAAG,4CAA4C,CAAC;AAC9E,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE/C,SAAS,YAAY,CAAC,QAAgB;IACrC,OAAO,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACnE,IAAI,CAAC;QACJ,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACzC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACxD,MAAqB,EACrB,WAAgC,EAChC,IAAe,EACf,KAAmC;IAEnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC;IAClD,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QAClC,OAAO;YACN,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,2DAA2D,gBAAgB,UAAU,OAAO,GAAG;SACvG,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnD,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iEAAiE,EAAC,CAAC;IAC/F,CAAC;IACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAC,CAAC;IACjF,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAC,CAAC;IAClF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE;QACvD,OAAO;QACP,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB;KACtE,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE;QACtD,OAAO;QACP,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM;KACtE,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,OAAO,2BAA2B,EAAC,CAAC;IACxF,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sDAAsD,EAAC,CAAC;IACpF,CAAC;IAED,MAAM,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;IACtH,MAAM,YAAY,GACjB,QAAQ,CAAC,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;IAExH,MAAM,aAAa,GAClB,KAAK,CAAC,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,qBAAqB,CAAC;IAE1D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;QAC5E,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAK,CAAC,KAAK,CAAC;QACtD,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,aAAa;QACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GACT,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC;QACzG,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IAClC,CAAC;IACD,MAAM,cAAc,GACnB,WAAW,CAAC,iBAAiB,IAAI,OAAO,WAAW,CAAC,iBAAiB,KAAK,QAAQ;QACjF,CAAC,CAAC,WAAW,CAAC,iBAAiB;QAC/B,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qDAAqD,EAAC,CAAC;IACnF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;QAC5E,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO;QACP,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc;QACd,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvG,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GACT,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC;QAC/G,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IAClC,CAAC;IACD,MAAM,UAAU,GACf,WAAW,CAAC,iBAAiB,IAAI,OAAO,WAAW,CAAC,iBAAiB,KAAK,QAAQ;QACjF,CAAC,CAAE,WAAW,CAAC,iBAA6C;QAC5D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qDAAqD,EAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,SAAS,EAAE,UAAU,EAAE,wBAAwB,EAAC,EAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { SdkResult } from '../../../result.js';
|
|
|
3
3
|
import type { DefiProtocolContext } from '../../../../mcp/defi/context.js';
|
|
4
4
|
import type { EntryOffsetMode, EntryProximityMode } from './pattern-limit-entry.js';
|
|
5
5
|
import type { TradeIdea } from './trade-idea.js';
|
|
6
|
+
import { type HyperliquidTpslExecMode } from './trade-desk-defaults.js';
|
|
6
7
|
export type BuildTradeProtocolId = 'hyperliquid' | 'gmx' | 'uniswap';
|
|
7
8
|
export type BuildTradeFromTradeIdeaInput = {
|
|
8
9
|
tradeIdea: TradeIdea;
|
|
@@ -11,8 +12,15 @@ export type BuildTradeFromTradeIdeaInput = {
|
|
|
11
12
|
chainId: number;
|
|
12
13
|
purposeText: string;
|
|
13
14
|
useCustomGas?: boolean;
|
|
15
|
+
/** Uniswap mainnet: market spot swap (default) or UniswapX limit order. */
|
|
16
|
+
orderKind?: 'market' | 'limit';
|
|
17
|
+
/** When true, include TP/SL monitor cron registration hints in output (Uniswap). */
|
|
18
|
+
enableTpslMonitor?: boolean;
|
|
14
19
|
entryOffsetPct?: number;
|
|
15
20
|
invalidationOffsetPct?: number;
|
|
21
|
+
targetOffsetPct?: number;
|
|
22
|
+
targetOffsetMode?: EntryProximityMode;
|
|
23
|
+
tpslExecMode?: HyperliquidTpslExecMode;
|
|
16
24
|
entryProximityPct?: number;
|
|
17
25
|
entryProximityMode?: EntryProximityMode;
|
|
18
26
|
szHuman?: string;
|
|
@@ -34,14 +42,25 @@ export type BuildTradeFromTradeIdeaOutput = {
|
|
|
34
42
|
protocolId: BuildTradeProtocolId;
|
|
35
43
|
entryPriceHuman: string;
|
|
36
44
|
invalidationPriceHuman?: string;
|
|
45
|
+
takeProfitPriceHuman?: string;
|
|
46
|
+
stopLossPriceHuman?: string;
|
|
37
47
|
side: TradeIdea['side'];
|
|
48
|
+
/** Set when enableTpslMonitor registered a cron job after build. */
|
|
49
|
+
tpslMonitorCron?: {
|
|
50
|
+
name: string;
|
|
51
|
+
jobId: string;
|
|
52
|
+
};
|
|
53
|
+
/** When enableTpslMonitor was requested but cron could not be created. */
|
|
54
|
+
tpslMonitorWarning?: string;
|
|
38
55
|
};
|
|
39
56
|
export declare function applyEntryOffset(price: number, side: TradeIdea['side'], offsetPct: number | undefined, mode: EntryOffsetMode): number;
|
|
40
57
|
export declare function applyInvalidationOffset(price: number, side: TradeIdea['side'], offsetPct?: number): number;
|
|
41
58
|
export declare function formatHumanPrice(price: number): string;
|
|
59
|
+
export declare function applyTargetOffset(price: number, side: TradeIdea['side'], offsetPct?: number, mode?: EntryProximityMode, atr?: number | null): number;
|
|
42
60
|
export declare function validateBuildTradePrices(idea: TradeIdea, input: BuildTradeFromTradeIdeaInput): SdkResult<{
|
|
43
61
|
entry: number;
|
|
44
62
|
invalidation?: number;
|
|
63
|
+
target?: number;
|
|
45
64
|
}>;
|
|
46
65
|
export declare function mapTradeIdeaToHyperliquidLimitInput(idea: TradeIdea, input: BuildTradeFromTradeIdeaInput): SdkResult<Record<string, unknown>>;
|
|
47
66
|
export declare function mapTradeIdeaToGmxIncreaseInput(idea: TradeIdea, input: BuildTradeFromTradeIdeaInput): SdkResult<Record<string, unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-trade.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/build-trade.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,iCAAiC,CAAC;AAEzE,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAClF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAK/C,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,4BAA4B,GAAG;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,oBAAoB,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,oBAAoB,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"build-trade.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/build-trade.ts"],"names":[],"mappings":"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"}
|