@continuumdao/continuum-node-sdk 1.3.29 → 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.
Files changed (200) hide show
  1. package/dist/agent-host-catalog.json +3 -0
  2. package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
  3. package/dist/core/chart/analysis/analysis-agent-view.js +17 -0
  4. package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
  5. package/dist/core/chart/analysis/analysis-catalog.d.ts +19 -13
  6. package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
  7. package/dist/core/chart/analysis/analysis-catalog.js +120 -98
  8. package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
  9. package/dist/core/chart/analysis/analyze-tools.d.ts +47 -0
  10. package/dist/core/chart/analysis/analyze-tools.d.ts.map +1 -1
  11. package/dist/core/chart/analysis/analyze-tools.js +28 -9
  12. package/dist/core/chart/analysis/analyze-tools.js.map +1 -1
  13. package/dist/core/chart/analysis/candlestick-patterns-tools.d.ts +2 -0
  14. package/dist/core/chart/analysis/candlestick-patterns-tools.d.ts.map +1 -1
  15. package/dist/core/chart/analysis/candlestick-patterns-tools.js +16 -2
  16. package/dist/core/chart/analysis/candlestick-patterns-tools.js.map +1 -1
  17. package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts +1 -0
  18. package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts.map +1 -1
  19. package/dist/core/chart/analysis/chart-patterns-tools.d.ts +2 -0
  20. package/dist/core/chart/analysis/chart-patterns-tools.d.ts.map +1 -1
  21. package/dist/core/chart/analysis/chart-patterns-tools.js +2 -0
  22. package/dist/core/chart/analysis/chart-patterns-tools.js.map +1 -1
  23. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts +1 -0
  24. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts.map +1 -1
  25. package/dist/core/chart/analysis/key-fib-drawings-tools.js +48 -3
  26. package/dist/core/chart/analysis/key-fib-drawings-tools.js.map +1 -1
  27. package/dist/core/chart/analysis/key-level-drawings-tools.d.ts.map +1 -1
  28. package/dist/core/chart/analysis/key-level-drawings-tools.js +12 -1
  29. package/dist/core/chart/analysis/key-level-drawings-tools.js.map +1 -1
  30. package/dist/core/chart/analysis/moving-averages-analyze-tools.d.ts +116 -0
  31. package/dist/core/chart/analysis/moving-averages-analyze-tools.d.ts.map +1 -0
  32. package/dist/core/chart/analysis/moving-averages-analyze-tools.js +205 -0
  33. package/dist/core/chart/analysis/moving-averages-analyze-tools.js.map +1 -0
  34. package/dist/core/chart/analysis/moving-averages-highlight.d.ts +30 -0
  35. package/dist/core/chart/analysis/moving-averages-highlight.d.ts.map +1 -0
  36. package/dist/core/chart/analysis/moving-averages-highlight.js +77 -0
  37. package/dist/core/chart/analysis/moving-averages-highlight.js.map +1 -0
  38. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts +10 -0
  39. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts.map +1 -0
  40. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js +123 -0
  41. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js.map +1 -0
  42. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.d.ts.map +1 -1
  43. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js +1 -0
  44. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js.map +1 -1
  45. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +21 -0
  46. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
  47. package/dist/core/chart/analysis/trade-setups/build-trade.js +154 -17
  48. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
  49. package/dist/core/chart/analysis/trade-setups/chart-data-purpose.d.ts +20 -0
  50. package/dist/core/chart/analysis/trade-setups/chart-data-purpose.d.ts.map +1 -0
  51. package/dist/core/chart/analysis/trade-setups/chart-data-purpose.js +207 -0
  52. package/dist/core/chart/analysis/trade-setups/chart-data-purpose.js.map +1 -0
  53. package/dist/core/chart/analysis/trade-setups/index.d.ts +2 -0
  54. package/dist/core/chart/analysis/trade-setups/index.d.ts.map +1 -1
  55. package/dist/core/chart/analysis/trade-setups/index.js +2 -0
  56. package/dist/core/chart/analysis/trade-setups/index.js.map +1 -1
  57. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts +1 -0
  58. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts.map +1 -1
  59. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js +3 -1
  60. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js.map +1 -1
  61. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts +2 -0
  62. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts.map +1 -1
  63. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js +33 -18
  64. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js.map +1 -1
  65. package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.d.ts +110 -0
  66. package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.d.ts.map +1 -0
  67. package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.js +330 -0
  68. package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.js.map +1 -0
  69. package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
  70. package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
  71. package/dist/core/chart/analysis/trade-setups/shared.js +2 -0
  72. package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
  73. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts +13 -1
  74. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts.map +1 -1
  75. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js +11 -0
  76. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js.map +1 -1
  77. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts +16 -0
  78. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts.map +1 -0
  79. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js +24 -0
  80. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js.map +1 -0
  81. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +11 -0
  82. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
  83. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +28 -0
  84. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
  85. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +13 -0
  86. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
  87. package/dist/core/chart/analysis/trade-setups/trade-idea.js +12 -0
  88. package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
  89. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +4 -0
  90. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
  91. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +11 -0
  92. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
  93. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +122 -0
  94. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -0
  95. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +231 -0
  96. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -0
  97. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts.map +1 -1
  98. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js +12 -3
  99. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js.map +1 -1
  100. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts +41 -0
  101. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts.map +1 -0
  102. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js +80 -0
  103. package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js.map +1 -0
  104. package/dist/core/chart/analysis/trend-line-menu-summary.d.ts +9 -2
  105. package/dist/core/chart/analysis/trend-line-menu-summary.d.ts.map +1 -1
  106. package/dist/core/chart/analysis/trend-line-menu-summary.js +74 -6
  107. package/dist/core/chart/analysis/trend-line-menu-summary.js.map +1 -1
  108. package/dist/core/chart-patterns/recommendation.d.ts +1 -0
  109. package/dist/core/chart-patterns/recommendation.d.ts.map +1 -1
  110. package/dist/core/chart-patterns/recommendation.js +7 -1
  111. package/dist/core/chart-patterns/recommendation.js.map +1 -1
  112. package/dist/core/chart-patterns/scan.d.ts.map +1 -1
  113. package/dist/core/chart-patterns/scan.js +4 -1
  114. package/dist/core/chart-patterns/scan.js.map +1 -1
  115. package/dist/core/chart-patterns/types.d.ts +2 -0
  116. package/dist/core/chart-patterns/types.d.ts.map +1 -1
  117. package/dist/core/mpc/broadcast-sign-result.d.ts +1 -0
  118. package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
  119. package/dist/core/mpc/broadcast-sign-result.js +66 -0
  120. package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
  121. package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts +13 -0
  122. package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts.map +1 -0
  123. package/dist/core/mpc/deliver-hyperliquid-exchange.js +93 -0
  124. package/dist/core/mpc/deliver-hyperliquid-exchange.js.map +1 -0
  125. package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts +6 -0
  126. package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts.map +1 -0
  127. package/dist/core/mpc/deliver-uniswapx-limit-order.js +59 -0
  128. package/dist/core/mpc/deliver-uniswapx-limit-order.js.map +1 -0
  129. package/dist/core/mpc/eip712-sign-request.d.ts +8 -0
  130. package/dist/core/mpc/eip712-sign-request.d.ts.map +1 -0
  131. package/dist/core/mpc/eip712-sign-request.js +65 -0
  132. package/dist/core/mpc/eip712-sign-request.js.map +1 -0
  133. package/dist/core/mpc/schemas.d.ts +4 -0
  134. package/dist/core/mpc/schemas.d.ts.map +1 -1
  135. package/dist/core/mpc/schemas.js +3 -0
  136. package/dist/core/mpc/schemas.js.map +1 -1
  137. package/dist/core/mpc/sign-request-utils.d.ts +6 -0
  138. package/dist/core/mpc/sign-request-utils.d.ts.map +1 -1
  139. package/dist/core/mpc/sign-request-utils.js +47 -0
  140. package/dist/core/mpc/sign-request-utils.js.map +1 -1
  141. package/dist/core/mpc/sign-result-summary.d.ts.map +1 -1
  142. package/dist/core/mpc/sign-result-summary.js +5 -1
  143. package/dist/core/mpc/sign-result-summary.js.map +1 -1
  144. package/dist/core/mpc/trigger-sign-result.d.ts.map +1 -1
  145. package/dist/core/mpc/trigger-sign-result.js +15 -1
  146. package/dist/core/mpc/trigger-sign-result.js.map +1 -1
  147. package/dist/core/mpc/types.d.ts +4 -0
  148. package/dist/core/mpc/types.d.ts.map +1 -1
  149. package/dist/index.d.ts +1 -1
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +1 -1
  152. package/dist/index.js.map +1 -1
  153. package/dist/mcp/agent-environment-variables.js +1 -1
  154. package/dist/mcp/agent-environment-variables.js.map +1 -1
  155. package/dist/mcp/chart.d.ts.map +1 -1
  156. package/dist/mcp/chart.js +17 -4
  157. package/dist/mcp/chart.js.map +1 -1
  158. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  159. package/dist/mcp/deferred/tool-group-map.js +3 -0
  160. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  161. package/dist/mcp/defi/bitquery-api-key.d.ts +16 -0
  162. package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -0
  163. package/dist/mcp/defi/bitquery-api-key.js +86 -0
  164. package/dist/mcp/defi/bitquery-api-key.js.map +1 -0
  165. package/dist/mcp/defi/catalog-adapter.d.ts +3 -2
  166. package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
  167. package/dist/mcp/defi/catalog-adapter.js +7 -2
  168. package/dist/mcp/defi/catalog-adapter.js.map +1 -1
  169. package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts +3 -0
  170. package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -1
  171. package/dist/mcp/defi/defi-protocol-fetch-meta.js +28 -18
  172. package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -1
  173. package/dist/mcp/defi/discovery.js +1 -1
  174. package/dist/mcp/defi/discovery.js.map +1 -1
  175. package/dist/mcp/defi/handler.d.ts.map +1 -1
  176. package/dist/mcp/defi/handler.js +20 -3
  177. package/dist/mcp/defi/handler.js.map +1 -1
  178. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  179. package/dist/mcp/defi/register-protocol-tools.js +11 -1
  180. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  181. package/dist/mcp/defi/the-graph-api-key.d.ts +17 -0
  182. package/dist/mcp/defi/the-graph-api-key.d.ts.map +1 -0
  183. package/dist/mcp/defi/the-graph-api-key.js +82 -0
  184. package/dist/mcp/defi/the-graph-api-key.js.map +1 -0
  185. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
  186. package/dist/mcp/defi/uniswap-api-key.js +3 -0
  187. package/dist/mcp/defi/uniswap-api-key.js.map +1 -1
  188. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts +7 -0
  189. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts.map +1 -0
  190. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js +11 -0
  191. package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js.map +1 -0
  192. package/dist/mcp/mpc.js +2 -2
  193. package/dist/mcp/mpc.js.map +1 -1
  194. package/dist/mcp/resources/agent-cron-jobs.md +11 -1
  195. package/dist/mcp/resources/chart.md +3 -2
  196. package/dist/mcp/resources/uniswap-tpsl-monitor-cron.example.md +27 -0
  197. package/dist/mcp/trade-tools.d.ts.map +1 -1
  198. package/dist/mcp/trade-tools.js +192 -4
  199. package/dist/mcp/trade-tools.js.map +1 -1
  200. package/package.json +2 -2
