@continuumdao/continuum-node-sdk 1.2.28 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/config/mpa-wallet.d.ts +60 -29
  2. package/dist/config/mpa-wallet.d.ts.map +1 -1
  3. package/dist/config/mpa-wallet.js +35 -13
  4. package/dist/config/mpa-wallet.js.map +1 -1
  5. package/dist/config/paths.d.ts +2 -0
  6. package/dist/config/paths.d.ts.map +1 -1
  7. package/dist/config/paths.js +12 -0
  8. package/dist/config/paths.js.map +1 -1
  9. package/dist/core/mpc/mpa-billing-ops.d.ts +29 -0
  10. package/dist/core/mpc/mpa-billing-ops.d.ts.map +1 -0
  11. package/dist/core/mpc/mpa-billing-ops.js +473 -0
  12. package/dist/core/mpc/mpa-billing-ops.js.map +1 -0
  13. package/dist/core/mpc/mpa-top-up.d.ts.map +1 -1
  14. package/dist/core/mpc/mpa-top-up.js +17 -25
  15. package/dist/core/mpc/mpa-top-up.js.map +1 -1
  16. package/dist/core/mpc/register-keygen.d.ts.map +1 -1
  17. package/dist/core/mpc/register-keygen.js +1 -6
  18. package/dist/core/mpc/register-keygen.js.map +1 -1
  19. package/dist/core/mpc/schemas.d.ts +47 -0
  20. package/dist/core/mpc/schemas.d.ts.map +1 -1
  21. package/dist/core/mpc/schemas.js +35 -0
  22. package/dist/core/mpc/schemas.js.map +1 -1
  23. package/dist/core/ta/calculate.d.ts +15 -0
  24. package/dist/core/ta/calculate.d.ts.map +1 -0
  25. package/dist/core/ta/calculate.js +275 -0
  26. package/dist/core/ta/calculate.js.map +1 -0
  27. package/dist/core/ta/catalog.d.ts +26 -0
  28. package/dist/core/ta/catalog.d.ts.map +1 -0
  29. package/dist/core/ta/catalog.js +215 -0
  30. package/dist/core/ta/catalog.js.map +1 -0
  31. package/dist/core/ta/index.d.ts +5 -0
  32. package/dist/core/ta/index.d.ts.map +1 -0
  33. package/dist/core/ta/index.js +5 -0
  34. package/dist/core/ta/index.js.map +1 -0
  35. package/dist/core/ta/normalize-input.d.ts +30 -0
  36. package/dist/core/ta/normalize-input.d.ts.map +1 -0
  37. package/dist/core/ta/normalize-input.js +193 -0
  38. package/dist/core/ta/normalize-input.js.map +1 -0
  39. package/dist/core/ta/schemas.d.ts +151 -0
  40. package/dist/core/ta/schemas.d.ts.map +1 -0
  41. package/dist/core/ta/schemas.js +95 -0
  42. package/dist/core/ta/schemas.js.map +1 -0
  43. package/dist/core/vpn/schemas.d.ts +181 -0
  44. package/dist/core/vpn/schemas.d.ts.map +1 -0
  45. package/dist/core/vpn/schemas.js +112 -0
  46. package/dist/core/vpn/schemas.js.map +1 -0
  47. package/dist/core/vpn/vpn-admin.d.ts +22 -0
  48. package/dist/core/vpn/vpn-admin.d.ts.map +1 -0
  49. package/dist/core/vpn/vpn-admin.js +88 -0
  50. package/dist/core/vpn/vpn-admin.js.map +1 -0
  51. package/dist/core/vpn/vpn-egress.d.ts +30 -0
  52. package/dist/core/vpn/vpn-egress.d.ts.map +1 -0
  53. package/dist/core/vpn/vpn-egress.js +91 -0
  54. package/dist/core/vpn/vpn-egress.js.map +1 -0
  55. package/dist/core/vpn/vpn-files.d.ts +14 -0
  56. package/dist/core/vpn/vpn-files.d.ts.map +1 -0
  57. package/dist/core/vpn/vpn-files.js +32 -0
  58. package/dist/core/vpn/vpn-files.js.map +1 -0
  59. package/dist/core/vpn/vpn-host-binding.d.ts +4 -0
  60. package/dist/core/vpn/vpn-host-binding.d.ts.map +1 -0
  61. package/dist/core/vpn/vpn-host-binding.js +6 -0
  62. package/dist/core/vpn/vpn-host-binding.js.map +1 -0
  63. package/dist/core/vpn/vpn-parse.d.ts +115 -0
  64. package/dist/core/vpn/vpn-parse.d.ts.map +1 -0
  65. package/dist/core/vpn/vpn-parse.js +238 -0
  66. package/dist/core/vpn/vpn-parse.js.map +1 -0
  67. package/dist/core/vpn/vpn-signed.d.ts +13 -0
  68. package/dist/core/vpn/vpn-signed.d.ts.map +1 -0
  69. package/dist/core/vpn/vpn-signed.js +39 -0
  70. package/dist/core/vpn/vpn-signed.js.map +1 -0
  71. package/dist/index.d.ts +5 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +5 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/mcp/index.d.ts +1 -1
  76. package/dist/mcp/index.d.ts.map +1 -1
  77. package/dist/mcp/index.js +1 -1
  78. package/dist/mcp/index.js.map +1 -1
  79. package/dist/mcp/mpc.d.ts.map +1 -1
  80. package/dist/mcp/mpc.js +33 -2
  81. package/dist/mcp/mpc.js.map +1 -1
  82. package/dist/mcp/register.d.ts +1 -0
  83. package/dist/mcp/register.d.ts.map +1 -1
  84. package/dist/mcp/register.js +4 -0
  85. package/dist/mcp/register.js.map +1 -1
  86. package/dist/mcp/ta/register.d.ts +6 -0
  87. package/dist/mcp/ta/register.d.ts.map +1 -0
  88. package/dist/mcp/ta/register.js +51 -0
  89. package/dist/mcp/ta/register.js.map +1 -0
  90. package/dist/mcp/ta/resources/indicators.md +86 -0
  91. package/dist/mcp/ta-server/index.d.ts +2 -0
  92. package/dist/mcp/ta-server/index.d.ts.map +1 -0
  93. package/dist/mcp/ta-server/index.js +12 -0
  94. package/dist/mcp/ta-server/index.js.map +1 -0
  95. package/dist/mcp/vpn.d.ts +4 -0
  96. package/dist/mcp/vpn.d.ts.map +1 -0
  97. package/dist/mcp/vpn.js +107 -0
  98. package/dist/mcp/vpn.js.map +1 -0
  99. package/package.json +7 -1
@@ -0,0 +1,215 @@
1
+ function e(id, category, inputProfile, outputKind, description, defaultParams = {}, aliases, fnKey) {
2
+ return {
3
+ id,
4
+ category,
5
+ inputProfile,
6
+ defaultParams,
7
+ outputKind,
8
+ description,
9
+ aliases,
10
+ fnKey: fnKey ?? id,
11
+ };
12
+ }
13
+ const CANDLESTICK = 'candlestick';
14
+ const candle = (id, description) => e(id, CANDLESTICK, 'candle_objects', 'booleans', description);
15
+ export const INDICATOR_CATALOG = [
16
+ e('sma', 'moving_averages', 'close_series', 'numbers', 'Simple moving average', {
17
+ period: 20,
18
+ }),
19
+ e('ema', 'moving_averages', 'close_series', 'numbers', 'Exponential moving average', {
20
+ period: 20,
21
+ }),
22
+ e('wma', 'moving_averages', 'close_series', 'numbers', 'Weighted moving average', {
23
+ period: 20,
24
+ }),
25
+ e('wema', 'moving_averages', 'close_series', 'numbers', "Wilder's smoothed moving average", {
26
+ period: 20,
27
+ }),
28
+ e('macd', 'moving_averages', 'close_series', 'objects', 'MACD line, signal, and histogram', {
29
+ fastPeriod: 12,
30
+ slowPeriod: 26,
31
+ signalPeriod: 9,
32
+ }),
33
+ e('rsi', 'oscillators', 'close_series', 'numbers', 'Relative strength index', { period: 14 }),
34
+ e('cci', 'oscillators', 'ohlc_series', 'numbers', 'Commodity channel index', { period: 20 }),
35
+ e('awesomeoscillator', 'oscillators', 'ohl_series', 'numbers', 'Awesome oscillator from high/low midpoints', { fastPeriod: 5, slowPeriod: 34 }),
36
+ e('roc', 'momentum', 'close_series', 'numbers', 'Rate of change', { period: 12 }),
37
+ e('stochastic', 'momentum', 'ohlc_series', 'objects', 'Stochastic oscillator %K and %D', { period: 14, signalPeriod: 3 }),
38
+ e('williamsr', 'momentum', 'ohlc_series', 'numbers', 'Williams %R', { period: 14 }),
39
+ e('trix', 'momentum', 'close_series', 'numbers', 'TRIX momentum oscillator', { period: 18 }),
40
+ e('stochasticrsi', 'momentum', 'close_series', 'objects', 'Stochastic RSI', { rsiPeriod: 14, stochasticPeriod: 14, kPeriod: 3, dPeriod: 3 }),
41
+ e('psar', 'momentum', 'ohlc_series', 'objects', 'Parabolic SAR', {
42
+ step: 0.02,
43
+ max: 0.2,
44
+ }),
45
+ e('kst', 'momentum', 'close_series', 'objects', 'Know Sure Thing oscillator'),
46
+ e('ultimateoscillator', 'momentum', 'ohlc_series', 'numbers', 'Ultimate oscillator', { shortPeriod: 7, mediumPeriod: 14, longPeriod: 28 }),
47
+ e('dpo', 'momentum', 'close_series', 'numbers', 'Detrended price oscillator', {
48
+ period: 20,
49
+ }),
50
+ e('priceoscillator', 'momentum', 'close_series', 'numbers', 'Price oscillator', { fastPeriod: 12, slowPeriod: 26 }),
51
+ e('ppo', 'momentum', 'close_series', 'numbers', 'Percentage price oscillator', {
52
+ fastPeriod: 12,
53
+ slowPeriod: 26,
54
+ }),
55
+ e('obv', 'volume', 'close_volume_series', 'numbers', 'On-balance volume'),
56
+ e('adl', 'volume', 'hlcv_series', 'numbers', 'Accumulation/distribution line'),
57
+ e('vwap', 'volume', 'hlcv_series', 'numbers', 'Volume weighted average price'),
58
+ e('forceindex', 'volume', 'close_volume_series', 'numbers', 'Force index', { period: 13 }),
59
+ e('mfi', 'volume', 'hlcv_series', 'numbers', 'Money flow index', { period: 14 }),
60
+ e('volumeprofile', 'volume', 'ohlcv_series', 'objects', 'Volume profile by price range', { noOfBars: 12 }),
61
+ e('bollingerbands', 'volatility', 'close_series', 'objects', 'Bollinger bands', {
62
+ period: 20,
63
+ stdDev: 2,
64
+ }),
65
+ e('atr', 'volatility', 'ohlc_series', 'numbers', 'Average true range', { period: 14 }),
66
+ e('keltnerchannel', 'volatility', 'ohlc_series', 'objects', 'Keltner channels', { period: 20, multiplier: 2 }, ['keltnerchannels']),
67
+ e('chandelierexit', 'volatility', 'ohlc_series', 'objects', 'Chandelier exit stop levels', { period: 22, multiplier: 3 }),
68
+ e('donchianchannels', 'volatility', 'ohlc_series', 'objects', 'Donchian channels', { period: 20 }),
69
+ e('volatilityindex', 'volatility', 'ohlc_series', 'numbers', 'Volatility index', { period: 14 }),
70
+ e('truerange', 'directional', 'ohlc_series', 'numbers', 'True range'),
71
+ e('adx', 'directional', 'ohlc_series', 'numbers', 'Average directional index', { period: 14 }),
72
+ e('plusdm', 'directional', 'ohlc_series', 'numbers', 'Plus directional movement', {
73
+ period: 14,
74
+ }),
75
+ e('minusdm', 'directional', 'ohlc_series', 'numbers', 'Minus directional movement', {
76
+ period: 14,
77
+ }),
78
+ e('ichimokukinkouhyou', 'trend', 'ohlc_series', 'objects', 'Ichimoku cloud', { conversionPeriod: 9, basePeriod: 26, spanPeriod: 52, displacement: 26 }, ['ichimokucloud']),
79
+ e('supertrend', 'trend', 'ohlc_series', 'objects', 'SuperTrend indicator', {
80
+ period: 10,
81
+ multiplier: 3,
82
+ }),
83
+ e('aroon', 'trend', 'ohlc_series', 'objects', 'Aroon up/down', { period: 14 }),
84
+ e('aroonoscillator', 'trend', 'ohlc_series', 'numbers', 'Aroon oscillator', {
85
+ period: 14,
86
+ }),
87
+ e('linearregression', 'trend', 'close_series', 'objects', 'Linear regression trend line', {
88
+ period: 14,
89
+ }),
90
+ e('maenvelope', 'trend', 'close_series', 'objects', 'Moving average envelope', {
91
+ period: 20,
92
+ }),
93
+ e('pivotpoints', 'trend', 'ohlc_series', 'objects', 'Classic pivot points'),
94
+ candle('doji', 'Doji candlestick pattern'),
95
+ candle('bullishengulfingpattern', 'Bullish engulfing pattern'),
96
+ candle('bearishengulfingpattern', 'Bearish engulfing pattern'),
97
+ candle('hammer', 'Hammer pattern'),
98
+ candle('hangingman', 'Hanging man pattern'),
99
+ candle('shootingstar', 'Shooting star pattern'),
100
+ candle('spinningtop', 'Spinning top pattern'),
101
+ candle('marubozu', 'Marubozu pattern'),
102
+ candle('dragonflydoji', 'Dragonfly doji pattern'),
103
+ candle('gravestonedoji', 'Gravestone doji pattern'),
104
+ candle('threewhitesoldiers', 'Three white soldiers pattern'),
105
+ candle('threeblackcrows', 'Three black crows pattern'),
106
+ candle('bullishharami', 'Bullish harami pattern'),
107
+ candle('bearishharami', 'Bearish harami pattern'),
108
+ candle('piercingline', 'Piercing line pattern'),
109
+ candle('darkcloudcover', 'Dark cloud cover pattern'),
110
+ candle('morningstar', 'Morning star pattern'),
111
+ candle('eveningstar', 'Evening star pattern'),
112
+ candle('tweezerbottom', 'Tweezer bottom pattern'),
113
+ candle('tweezertop', 'Tweezer top pattern'),
114
+ candle('abandonedbaby', 'Abandoned baby pattern'),
115
+ candle('bullishmarubozu', 'Bullish marubozu pattern'),
116
+ candle('bearishmarubozu', 'Bearish marubozu pattern'),
117
+ candle('bullishinvertedhammer', 'Bullish inverted hammer pattern'),
118
+ candle('bearishinvertedhammer', 'Bearish inverted hammer pattern'),
119
+ candle('morningdojistar', 'Morning doji star pattern'),
120
+ candle('eveningdojistar', 'Evening doji star pattern'),
121
+ candle('downsidetasukigap', 'Downside tasuki gap pattern'),
122
+ candle('bullishspinningtop', 'Bullish spinning top pattern'),
123
+ candle('bearishspinningtop', 'Bearish spinning top pattern'),
124
+ candle('bullish', 'Generic bullish pattern'),
125
+ candle('bearish', 'Generic bearish pattern'),
126
+ candle('bullishharamicross', 'Bullish harami cross pattern'),
127
+ candle('bearishharamicross', 'Bearish harami cross pattern'),
128
+ candle('hammerpatternunconfirmed', 'Unconfirmed hammer pattern'),
129
+ candle('hangingmanunconfirmed', 'Unconfirmed hanging man pattern'),
130
+ candle('shootingstarunconfirmed', 'Unconfirmed shooting star pattern'),
131
+ candle('bullishhammerstick', 'Bullish hammer stick pattern'),
132
+ candle('bearishhammerstick', 'Bearish hammer stick pattern'),
133
+ e('heikinashi', 'chart', 'candle_objects', 'objects', 'Heikin-Ashi transformed candles'),
134
+ e('renko', 'chart', 'special', 'objects', 'Renko bricks from candles', { brickSize: 1 }),
135
+ e('typicalprice', 'chart', 'ohlc_series', 'numbers', 'Typical price (HLC/3)'),
136
+ e('fibonacci', 'drawing', 'range_scalar', 'levels', 'Fibonacci retracement levels', {}, ['fibonacciretracement']),
137
+ e('fibonacciExtensions', 'drawing', 'range_scalar', 'levels', 'Fibonacci extension levels'),
138
+ e('fibonacciProjection', 'drawing', 'special', 'levels', 'Fibonacci projection from swing points'),
139
+ e('highest', 'utility', 'close_series', 'numbers', 'Highest value over period', {
140
+ period: 14,
141
+ }),
142
+ e('lowest', 'utility', 'close_series', 'numbers', 'Lowest value over period', {
143
+ period: 14,
144
+ }),
145
+ e('sum', 'utility', 'close_series', 'numbers', 'Rolling sum', { period: 14 }),
146
+ e('sd', 'utility', 'close_series', 'numbers', 'Rolling standard deviation', {
147
+ period: 14,
148
+ }),
149
+ e('averagegain', 'utility', 'close_series', 'numbers', 'Average gain over period', {
150
+ period: 14,
151
+ }),
152
+ e('averageloss', 'utility', 'close_series', 'numbers', 'Average loss over period', {
153
+ period: 14,
154
+ }),
155
+ e('crossup', 'utility', 'dual_series', 'booleans', 'Cross up detector'),
156
+ e('crossdown', 'utility', 'dual_series', 'booleans', 'Cross down detector'),
157
+ ];
158
+ const catalogById = new Map();
159
+ const aliasToId = new Map();
160
+ for (const meta of INDICATOR_CATALOG) {
161
+ catalogById.set(meta.id, meta);
162
+ for (const alias of meta.aliases ?? []) {
163
+ aliasToId.set(alias.toLowerCase(), meta.id);
164
+ }
165
+ }
166
+ export function resolveIndicatorId(name) {
167
+ const lower = name.toLowerCase();
168
+ if (catalogById.has(lower)) {
169
+ return lower;
170
+ }
171
+ const alias = aliasToId.get(lower);
172
+ if (alias) {
173
+ return alias;
174
+ }
175
+ return undefined;
176
+ }
177
+ export function getIndicatorMeta(id) {
178
+ return catalogById.get(id);
179
+ }
180
+ export function listIndicatorCatalog() {
181
+ return INDICATOR_CATALOG;
182
+ }
183
+ export function suggestIndicator(name) {
184
+ const resolved = resolveIndicatorId(name);
185
+ if (resolved) {
186
+ return resolved;
187
+ }
188
+ const lower = name.toLowerCase();
189
+ const candidates = INDICATOR_CATALOG.flatMap(meta => [
190
+ meta.id,
191
+ ...(meta.aliases ?? []),
192
+ ]);
193
+ const prefix = candidates.filter(id => id.toLowerCase().startsWith(lower));
194
+ if (prefix.length >= 1) {
195
+ const best = [...prefix].sort((a, b) => a.length - b.length || a.localeCompare(b))[0];
196
+ return resolveIndicatorId(best) ?? best;
197
+ }
198
+ const contains = candidates.filter(id => id.toLowerCase().includes(lower));
199
+ if (contains.length === 1) {
200
+ return resolveIndicatorId(contains[0]) ?? contains[0];
201
+ }
202
+ return undefined;
203
+ }
204
+ export function catalogEntryForList(meta) {
205
+ return {
206
+ id: meta.id,
207
+ aliases: meta.aliases,
208
+ category: meta.category,
209
+ inputProfile: meta.inputProfile,
210
+ defaultParams: meta.defaultParams,
211
+ outputKind: meta.outputKind,
212
+ description: meta.description,
213
+ };
214
+ }
215
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/ta/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { listTechnicalIndicators, calculateTechnicalIndicator, } from './calculate.js';
2
+ export { listIndicatorCatalog, resolveIndicatorId, suggestIndicator, catalogEntryForList, type IndicatorMeta, } from './catalog.js';
3
+ export { maxSeriesLength } from './normalize-input.js';
4
+ export { CalculateTechnicalIndicatorInputSchema, ListTechnicalIndicatorsOutputSchema, CalculateTechnicalIndicatorOutputSchema, TaSeriesInputSchema, type CalculateTechnicalIndicatorInput, type InputProfile, type OutputKind, } from './schemas.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/ta/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,aAAa,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,sCAAsC,EACtC,mCAAmC,EACnC,uCAAuC,EACvC,mBAAmB,EACnB,KAAK,gCAAgC,EACrC,KAAK,YAAY,EACjB,KAAK,UAAU,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { listTechnicalIndicators, calculateTechnicalIndicator, } from './calculate.js';
2
+ export { listIndicatorCatalog, resolveIndicatorId, suggestIndicator, catalogEntryForList, } from './catalog.js';
3
+ export { maxSeriesLength } from './normalize-input.js';
4
+ export { CalculateTechnicalIndicatorInputSchema, ListTechnicalIndicatorsOutputSchema, CalculateTechnicalIndicatorOutputSchema, TaSeriesInputSchema, } from './schemas.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/ta/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,sCAAsC,EACtC,mCAAmC,EACnC,uCAAuC,EACvC,mBAAmB,GAInB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { InputProfile } from './schemas.js';
2
+ import type { TaSeriesInput } from './schemas.js';
3
+ export interface NormalizedSeries {
4
+ values?: number[];
5
+ open?: number[];
6
+ high?: number[];
7
+ low?: number[];
8
+ close?: number[];
9
+ volume?: number[];
10
+ candles?: Array<{
11
+ open: number;
12
+ high: number;
13
+ low: number;
14
+ close: number;
15
+ volume?: number;
16
+ }>;
17
+ range?: {
18
+ high: number;
19
+ low: number;
20
+ trend?: 'up' | 'down';
21
+ };
22
+ lineA?: number[];
23
+ lineB?: number[];
24
+ prices?: number[];
25
+ swingPoints?: number[];
26
+ inputLength: number;
27
+ }
28
+ export declare function maxSeriesLength(): number;
29
+ export declare function normalizeInput(indicatorId: string, profile: InputProfile, input: TaSeriesInput): NormalizedSeries;
30
+ //# sourceMappingURL=normalize-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-input.d.ts","sourceRoot":"","sources":["../../../src/core/ta/normalize-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,IAAI,MAAM,CAOxC;AAuDD,wBAAgB,cAAc,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,aAAa,GAClB,gBAAgB,CAoHlB"}
@@ -0,0 +1,193 @@
1
+ export function maxSeriesLength() {
2
+ const raw = process.env.TA_MCP_MAX_SERIES_LENGTH;
3
+ if (raw === undefined || raw === '') {
4
+ return 50_000;
5
+ }
6
+ const parsed = Number.parseInt(raw, 10);
7
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 50_000;
8
+ }
9
+ function assertMaxLength(label, length, max) {
10
+ if (length > max) {
11
+ throw new Error(`${label} length ${length} exceeds TA_MCP_MAX_SERIES_LENGTH (${max})`);
12
+ }
13
+ }
14
+ function assertEqualLengths(fields) {
15
+ if (fields.length === 0) {
16
+ return;
17
+ }
18
+ const expected = fields[0].values.length;
19
+ const parts = fields.map(f => `${f.name}=${f.values.length}`).join(', ');
20
+ for (const field of fields) {
21
+ if (field.values.length !== expected) {
22
+ throw new Error(`Array length mismatch (expected equal lengths, got ${parts})`);
23
+ }
24
+ }
25
+ }
26
+ function deriveFromCandles(candles) {
27
+ return {
28
+ open: candles.map(c => c.open),
29
+ high: candles.map(c => c.high),
30
+ low: candles.map(c => c.low),
31
+ close: candles.map(c => c.close),
32
+ volume: candles.every(c => c.volume !== undefined)
33
+ ? candles.map(c => c.volume)
34
+ : undefined,
35
+ candles,
36
+ inputLength: candles.length,
37
+ };
38
+ }
39
+ function requireField(value, profile, field, indicatorId) {
40
+ if (value === undefined) {
41
+ throw new Error(`${indicatorId} requires inputProfile "${profile}" — provide ${field}. Call list_technical_indicators for requirements.`);
42
+ }
43
+ return value;
44
+ }
45
+ export function normalizeInput(indicatorId, profile, input) {
46
+ const max = maxSeriesLength();
47
+ if (input.candles && input.candles.length > 0) {
48
+ const derived = deriveFromCandles(input.candles);
49
+ assertMaxLength('candles', derived.inputLength, max);
50
+ return mergeWithExplicit(input, derived, profile, indicatorId, max);
51
+ }
52
+ switch (profile) {
53
+ case 'close_series': {
54
+ const values = requireField(input.values ?? input.close, profile, 'values or close (or candles)', indicatorId);
55
+ assertMaxLength('values', values.length, max);
56
+ return { values, inputLength: values.length };
57
+ }
58
+ case 'ohl_series': {
59
+ const high = requireField(input.high, profile, 'high', indicatorId);
60
+ const low = requireField(input.low, profile, 'low', indicatorId);
61
+ assertEqualLengths([
62
+ { name: 'high', values: high },
63
+ { name: 'low', values: low },
64
+ ]);
65
+ assertMaxLength('high', high.length, max);
66
+ return { high, low, inputLength: high.length };
67
+ }
68
+ case 'ohlc_series': {
69
+ const high = requireField(input.high, profile, 'high', indicatorId);
70
+ const low = requireField(input.low, profile, 'low', indicatorId);
71
+ const close = requireField(input.close, profile, 'close', indicatorId);
72
+ assertEqualLengths([
73
+ { name: 'high', values: high },
74
+ { name: 'low', values: low },
75
+ { name: 'close', values: close },
76
+ ]);
77
+ assertMaxLength('high', high.length, max);
78
+ return { high, low, close, inputLength: high.length };
79
+ }
80
+ case 'hlcv_series': {
81
+ const high = requireField(input.high, profile, 'high', indicatorId);
82
+ const low = requireField(input.low, profile, 'low', indicatorId);
83
+ const close = requireField(input.close, profile, 'close', indicatorId);
84
+ const volume = requireField(input.volume, profile, 'volume', indicatorId);
85
+ assertEqualLengths([
86
+ { name: 'high', values: high },
87
+ { name: 'low', values: low },
88
+ { name: 'close', values: close },
89
+ { name: 'volume', values: volume },
90
+ ]);
91
+ assertMaxLength('high', high.length, max);
92
+ return { high, low, close, volume, inputLength: high.length };
93
+ }
94
+ case 'close_volume_series': {
95
+ const close = requireField(input.close ?? input.values, profile, 'close or values', indicatorId);
96
+ const volume = requireField(input.volume, profile, 'volume', indicatorId);
97
+ assertEqualLengths([
98
+ { name: 'close', values: close },
99
+ { name: 'volume', values: volume },
100
+ ]);
101
+ assertMaxLength('close', close.length, max);
102
+ return { close, volume, inputLength: close.length };
103
+ }
104
+ case 'ohlcv_series': {
105
+ const open = requireField(input.open, profile, 'open', indicatorId);
106
+ const high = requireField(input.high, profile, 'high', indicatorId);
107
+ const low = requireField(input.low, profile, 'low', indicatorId);
108
+ const close = requireField(input.close, profile, 'close', indicatorId);
109
+ const volume = requireField(input.volume, profile, 'volume', indicatorId);
110
+ assertEqualLengths([
111
+ { name: 'open', values: open },
112
+ { name: 'high', values: high },
113
+ { name: 'low', values: low },
114
+ { name: 'close', values: close },
115
+ { name: 'volume', values: volume },
116
+ ]);
117
+ assertMaxLength('open', open.length, max);
118
+ return { open, high, low, close, volume, inputLength: open.length };
119
+ }
120
+ case 'candle_objects': {
121
+ throw new Error(`${indicatorId} requires inputProfile "candle_objects" — provide candles[]. Call list_technical_indicators for requirements.`);
122
+ }
123
+ case 'range_scalar': {
124
+ const range = requireField(input.range, profile, 'range { high, low }', indicatorId);
125
+ return { range, inputLength: 1 };
126
+ }
127
+ case 'dual_series': {
128
+ const lineA = requireField(input.valuesA, profile, 'valuesA', indicatorId);
129
+ const lineB = requireField(input.valuesB, profile, 'valuesB', indicatorId);
130
+ assertEqualLengths([
131
+ { name: 'valuesA', values: lineA },
132
+ { name: 'valuesB', values: lineB },
133
+ ]);
134
+ assertMaxLength('valuesA', lineA.length, max);
135
+ return { lineA, lineB, inputLength: lineA.length };
136
+ }
137
+ case 'special':
138
+ return normalizeSpecial(indicatorId, input, max);
139
+ default:
140
+ throw new Error(`Unsupported input profile: ${profile}`);
141
+ }
142
+ }
143
+ function mergeWithExplicit(input, derived, profile, indicatorId, max) {
144
+ const merged = {
145
+ ...input,
146
+ open: input.open ?? derived.open,
147
+ high: input.high ?? derived.high,
148
+ low: input.low ?? derived.low,
149
+ close: input.close ?? derived.close,
150
+ volume: input.volume ?? derived.volume,
151
+ values: input.values ?? input.close ?? derived.close,
152
+ candles: derived.candles,
153
+ };
154
+ const withoutCandles = { ...merged, candles: undefined };
155
+ switch (profile) {
156
+ case 'candle_objects':
157
+ return {
158
+ candles: derived.candles,
159
+ inputLength: derived.inputLength,
160
+ };
161
+ case 'close_series':
162
+ case 'ohl_series':
163
+ case 'ohlc_series':
164
+ case 'hlcv_series':
165
+ case 'close_volume_series':
166
+ case 'ohlcv_series':
167
+ case 'range_scalar':
168
+ case 'dual_series':
169
+ return normalizeInput(indicatorId, profile, withoutCandles);
170
+ case 'special':
171
+ return normalizeSpecial(indicatorId, merged, max);
172
+ default:
173
+ return normalizeInput(indicatorId, profile, withoutCandles);
174
+ }
175
+ }
176
+ function normalizeSpecial(indicatorId, input, max) {
177
+ if (indicatorId === 'renko') {
178
+ const candles = input.candles;
179
+ if (!candles || candles.length === 0) {
180
+ throw new Error('renko requires candles[] (or derive from explicit OHLC arrays via candles)');
181
+ }
182
+ assertMaxLength('candles', candles.length, max);
183
+ return { candles, inputLength: candles.length };
184
+ }
185
+ if (indicatorId === 'fibonacciProjection') {
186
+ const prices = requireField(input.values ?? input.close, 'special', 'values or close as prices', indicatorId);
187
+ const swingPoints = requireField(input.swingPoints, 'special', 'swingPoints', indicatorId);
188
+ assertMaxLength('values', prices.length, max);
189
+ return { prices, swingPoints, inputLength: prices.length };
190
+ }
191
+ throw new Error(`Special input handling is not defined for ${indicatorId}`);
192
+ }
193
+ //# sourceMappingURL=normalize-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-input.js","sourceRoot":"","sources":["../../../src/core/ta/normalize-input.ts"],"names":[],"mappings":"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"}