@@ -0,0 +1,231 @@
1
+ import { z } from 'zod';
2
+ const trendStructureSelectionSchema = z
3
+ .object({
4
+ kind: z.literal('trend_structure'),
5
+ trendLineNumber: z.number().int().min(1),
6
+ })
7
+ .strict();
8
+ const keyLevelsSelectionSchema = z
9
+ .object({
10
+ kind: z.literal('key_levels'),
11
+ levelNumber: z.number().int().min(1),
12
+ framing: z.enum(['bounce', 'break']),
13
+ brokenLevelNumber: z.number().int().min(1).optional(),
14
+ })
15
+ .strict();
16
+ const keyLevelFibonacciSelectionSchema = z
17
+ .object({
18
+ kind: z.literal('key_level_fibonacci'),
19
+ fibPairNumber: z.number().int().min(1),
20
+ side: z.enum(['long', 'short']),
21
+ lowLevelNumber: z.number().int().min(1),
22
+ highLevelNumber: z.number().int().min(1),
23
+ framing: z.enum(['retrace', 'break']).optional(),
24
+ brokenLevelNumber: z.number().int().min(1).optional(),
25
+ })
26
+ .strict();
27
+ const chartPatternSelectionSchema = z
28
+ .object({
29
+ kind: z.literal('chart_pattern'),
30
+ patternNumber: z.number().int().min(1),
31
+ patternId: z.string().min(1),
32
+ })
33
+ .strict();
34
+ const candlestickSelectionSchema = z
35
+ .object({
36
+ kind: z.literal('candlestick'),
37
+ patternId: z.string().min(1),
38
+ barIndex: z.number().int().min(0),
39
+ })
40
+ .strict();
41
+ const bollingerSelectionSchema = z
42
+ .object({
43
+ kind: z.literal('bollinger_bands'),
44
+ period: z.number().int().min(1),
45
+ stdDev: z.number().positive(),
46
+ setupPurposeCode: z.string().min(1),
47
+ })
48
+ .strict();
49
+ const movingAveragesSelectionSchema = z
50
+ .object({
51
+ kind: z.literal('moving_averages'),
52
+ strategy: z.enum(['crossover', 'proximity_retest']),
53
+ fastPeriod: z.number().int().min(1),
54
+ slowPeriod: z.number().int().min(1),
55
+ maType: z.enum(['sma', 'ema']),
56
+ setupPurposeCode: z.string().min(1),
57
+ })
58
+ .strict();
59
+ const momentumSelectionSchema = z
60
+ .object({
61
+ kind: 'momentum',
62
+ rsiPeriod: z.number().int().min(1),
63
+ })
64
+ .strict();
65
+ const rangeVolatilitySelectionSchema = z
66
+ .object({
67
+ kind: z.literal('range_volatility'),
68
+ })
69
+ .strict();
70
+ export const TradeSetupSelectionSchema = z.discriminatedUnion('kind', [
71
+ trendStructureSelectionSchema,
72
+ keyLevelsSelectionSchema,
73
+ keyLevelFibonacciSelectionSchema,
74
+ chartPatternSelectionSchema,
75
+ candlestickSelectionSchema,
76
+ bollingerSelectionSchema,
77
+ movingAveragesSelectionSchema,
78
+ momentumSelectionSchema,
79
+ rangeVolatilitySelectionSchema,
80
+ ]);
81
+ export function extractTradeSetupSelection(setup) {
82
+ switch (setup.kind) {
83
+ case 'trend_structure': {
84
+ const n = setup.setup.trendLineNumber;
85
+ return n != null && n >= 1 ? { kind: 'trend_structure', trendLineNumber: n } : undefined;
86
+ }
87
+ case 'key_levels': {
88
+ const s = setup.setup;
89
+ if (s.levelNumber == null || s.levelNumber < 1) {
90
+ return undefined;
91
+ }
92
+ const alt = s.breakRetestAlternative;
93
+ if (s.framing === 'break' && alt?.brokenLevelNumber != null) {
94
+ return {
95
+ kind: 'key_levels',
96
+ levelNumber: s.levelNumber,
97
+ framing: 'break',
98
+ brokenLevelNumber: alt.brokenLevelNumber,
99
+ };
100
+ }
101
+ return {
102
+ kind: 'key_levels',
103
+ levelNumber: s.levelNumber,
104
+ framing: s.framing,
105
+ };
106
+ }
107
+ case 'key_level_fibonacci': {
108
+ const s = setup.setup;
109
+ const alt = s.breakRetestAlternative;
110
+ if (alt?.brokenLevelNumber != null) {
111
+ return {
112
+ kind: 'key_level_fibonacci',
113
+ fibPairNumber: s.fibPairNumber,
114
+ side: s.side === 'long' || s.side === 'short' ? s.side : 'long',
115
+ lowLevelNumber: s.lowLevelNumber,
116
+ highLevelNumber: s.highLevelNumber,
117
+ framing: 'break',
118
+ brokenLevelNumber: alt.brokenLevelNumber,
119
+ };
120
+ }
121
+ return {
122
+ kind: 'key_level_fibonacci',
123
+ fibPairNumber: s.fibPairNumber,
124
+ side: s.side === 'long' || s.side === 'short' ? s.side : 'long',
125
+ lowLevelNumber: s.lowLevelNumber,
126
+ highLevelNumber: s.highLevelNumber,
127
+ framing: 'retrace',
128
+ };
129
+ }
130
+ case 'chart_pattern':
131
+ return {
132
+ kind: 'chart_pattern',
133
+ patternNumber: setup.setup.patternNumber,
134
+ patternId: setup.setup.patternId,
135
+ };
136
+ case 'candlestick':
137
+ return {
138
+ kind: 'candlestick',
139
+ patternId: setup.setup.patternId,
140
+ barIndex: setup.setup.barIndex,
141
+ };
142
+ case 'bollinger_bands': {
143
+ const s = setup.setup;
144
+ if (!s.setupPurposeCode) {
145
+ return undefined;
146
+ }
147
+ return {
148
+ kind: 'bollinger_bands',
149
+ period: s.period,
150
+ stdDev: s.stdDev,
151
+ setupPurposeCode: s.setupPurposeCode,
152
+ };
153
+ }
154
+ case 'moving_averages': {
155
+ const s = setup.setup;
156
+ return {
157
+ kind: 'moving_averages',
158
+ strategy: s.strategy,
159
+ fastPeriod: s.fastPeriod,
160
+ slowPeriod: s.slowPeriod,
161
+ maType: s.maType,
162
+ setupPurposeCode: s.setupPurposeCode,
163
+ };
164
+ }
165
+ case 'momentum':
166
+ return {
167
+ kind: 'momentum',
168
+ rsiPeriod: setup.setup.rsiPeriod,
169
+ };
170
+ case 'range_volatility':
171
+ return { kind: 'range_volatility' };
172
+ default:
173
+ return undefined;
174
+ }
175
+ }
176
+ /** Partial analyze_* tool args to re-bind the same menu/geometry on refresh. */
177
+ export function analyzeArgsFromTradeSetupSelection(selection) {
178
+ if (!selection) {
179
+ return {};
180
+ }
181
+ switch (selection.kind) {
182
+ case 'trend_structure':
183
+ return { tradeTrendLineNumber: selection.trendLineNumber };
184
+ case 'key_levels':
185
+ return {
186
+ tradeLevelNumber: selection.levelNumber,
187
+ ...(selection.framing === 'break' && selection.brokenLevelNumber != null
188
+ ? { tradeBrokenLevelNumber: selection.brokenLevelNumber }
189
+ : {}),
190
+ };
191
+ case 'key_level_fibonacci':
192
+ return {
193
+ fibPairNumber: selection.fibPairNumber,
194
+ tradeFibSide: selection.side,
195
+ };
196
+ case 'chart_pattern':
197
+ return { tradePatternNumber: selection.patternNumber };
198
+ case 'candlestick':
199
+ return {
200
+ tradePatternId: selection.patternId,
201
+ tradeBarIndex: selection.barIndex,
202
+ };
203
+ case 'bollinger_bands':
204
+ return {
205
+ period: selection.period,
206
+ stdDev: selection.stdDev,
207
+ };
208
+ case 'moving_averages':
209
+ return {
210
+ fastPeriod: selection.fastPeriod,
211
+ slowPeriod: selection.slowPeriod,
212
+ maType: selection.maType,
213
+ };
214
+ case 'momentum':
215
+ return { rsiPeriod: selection.rsiPeriod };
216
+ case 'range_volatility':
217
+ return {};
218
+ default:
219
+ return {};
220
+ }
221
+ }
222
+ export function tradeSetupSelectionForAnalysisType(ideas, analysisType) {
223
+ for (let i = ideas.length - 1; i >= 0; i -= 1) {
224
+ const idea = ideas[i];
225
+ if (idea.source.analysisType === analysisType && idea.tradeSetupSelection) {
226
+ return idea.tradeSetupSelection;
227
+ }
228
+ }
229
+ return undefined;
230
+ }
231
+ //# sourceMappingURL=trade-setup-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade-setup-selection.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trade-setup-selection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trend-structure-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAwBF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,wBAAwB,GAAG,IAAI,CA8FlC;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;EAoBhF"}
1
+ {"version":3,"file":"trend-structure-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAwBF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,wBAAwB,GAAG,IAAI,CAqGlC;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;EAoBhF"}
@@ -45,17 +45,26 @@ export function buildTrendStructureTradeSetup(input) {
45
45
  else if (side === 'long' && line.kind !== 'support') {
46
46
  unclearReason = 'Bullish bias expects a support trend line for a long limit entry.';
47
47
  }
48
- else if (side === 'short' && line.kind !== 'resistance') {
49
- unclearReason = 'Bearish bias expects a resistance trend line for a short limit entry.';
48
+ else if (side === 'short' && line.kind !== 'resistance' && line.kind !== 'support') {
49
+ unclearReason = 'Bearish bias expects a resistance or broken-support trend line for a short limit entry.';
50
50
  }
51
51
  else {
52
52
  const linePrice = trendLinePriceAtLastBar(line, input.bars);
53
53
  if (linePrice == null || !isFiniteTradePrice(linePrice)) {
54
54
  unclearReason = 'Could not project trade trend line to the current bar.';
55
55
  }
56
+ else if (side === 'short' && line.kind === 'support' && linePrice <= close * 1.001) {
57
+ unclearReason =
58
+ 'Bearish short needs broken support above last close for a retest entry — support line sits at or below spot.';
59
+ }
56
60
  else {
57
61
  triggerPrice = linePrice;
58
- triggerLabel = `${line.kind} trend retest`;
62
+ if (side === 'short' && line.kind === 'support') {
63
+ triggerLabel = 'broken support retest';
64
+ }
65
+ else {
66
+ triggerLabel = `${line.kind} trend retest`;
67
+ }
59
68
  if (side === 'long' && input.swingLow) {
60
69
  invalidationPrice = input.swingLow.price;
61
70
  invalidationLabel = 'recent swing low';
@@ -1 +1 @@
1
- {"version":3,"file":"trend-structure-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trend-structure-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { TradeIdea } from './trade-idea.js';
2
+ import { type BuildTradeFromTradeIdeaInput } from './build-trade.js';
3
+ export type UniswapTpslTrigger = 'take_profit' | 'stop_loss';
4
+ export type UniswapTpslMonitorInput = {
5
+ side: 'long' | 'short';
6
+ lastPrice: number;
7
+ takeProfitPrice?: number;
8
+ stopLossPrice?: number;
9
+ };
10
+ export type UniswapTpslMonitorEvaluation = {
11
+ triggered: boolean;
12
+ trigger?: UniswapTpslTrigger;
13
+ lastPriceHuman: string;
14
+ takeProfitPriceHuman?: string;
15
+ stopLossPriceHuman?: string;
16
+ };
17
+ export declare function parseHumanPrice(value: string | undefined): number | null;
18
+ export declare function evaluateUniswapTpslMonitor(input: UniswapTpslMonitorInput): UniswapTpslMonitorEvaluation;
19
+ export declare function uniswapTpslPricesFromTradeIdea(idea: TradeIdea, input: BuildTradeFromTradeIdeaInput): {
20
+ takeProfitPrice?: number;
21
+ stopLossPrice?: number;
22
+ } | null;
23
+ export type UniswapTpslMonitorCronSpec = {
24
+ name: string;
25
+ tradeIdeaId: string;
26
+ chainId: number;
27
+ protocolId: 'uniswap';
28
+ sizeUsdHuman: string;
29
+ keyGenId: string;
30
+ pollEveryMinutes: number;
31
+ takeProfitPriceHuman?: string;
32
+ stopLossPriceHuman?: string;
33
+ side: 'long' | 'short';
34
+ };
35
+ export declare function buildUniswapTpslMonitorCronMessage(spec: UniswapTpslMonitorCronSpec): string;
36
+ export declare function uniswapTpslMonitorSchedule(pollEveryMinutes: number): {
37
+ kind: 'every';
38
+ everyMs: number;
39
+ };
40
+ export declare function uniswapTpslMonitorCronName(tradeIdeaId: string): string;
41
+ //# sourceMappingURL=uniswap-tpsl-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-tpsl-monitor.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA6C,KAAK,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AAE/G,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,WAAW,CAAC;AAE7D,MAAM,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKxE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,4BAA4B,CAwBvG;AAED,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,4BAA4B,GACjC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAS3D;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,CA4B3F;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAGrG;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGtE"}
@@ -0,0 +1,80 @@
1
+ import { formatHumanPrice, validateBuildTradePrices } from './build-trade.js';
2
+ export function parseHumanPrice(value) {
3
+ const trimmed = value?.trim();
4
+ if (!trimmed)
5
+ return null;
6
+ const n = Number.parseFloat(trimmed);
7
+ return Number.isFinite(n) && n > 0 ? n : null;
8
+ }
9
+ export function evaluateUniswapTpslMonitor(input) {
10
+ const { side, lastPrice, takeProfitPrice, stopLossPrice } = input;
11
+ const base = {
12
+ triggered: false,
13
+ lastPriceHuman: formatHumanPrice(lastPrice),
14
+ ...(takeProfitPrice != null ? { takeProfitPriceHuman: formatHumanPrice(takeProfitPrice) } : {}),
15
+ ...(stopLossPrice != null ? { stopLossPriceHuman: formatHumanPrice(stopLossPrice) } : {}),
16
+ };
17
+ if (side === 'long') {
18
+ if (takeProfitPrice != null && lastPrice >= takeProfitPrice) {
19
+ return { ...base, triggered: true, trigger: 'take_profit' };
20
+ }
21
+ if (stopLossPrice != null && lastPrice <= stopLossPrice) {
22
+ return { ...base, triggered: true, trigger: 'stop_loss' };
23
+ }
24
+ return base;
25
+ }
26
+ if (takeProfitPrice != null && lastPrice <= takeProfitPrice) {
27
+ return { ...base, triggered: true, trigger: 'take_profit' };
28
+ }
29
+ if (stopLossPrice != null && lastPrice >= stopLossPrice) {
30
+ return { ...base, triggered: true, trigger: 'stop_loss' };
31
+ }
32
+ return base;
33
+ }
34
+ export function uniswapTpslPricesFromTradeIdea(idea, input) {
35
+ const validated = validateBuildTradePrices(idea, input);
36
+ if (!validated.ok) {
37
+ return null;
38
+ }
39
+ return {
40
+ ...(validated.data.target != null ? { takeProfitPrice: validated.data.target } : {}),
41
+ ...(validated.data.invalidation != null ? { stopLossPrice: validated.data.invalidation } : {}),
42
+ };
43
+ }
44
+ export function buildUniswapTpslMonitorCronMessage(spec) {
45
+ const yamlBlock = [
46
+ 'tradeTpslMonitor:',
47
+ '```yaml',
48
+ `protocolId: ${spec.protocolId}`,
49
+ `chainId: ${spec.chainId}`,
50
+ `tradeIdeaId: ${spec.tradeIdeaId}`,
51
+ `sizeUsdHuman: "${spec.sizeUsdHuman}"`,
52
+ `side: ${spec.side}`,
53
+ `pollEveryMinutes: ${spec.pollEveryMinutes}`,
54
+ ...(spec.takeProfitPriceHuman ? [`takeProfitPriceHuman: "${spec.takeProfitPriceHuman}"`] : []),
55
+ ...(spec.stopLossPriceHuman ? [`stopLossPriceHuman: "${spec.stopLossPriceHuman}"`] : []),
56
+ '```',
57
+ ].join('\n');
58
+ return `[Cron] Uniswap TP/SL monitor for trade idea ${spec.tradeIdeaId}
59
+
60
+ Each run:
61
+ 1. \`load_defi_protocol({ protocolId: "uniswap-v4" })\`
62
+ 2. Fetch current price via \`ctm_uniswap_v4_fetch_ohlcv\` (last candle close) or a small \`ctm_uniswap_v4_quote\` probe on chainId ${spec.chainId}.
63
+ 3. Compare price to TP/SL levels in the YAML block below using long/short rules (long: TP when price >= TP, SL when price <= SL; short inverted).
64
+ 4. If triggered: \`build_trade_from_trade_idea\` with protocolId uniswap, orderKind market, reversed exit side, sizeUsdHuman ${spec.sizeUsdHuman}, keyGenId ${spec.keyGenId}, chainId ${spec.chainId}. Purpose must note TP/SL exit.
65
+ 5. If not triggered: reply \`monitor_ok\` with last price and distances.
66
+ 6. If entry never filled and monitor is obsolete: \`deactivate_cron_job\` for this job.
67
+
68
+ Best-effort agent monitor — not exchange-grade resting TP/SL. Disable when filled or cancelled.
69
+
70
+ ${yamlBlock}`;
71
+ }
72
+ export function uniswapTpslMonitorSchedule(pollEveryMinutes) {
73
+ const minutes = Math.max(1, Math.floor(pollEveryMinutes));
74
+ return { kind: 'every', everyMs: minutes * 60_000 };
75
+ }
76
+ export function uniswapTpslMonitorCronName(tradeIdeaId) {
77
+ const slug = tradeIdeaId.replace(/[^a-zA-Z0-9-]/g, '').slice(0, 24);
78
+ return `uniswap-tpsl-${slug || 'monitor'}`;
79
+ }
80
+ //# sourceMappingURL=uniswap-tpsl-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-tpsl-monitor.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,14 @@ export type TrendLineTradePick = {
32
32
  /** 1-based trendLineMenu number when a bias-aligned line exists. */
33
33
  trendLineNumber: number | null;
34
34
  };
35
- /** Highest-scored trend line matching trade bias (support for long, resistance for short). */
36
- export declare function pickTrendLineForTradeSetup(bias: 'bullish' | 'bearish' | 'neutral', lines: TrendLine[]): TrendLineTradePick;
35
+ /** Trade setup uses an explicit trendLineMenu # (operator or apply_trend_line_drawings). */
36
+ export declare function trendLineForTradeSetupByNumber(lines: TrendLine[], trendLineNumber?: number | null): TrendLineTradePick;
37
+ /** Whether projected line price is a valid limit-retest level for bias (OHLCV-only, no chart draw). */
38
+ export declare function trendLineValidForRetestTrade(bias: 'bullish' | 'bearish', line: TrendLine, priceAtLast: number, lastClose: number): boolean;
39
+ /**
40
+ * Auto-pick trend line for trade entry from OHLCV only: valid retest geometry at the last bar,
41
+ * then highest score, then nearest to last close. Does not use menu rank (#1) as a shortcut.
42
+ */
43
+ export declare function pickTrendLineForTradeSetup(bias: 'bullish' | 'bearish' | 'neutral', lines: TrendLine[], bars?: Record<string, unknown>[], lastClose?: number | null): TrendLineTradePick;
37
44
  export declare function trendLinePriceAtLastBar(line: TrendLine, bars: Record<string, unknown>[]): number | null;
38
45
  //# sourceMappingURL=trend-line-menu-summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trend-line-menu-summary.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAIxE,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE;QACR,MAAM,EAAE,sBAAsB,CAAC;QAC/B,MAAM,EAAE,sBAAsB,CAAC;KAC/B,CAAC;CACF,CAAC;AA8BF,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACpB,uBAAuB,CAYzB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,kBAAkB,EAAE,CAkBtB;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,MAAM,GACrB,SAAS,GAAG,SAAS,CAKvB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,oEAAoE;IACpE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,8FAA8F;AAC9F,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACvC,KAAK,EAAE,SAAS,EAAE,GAChB,kBAAkB,CAUpB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,CAUvG"}
1
+ {"version":3,"file":"trend-line-menu-summary.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAIxE,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE;QACR,MAAM,EAAE,sBAAsB,CAAC;QAC/B,MAAM,EAAE,sBAAsB,CAAC;KAC/B,CAAC;CACF,CAAC;AA8BF,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACpB,uBAAuB,CAYzB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,kBAAkB,EAAE,CAkBtB;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,MAAM,GACrB,SAAS,GAAG,SAAS,CAKvB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,oEAAoE;IACpE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,kBAAkB,CAOpB;AASD,uGAAuG;AACvG,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAiBT;AA0BD;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACvC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAO,EACpC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,kBAAkB,CA+BpB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,CAUvG"}
@@ -68,17 +68,85 @@ export function pickTrendLineByNumber(lines, trendLineNumber) {
68
68
  }
69
69
  return lines[trendLineNumber - 1];
70
70
  }
71
- /** Highest-scored trend line matching trade bias (support for long, resistance for short). */
72
- export function pickTrendLineForTradeSetup(bias, lines) {
71
+ /** Trade setup uses an explicit trendLineMenu # (operator or apply_trend_line_drawings). */
72
+ export function trendLineForTradeSetupByNumber(lines, trendLineNumber) {
73
+ if (trendLineNumber == null || !Number.isFinite(trendLineNumber) || trendLineNumber < 1) {
74
+ return { line: null, trendLineNumber: null };
75
+ }
76
+ const n = Math.trunc(trendLineNumber);
77
+ const line = pickTrendLineByNumber(lines, n) ?? null;
78
+ return { line, trendLineNumber: line ? n : null };
79
+ }
80
+ /** Whether projected line price is a valid limit-retest level for bias (OHLCV-only, no chart draw). */
81
+ export function trendLineValidForRetestTrade(bias, line, priceAtLast, lastClose) {
82
+ if (!Number.isFinite(priceAtLast) || !Number.isFinite(lastClose) || lastClose <= 0) {
83
+ return false;
84
+ }
85
+ const eps = Math.max(Math.abs(lastClose) * 0.001, 1e-8);
86
+ if (bias === 'bearish') {
87
+ // Short limit waits for a rally into the line — retest must sit above spot.
88
+ if (priceAtLast <= lastClose + eps) {
89
+ return false;
90
+ }
91
+ return line.kind === 'resistance' || line.kind === 'support';
92
+ }
93
+ // Long limit waits for a dip into support — line at or slightly above spot (touch tolerance).
94
+ if (line.kind !== 'support') {
95
+ return false;
96
+ }
97
+ return priceAtLast <= lastClose + eps;
98
+ }
99
+ function collectTrendRetestCandidates(bias, lines, bars, lastClose) {
100
+ const out = [];
101
+ for (let index = 0; index < lines.length; index++) {
102
+ const line = lines[index];
103
+ const priceAtLast = trendLinePriceAtLastBar(line, bars);
104
+ if (priceAtLast == null || !trendLineValidForRetestTrade(bias, line, priceAtLast, lastClose)) {
105
+ continue;
106
+ }
107
+ const gap = bias === 'bearish'
108
+ ? priceAtLast - lastClose
109
+ : lastClose >= priceAtLast
110
+ ? lastClose - priceAtLast
111
+ : priceAtLast - lastClose;
112
+ out.push({ line, index, priceAtLast, gap });
113
+ }
114
+ return out;
115
+ }
116
+ /**
117
+ * Auto-pick trend line for trade entry from OHLCV only: valid retest geometry at the last bar,
118
+ * then highest score, then nearest to last close. Does not use menu rank (#1) as a shortcut.
119
+ */
120
+ export function pickTrendLineForTradeSetup(bias, lines, bars = [], lastClose) {
73
121
  if (bias === 'neutral' || !lines.length) {
74
122
  return { line: null, trendLineNumber: null };
75
123
  }
76
- const wantKind = bias === 'bullish' ? 'support' : 'resistance';
77
- const index = lines.findIndex(line => line.kind === wantKind);
78
- if (index < 0) {
124
+ const close = lastClose != null && Number.isFinite(lastClose)
125
+ ? lastClose
126
+ : (() => {
127
+ if (!bars.length) {
128
+ return null;
129
+ }
130
+ const lastBar = bars[bars.length - 1];
131
+ const raw = lastBar.close ?? lastBar.Close;
132
+ return typeof raw === 'number' && Number.isFinite(raw) ? raw : null;
133
+ })();
134
+ if (close == null) {
79
135
  return { line: null, trendLineNumber: null };
80
136
  }
81
- return { line: lines[index], trendLineNumber: index + 1 };
137
+ const candidates = collectTrendRetestCandidates(bias, lines, bars, close);
138
+ if (!candidates.length) {
139
+ return { line: null, trendLineNumber: null };
140
+ }
141
+ candidates.sort((a, b) => {
142
+ const scoreDelta = b.line.score - a.line.score;
143
+ if (Math.abs(scoreDelta) > 1e-9) {
144
+ return scoreDelta;
145
+ }
146
+ return a.gap - b.gap;
147
+ });
148
+ const picked = candidates[0];
149
+ return { line: picked.line, trendLineNumber: picked.index + 1 };
82
150
  }
83
151
  export function trendLinePriceAtLastBar(line, bars) {
84
152
  if (!bars.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"trend-line-menu-summary.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trend-line-menu-summary.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ChartPatternAnalysis, EnrichedChartPatternHit } from './types.js';
2
2
  export declare function buildChartPatternAnalysis(hits: EnrichedChartPatternHit[], barCount: number, patternsScanned: number, lastClose: number, options?: {
3
3
  minConfidence?: number;
4
+ tradePatternNumber?: number;
4
5
  }): ChartPatternAnalysis;
5
6
  //# sourceMappingURL=recommendation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../src/core/chart-patterns/recommendation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,oBAAoB,EAEpB,uBAAuB,EAEvB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,GAChC,oBAAoB,CAsFtB"}
1
+ {"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../src/core/chart-patterns/recommendation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,oBAAoB,EAEpB,uBAAuB,EAEvB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAC,GAC7D,oBAAoB,CA4FtB"}
@@ -65,7 +65,13 @@ export function buildChartPatternAnalysis(hits, barCount, patternsScanned, lastC
65
65
  Math.abs(hit.confidence - highest.confidence) < 1e-9,
66
66
  });
67
67
  });
68
- const chartPatternTradeSetup = sanitizeChartPatternTradeSetupForOutput(buildChartPatternTradeSetupFromHit(primary, lastClose, primaryMenuNumber, {
68
+ const chartPatternTradeSetup = sanitizeChartPatternTradeSetupForOutput(buildChartPatternTradeSetupFromHit((() => {
69
+ if (options?.tradePatternNumber != null) {
70
+ const idx = options.tradePatternNumber - 1;
71
+ return sorted[idx] ?? primary;
72
+ }
73
+ return primary;
74
+ })(), lastClose, options?.tradePatternNumber ?? primaryMenuNumber, {
69
75
  minConfidence: options?.minConfidence,
70
76
  }));
71
77
  return {