@continuumdao/continuum-node-sdk 1.3.23 → 1.3.25

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 (73) hide show
  1. package/dist/core/chart/apply-chart-drawings.d.ts +37 -0
  2. package/dist/core/chart/apply-chart-drawings.d.ts.map +1 -0
  3. package/dist/core/chart/apply-chart-drawings.js +95 -0
  4. package/dist/core/chart/apply-chart-drawings.js.map +1 -0
  5. package/dist/core/chart/customization-catalog.d.ts +29 -0
  6. package/dist/core/chart/customization-catalog.d.ts.map +1 -0
  7. package/dist/core/chart/customization-catalog.js +68 -0
  8. package/dist/core/chart/customization-catalog.js.map +1 -0
  9. package/dist/core/chart/day-range.d.ts +14 -0
  10. package/dist/core/chart/day-range.d.ts.map +1 -0
  11. package/dist/core/chart/day-range.js +72 -0
  12. package/dist/core/chart/day-range.js.map +1 -0
  13. package/dist/core/chart/index.d.ts +1 -1
  14. package/dist/core/chart/index.d.ts.map +1 -1
  15. package/dist/core/chart/index.js +1 -1
  16. package/dist/core/chart/index.js.map +1 -1
  17. package/dist/core/chart/levels/calculate-tools.d.ts +82 -0
  18. package/dist/core/chart/levels/calculate-tools.d.ts.map +1 -0
  19. package/dist/core/chart/levels/calculate-tools.js +136 -0
  20. package/dist/core/chart/levels/calculate-tools.js.map +1 -0
  21. package/dist/core/chart/levels/key-levels.d.ts +26 -0
  22. package/dist/core/chart/levels/key-levels.d.ts.map +1 -0
  23. package/dist/core/chart/levels/key-levels.js +133 -0
  24. package/dist/core/chart/levels/key-levels.js.map +1 -0
  25. package/dist/core/chart/levels/pivot-points.d.ts +16 -0
  26. package/dist/core/chart/levels/pivot-points.d.ts.map +1 -0
  27. package/dist/core/chart/levels/pivot-points.js +47 -0
  28. package/dist/core/chart/levels/pivot-points.js.map +1 -0
  29. package/dist/core/chart/levels/trend-lines.d.ts +21 -0
  30. package/dist/core/chart/levels/trend-lines.d.ts.map +1 -0
  31. package/dist/core/chart/levels/trend-lines.js +126 -0
  32. package/dist/core/chart/levels/trend-lines.js.map +1 -0
  33. package/dist/core/chart/live/bar-merge.d.ts +8 -0
  34. package/dist/core/chart/live/bar-merge.d.ts.map +1 -0
  35. package/dist/core/chart/live/bar-merge.js +52 -0
  36. package/dist/core/chart/live/bar-merge.js.map +1 -0
  37. package/dist/core/chart/live/index.d.ts +1 -0
  38. package/dist/core/chart/live/index.d.ts.map +1 -1
  39. package/dist/core/chart/live/index.js +1 -0
  40. package/dist/core/chart/live/index.js.map +1 -1
  41. package/dist/core/chart/live/merge-tick.d.ts +2 -1
  42. package/dist/core/chart/live/merge-tick.d.ts.map +1 -1
  43. package/dist/core/chart/live/merge-tick.js +10 -5
  44. package/dist/core/chart/live/merge-tick.js.map +1 -1
  45. package/dist/core/chart/live/refresh.d.ts +4 -2
  46. package/dist/core/chart/live/refresh.d.ts.map +1 -1
  47. package/dist/core/chart/live/refresh.js +6 -3
  48. package/dist/core/chart/live/refresh.js.map +1 -1
  49. package/dist/core/chart/overlay-schemas.d.ts +399 -0
  50. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  51. package/dist/core/chart/overlay-schemas.js +79 -1
  52. package/dist/core/chart/overlay-schemas.js.map +1 -1
  53. package/dist/core/chart/overlays.d.ts.map +1 -1
  54. package/dist/core/chart/overlays.js +171 -4
  55. package/dist/core/chart/overlays.js.map +1 -1
  56. package/dist/core/chart/prepare-from-rows.d.ts +218 -0
  57. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  58. package/dist/core/chart/prepare-replay.d.ts +6 -0
  59. package/dist/core/chart/prepare-replay.d.ts.map +1 -0
  60. package/dist/core/chart/prepare-replay.js +60 -0
  61. package/dist/core/chart/prepare-replay.js.map +1 -0
  62. package/dist/core/chart/prepare.d.ts.map +1 -1
  63. package/dist/core/chart/prepare.js +16 -5
  64. package/dist/core/chart/prepare.js.map +1 -1
  65. package/dist/core/chart/schemas.d.ts +652 -1
  66. package/dist/core/chart/schemas.d.ts.map +1 -1
  67. package/dist/core/chart/schemas.js +11 -2
  68. package/dist/core/chart/schemas.js.map +1 -1
  69. package/dist/mcp/chart.d.ts.map +1 -1
  70. package/dist/mcp/chart.js +80 -1
  71. package/dist/mcp/chart.js.map +1 -1
  72. package/dist/mcp/resources/chart.md +19 -0
  73. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ import type { SdkResult } from '../result.js';
2
+ import type { ChartOverlayInput } from './overlay-schemas.js';
3
+ import type { ChartPrepareReplay, PrepareChartOutput } from './schemas.js';
4
+ export type ApplyChartDrawingsInput = {
5
+ title?: string;
6
+ toolResult?: unknown;
7
+ rows?: unknown[];
8
+ prepareReplay?: ChartPrepareReplay;
9
+ horizontalLevels?: Array<{
10
+ price: number;
11
+ label?: string;
12
+ kind?: 'support' | 'resistance' | 'level';
13
+ }>;
14
+ pivotLevels?: Array<{
15
+ id: string;
16
+ price: number;
17
+ }>;
18
+ fibonacci?: Extract<ChartOverlayInput, {
19
+ type: 'fibonacci';
20
+ }>;
21
+ trendLines?: Array<{
22
+ kind: 'support' | 'resistance';
23
+ pointA: {
24
+ time: number;
25
+ price: number;
26
+ };
27
+ pointB: {
28
+ time: number;
29
+ price: number;
30
+ };
31
+ label?: string;
32
+ }>;
33
+ removeDrawings?: boolean;
34
+ };
35
+ /** Re-prepare chart with drawing overlays merged into prepareReplay. */
36
+ export declare function applyChartDrawings(input: ApplyChartDrawingsInput): SdkResult<PrepareChartOutput>;
37
+ //# sourceMappingURL=apply-chart-drawings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-chart-drawings.d.ts","sourceRoot":"","sources":["../../../src/core/chart/apply-chart-drawings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,uBAAuB,GAAG;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,OAAO,CAAA;KAAC,CAAC,CAAC;IACrG,WAAW,CAAC,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAC,IAAI,EAAE,WAAW,CAAA;KAAC,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;QAC/B,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,CAAC;QACtC,MAAM,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,CAAC;QACtC,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAsDF,wEAAwE;AACxE,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,uBAAuB,GAC5B,SAAS,CAAC,kBAAkB,CAAC,CAqD/B"}
@@ -0,0 +1,95 @@
1
+ import { extractOhlcvBarsFromUnknown } from './fetch-result.js';
2
+ import { prepareChartFromRows } from './prepare-from-rows.js';
3
+ import { prepareChart } from './prepare.js';
4
+ function barsFromInput(input) {
5
+ if (input.rows?.length) {
6
+ return input.rows;
7
+ }
8
+ if (input.toolResult != null) {
9
+ return (extractOhlcvBarsFromUnknown(input.toolResult) ?? []);
10
+ }
11
+ return [];
12
+ }
13
+ function drawingOverlaysFromInput(input) {
14
+ if (input.removeDrawings) {
15
+ return [];
16
+ }
17
+ const out = [];
18
+ if (input.horizontalLevels?.length) {
19
+ out.push({ type: 'horizontal_levels', levels: input.horizontalLevels });
20
+ }
21
+ if (input.pivotLevels?.length) {
22
+ out.push({ type: 'pivot_levels', levels: input.pivotLevels });
23
+ }
24
+ if (input.fibonacci) {
25
+ out.push(input.fibonacci);
26
+ }
27
+ if (input.trendLines?.length) {
28
+ out.push({
29
+ type: 'trend_lines',
30
+ lines: input.trendLines.map(line => ({
31
+ kind: line.kind,
32
+ pointA: line.pointA,
33
+ pointB: line.pointB,
34
+ ...(line.label ? { label: line.label } : {}),
35
+ })),
36
+ });
37
+ }
38
+ return out;
39
+ }
40
+ function stripDrawingOverlays(replay) {
41
+ if (!replay.overlays?.length) {
42
+ return replay;
43
+ }
44
+ const kept = replay.overlays.filter(o => o.type !== 'horizontal_levels' &&
45
+ o.type !== 'pivot_levels' &&
46
+ o.type !== 'fibonacci' &&
47
+ o.type !== 'trend_lines');
48
+ return { ...replay, overlays: kept };
49
+ }
50
+ /** Re-prepare chart with drawing overlays merged into prepareReplay. */
51
+ export function applyChartDrawings(input) {
52
+ const bars = barsFromInput(input);
53
+ if (!bars.length) {
54
+ return {
55
+ ok: false,
56
+ reason: 'Provide `rows` or `toolResult` with OHLCV bars to apply chart drawings.',
57
+ };
58
+ }
59
+ const title = input.title?.trim() || 'Chart';
60
+ const newDrawings = drawingOverlaysFromInput(input);
61
+ let baseReplay = input.prepareReplay ?? {};
62
+ if (input.removeDrawings) {
63
+ baseReplay = stripDrawingOverlays(baseReplay);
64
+ }
65
+ const indicatorOverlays = baseReplay.overlays?.filter(o => o.type !== 'horizontal_levels' &&
66
+ o.type !== 'pivot_levels' &&
67
+ o.type !== 'fibonacci' &&
68
+ o.type !== 'trend_lines') ?? [];
69
+ const mergedOverlays = [...indicatorOverlays, ...newDrawings];
70
+ if (input.toolResult != null) {
71
+ const fromRows = prepareChartFromRows({
72
+ title,
73
+ toolResult: input.toolResult,
74
+ });
75
+ if (!fromRows.ok) {
76
+ return fromRows;
77
+ }
78
+ if (!mergedOverlays.length && !baseReplay.skipDefaultOverlays) {
79
+ return fromRows;
80
+ }
81
+ return prepareChart({
82
+ title,
83
+ bars,
84
+ overlays: mergedOverlays.length ? mergedOverlays : [],
85
+ ...(baseReplay.skipDefaultOverlays ? { options: { skipDefaultOverlays: true } } : {}),
86
+ });
87
+ }
88
+ return prepareChart({
89
+ title,
90
+ bars,
91
+ ...(mergedOverlays.length ? { overlays: mergedOverlays } : {}),
92
+ ...(baseReplay.skipDefaultOverlays ? { options: { skipDefaultOverlays: true } } : {}),
93
+ });
94
+ }
95
+ //# sourceMappingURL=apply-chart-drawings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-chart-drawings.js","sourceRoot":"","sources":["../../../src/core/chart/apply-chart-drawings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ChartOverlayInput } from './overlay-schemas.js';
2
+ export type ChartCustomizationCatalog = {
3
+ indicators: Array<{
4
+ type: string;
5
+ label: string;
6
+ pane: 'main' | 'oscillator';
7
+ params: Array<{
8
+ name: string;
9
+ default?: number | string;
10
+ }>;
11
+ }>;
12
+ drawings: Array<{
13
+ id: string;
14
+ label: string;
15
+ calculateTool: string;
16
+ applyField: string;
17
+ }>;
18
+ removeActions: string[];
19
+ currentDefaults: {
20
+ emaPeriod: number;
21
+ rsiPeriod: number;
22
+ };
23
+ exampleUserPhrases: string[];
24
+ };
25
+ export declare function listChartCustomizationOptions(): ChartCustomizationCatalog;
26
+ export type ChartDrawingInput = Extract<ChartOverlayInput, {
27
+ type: 'horizontal_levels' | 'pivot_levels' | 'fibonacci' | 'trend_lines';
28
+ }>;
29
+ //# sourceMappingURL=customization-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customization-catalog.d.ts","sourceRoot":"","sources":["../../../src/core/chart/customization-catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAE5D,MAAM,MAAM,yBAAyB,GAAG;IACvC,UAAU,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;QAC5B,MAAM,EAAE,KAAK,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;SAAC,CAAC,CAAC;KACzD,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC;IACxD,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAgB,6BAA6B,IAAI,yBAAyB,CAiEzE;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACtC,iBAAiB,EACjB;IAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,CAAA;CAAC,CAC1E,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { DEFAULT_CHART_EMA_PERIOD, DEFAULT_CHART_RSI_PERIOD, } from './chart-defaults.js';
2
+ export function listChartCustomizationOptions() {
3
+ return {
4
+ indicators: [
5
+ { type: 'sma', label: 'Simple moving average', pane: 'main', params: [{ name: 'period', default: 20 }] },
6
+ { type: 'ema', label: 'Exponential moving average', pane: 'main', params: [{ name: 'period', default: 20 }] },
7
+ {
8
+ type: 'bollinger',
9
+ label: 'Bollinger bands',
10
+ pane: 'main',
11
+ params: [
12
+ { name: 'period', default: 20 },
13
+ { name: 'stdDev', default: 2 },
14
+ ],
15
+ },
16
+ { type: 'fibonacci', label: 'Fibonacci retracements', pane: 'main', params: [{ name: 'range or sourceSeriesId' }] },
17
+ { type: 'rsi', label: 'RSI', pane: 'oscillator', params: [{ name: 'period', default: 14 }] },
18
+ { type: 'macd', label: 'MACD', pane: 'oscillator', params: [] },
19
+ { type: 'stochasticrsi', label: 'Stochastic RSI', pane: 'oscillator', params: [] },
20
+ ],
21
+ drawings: [
22
+ {
23
+ id: 'key_levels',
24
+ label: 'Key support/resistance (swing levels)',
25
+ calculateTool: 'calculate_key_levels',
26
+ applyField: 'horizontalLevels',
27
+ },
28
+ {
29
+ id: 'pivot_points',
30
+ label: 'Pivot points (PP, R1, S1, …)',
31
+ calculateTool: 'calculate_pivot_points',
32
+ applyField: 'pivotLevels',
33
+ },
34
+ {
35
+ id: 'fibonacci',
36
+ label: 'Fibonacci retracements (61.8% highlighted)',
37
+ calculateTool: 'calculate_fibonacci_range',
38
+ applyField: 'fibonacci',
39
+ },
40
+ {
41
+ id: 'trend_lines',
42
+ label: 'Trend lines (swing support/resistance diagonals)',
43
+ calculateTool: 'calculate_trend_lines',
44
+ applyField: 'trendLines',
45
+ },
46
+ ],
47
+ removeActions: [
48
+ 'Remove all indicators (candles + volume only)',
49
+ 'Remove drawing overlays (levels, pivots, Fibonacci lines)',
50
+ 'Replace indicator set (pass full overlays array to prepare_chart)',
51
+ ],
52
+ currentDefaults: {
53
+ emaPeriod: DEFAULT_CHART_EMA_PERIOD,
54
+ rsiPeriod: DEFAULT_CHART_RSI_PERIOD,
55
+ },
56
+ exampleUserPhrases: [
57
+ 'what can I do to this chart',
58
+ 'chart options',
59
+ 'what indicators can you add',
60
+ 'help with the chart',
61
+ 'show me support and resistance',
62
+ 'add pivot points',
63
+ 'draw fibonacci',
64
+ 'show trend lines',
65
+ ],
66
+ };
67
+ }
68
+ //# sourceMappingURL=customization-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customization-catalog.js","sourceRoot":"","sources":["../../../src/core/chart/customization-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,UAAU,6BAA6B;IAC5C,OAAO;QACN,UAAU,EAAE;YACX,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,EAAC;YACpG,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,EAAC;YACzG;gBACC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE;oBACP,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAC;oBAC7B,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAC;iBAC5B;aACD;YACD,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAC,IAAI,EAAE,yBAAyB,EAAC,CAAC,EAAC;YAC/G,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,EAAC;YACxF,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAC;YAC7D,EAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAC;SAChF;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,YAAY;gBAChB,KAAK,EAAE,uCAAuC;gBAC9C,aAAa,EAAE,sBAAsB;gBACrC,UAAU,EAAE,kBAAkB;aAC9B;YACD;gBACC,EAAE,EAAE,cAAc;gBAClB,KAAK,EAAE,8BAA8B;gBACrC,aAAa,EAAE,wBAAwB;gBACvC,UAAU,EAAE,aAAa;aACzB;YACD;gBACC,EAAE,EAAE,WAAW;gBACf,KAAK,EAAE,4CAA4C;gBACnD,aAAa,EAAE,2BAA2B;gBAC1C,UAAU,EAAE,WAAW;aACvB;YACD;gBACC,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,kDAAkD;gBACzD,aAAa,EAAE,uBAAuB;gBACtC,UAAU,EAAE,YAAY;aACxB;SACD;QACD,aAAa,EAAE;YACd,+CAA+C;YAC/C,2DAA2D;YAC3D,mEAAmE;SACnE;QACD,eAAe,EAAE;YAChB,SAAS,EAAE,wBAAwB;YACnC,SAAS,EAAE,wBAAwB;SACnC;QACD,kBAAkB,EAAE;YACnB,6BAA6B;YAC7B,eAAe;YACf,6BAA6B;YAC7B,qBAAqB;YACrB,gCAAgC;YAChC,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;SAClB;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type DayHighLow = {
2
+ dayHigh: number;
3
+ dayLow: number;
4
+ dayLabelUtc: string;
5
+ barCount: number;
6
+ };
7
+ /** UTC calendar-day high/low for the day containing the latest candlestick bar. */
8
+ export declare function computeDayHighLowFromBars(bars: Record<string, unknown>[]): DayHighLow | null;
9
+ /** From a prepared chart's primary candlestick series rows. */
10
+ export declare function computeDayHighLowFromCandlestickSeries(series: Array<{
11
+ type: string;
12
+ data: Record<string, unknown>[];
13
+ }>): DayHighLow | null;
14
+ //# sourceMappingURL=day-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"day-range.d.ts","sourceRoot":"","sources":["../../../src/core/chart/day-range.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAoBF,mFAAmF;AACnF,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,UAAU,GAAG,IAAI,CAgDnB;AAED,+DAA+D;AAC/D,wBAAgB,sCAAsC,CACrD,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAAC,CAAC,GAC5D,UAAU,GAAG,IAAI,CAMnB"}
@@ -0,0 +1,72 @@
1
+ import { coerceFiniteNumber, parseChartTimeFromRow } from './point-normalize.js';
2
+ function timeToUtcSec(time) {
3
+ if (typeof time === 'number') {
4
+ return time;
5
+ }
6
+ return Math.floor(Date.UTC(time.year, time.month - 1, time.day) / 1000);
7
+ }
8
+ function utcDayBoundsFromSec(sec) {
9
+ const d = new Date(sec * 1000);
10
+ const y = d.getUTCFullYear();
11
+ const m = d.getUTCMonth();
12
+ const day = d.getUTCDate();
13
+ const startSec = Math.floor(Date.UTC(y, m, day) / 1000);
14
+ const endSec = startSec + 86_400;
15
+ const label = `${y}-${String(m + 1).padStart(2, '0')}-${String(day).padStart(2, '0')} UTC`;
16
+ return { startSec, endSec, label };
17
+ }
18
+ /** UTC calendar-day high/low for the day containing the latest candlestick bar. */
19
+ export function computeDayHighLowFromBars(bars) {
20
+ if (!bars.length) {
21
+ return null;
22
+ }
23
+ let latestSec = null;
24
+ for (const bar of bars) {
25
+ const time = parseChartTimeFromRow(bar);
26
+ if (time == null) {
27
+ continue;
28
+ }
29
+ const sec = timeToUtcSec(time);
30
+ if (sec != null && (latestSec == null || sec > latestSec)) {
31
+ latestSec = sec;
32
+ }
33
+ }
34
+ if (latestSec == null) {
35
+ return null;
36
+ }
37
+ const { startSec, endSec, label } = utcDayBoundsFromSec(latestSec);
38
+ let dayHigh = Number.NEGATIVE_INFINITY;
39
+ let dayLow = Number.POSITIVE_INFINITY;
40
+ let barCount = 0;
41
+ for (const bar of bars) {
42
+ const time = parseChartTimeFromRow(bar);
43
+ if (time == null) {
44
+ continue;
45
+ }
46
+ const sec = timeToUtcSec(time);
47
+ if (sec == null || sec < startSec || sec >= endSec) {
48
+ continue;
49
+ }
50
+ const high = coerceFiniteNumber(bar.high);
51
+ const low = coerceFiniteNumber(bar.low);
52
+ if (high == null || low == null) {
53
+ continue;
54
+ }
55
+ dayHigh = Math.max(dayHigh, high);
56
+ dayLow = Math.min(dayLow, low);
57
+ barCount++;
58
+ }
59
+ if (barCount === 0 || !Number.isFinite(dayHigh) || !Number.isFinite(dayLow)) {
60
+ return null;
61
+ }
62
+ return { dayHigh, dayLow, dayLabelUtc: label, barCount };
63
+ }
64
+ /** From a prepared chart's primary candlestick series rows. */
65
+ export function computeDayHighLowFromCandlestickSeries(series) {
66
+ const candle = series.find(s => s.type === 'candlestick');
67
+ if (!candle?.data.length) {
68
+ return null;
69
+ }
70
+ return computeDayHighLowFromBars(candle.data);
71
+ }
72
+ //# sourceMappingURL=day-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"day-range.js","sourceRoot":"","sources":["../../../src/core/chart/day-range.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,6 @@ export { ohlcvToPrepareChartInput, normalizeOhlcvRow, type OhlcvRow, type OhlcvT
10
10
  export { ohlcvRowsToChartOutput } from './ohlcv-output.js';
11
11
  export { ohlcvTupleToRow } from './point-normalize.js';
12
12
  export { buildOhlcvBarsFromPriceVolumeSeries, type BuiltOhlcvBar, type BuildOhlcvBarsFromPriceVolumeOptions, } from './price-volume-bars.js';
13
- export { CHART_LIVE_DEFAULT_POLL_MS, CHART_LIVE_PROVIDER_COINGECKO_SIMPLE, CHART_LIVE_PROVIDER_GMX_MARK_PRICE, CHART_LIVE_PROVIDER_HYPERLIQUID_ALL_MIDS, ChartLiveBindingSchema, ChartLiveTickSchema, candlestickBarsFromChart, extractLiveBindingFromFetchPayload, intervalLabelToBucketSec, mergeLiveTickIntoBars, refreshChartFromLiveTick, type ChartLiveBinding, type ChartLiveTick, type ExtractLiveBindingOptions, type MergeLiveTickOptions, type RefreshChartFromLiveTickResult, } from './live/index.js';
13
+ export { CHART_LIVE_DEFAULT_POLL_MS, CHART_LIVE_PROVIDER_COINGECKO_SIMPLE, CHART_LIVE_PROVIDER_GMX_MARK_PRICE, CHART_LIVE_PROVIDER_HYPERLIQUID_ALL_MIDS, ChartLiveBindingSchema, ChartLiveTickSchema, barTimeSecFromRow, candlestickBarsFromChart, extractLiveBindingFromFetchPayload, intervalLabelToBucketSec, mergeBarsByTimestamp, mergeLiveTickIntoBars, refreshChartFromLiveTick, seriesHasTimestampGaps, type ChartLiveBinding, type ChartLiveTick, type ExtractLiveBindingOptions, type MergeLiveTickOptions, type RefreshChartFromLiveTickResult, } from './live/index.js';
14
14
  export { CHART_V1_KIND, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_MAX_POINTS, PrepareChartInputSchema, PrepareChartOutputSchema, ChartV1PayloadSchema, type PrepareChartInput, type PrepareChartOutput, type ChartV1Payload, type ChartSeriesType, type ChartTime, } from './schemas.js';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAC,oCAAoC,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,uBAAuB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,KAAK,kBAAkB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,+BAA+B,EAAC,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,EACnC,KAAK,aAAa,EAClB,KAAK,oCAAoC,GACzC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,0BAA0B,EAC1B,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,EACxC,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,kCAAkC,EAClC,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,GACnC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACd,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAC,oCAAoC,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,uBAAuB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,KAAK,kBAAkB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,+BAA+B,EAAC,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,EACnC,KAAK,aAAa,EAClB,KAAK,oCAAoC,GACzC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,0BAA0B,EAC1B,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,EACxC,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,kCAAkC,EAClC,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,GACnC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACd,MAAM,cAAc,CAAC"}
@@ -10,6 +10,6 @@ export { ohlcvToPrepareChartInput, normalizeOhlcvRow } from './ohlcv.js';
10
10
  export { ohlcvRowsToChartOutput } from './ohlcv-output.js';
11
11
  export { ohlcvTupleToRow } from './point-normalize.js';
12
12
  export { buildOhlcvBarsFromPriceVolumeSeries, } from './price-volume-bars.js';
13
- export { CHART_LIVE_DEFAULT_POLL_MS, CHART_LIVE_PROVIDER_COINGECKO_SIMPLE, CHART_LIVE_PROVIDER_GMX_MARK_PRICE, CHART_LIVE_PROVIDER_HYPERLIQUID_ALL_MIDS, ChartLiveBindingSchema, ChartLiveTickSchema, candlestickBarsFromChart, extractLiveBindingFromFetchPayload, intervalLabelToBucketSec, mergeLiveTickIntoBars, refreshChartFromLiveTick, } from './live/index.js';
13
+ export { CHART_LIVE_DEFAULT_POLL_MS, CHART_LIVE_PROVIDER_COINGECKO_SIMPLE, CHART_LIVE_PROVIDER_GMX_MARK_PRICE, CHART_LIVE_PROVIDER_HYPERLIQUID_ALL_MIDS, ChartLiveBindingSchema, ChartLiveTickSchema, barTimeSecFromRow, candlestickBarsFromChart, extractLiveBindingFromFetchPayload, intervalLabelToBucketSec, mergeBarsByTimestamp, mergeLiveTickIntoBars, refreshChartFromLiveTick, seriesHasTimestampGaps, } from './live/index.js';
14
14
  export { CHART_V1_KIND, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_MAX_POINTS, PrepareChartInputSchema, PrepareChartOutputSchema, ChartV1PayloadSchema, } from './schemas.js';
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAC,oCAAoC,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAsD,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,GAGnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,0BAA0B,EAC1B,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,EACxC,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,kCAAkC,EAClC,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,GAMxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GAMpB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAC,oCAAoC,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAsD,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,GAGnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,0BAA0B,EAC1B,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,EACxC,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,kCAAkC,EAClC,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GAMtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GAMpB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ import type { SdkResult } from '../../result.js';
3
+ export declare const CalculateKeyLevelsInputSchema: z.ZodObject<{
4
+ toolResult: z.ZodOptional<z.ZodUnknown>;
5
+ rows: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
6
+ lookback: z.ZodOptional<z.ZodNumber>;
7
+ tolerancePct: z.ZodOptional<z.ZodNumber>;
8
+ maxLevels: z.ZodOptional<z.ZodNumber>;
9
+ }, z.core.$strict>;
10
+ export declare const CalculateKeyLevelsOutputSchema: z.ZodObject<{
11
+ levels: z.ZodArray<z.ZodObject<{
12
+ price: z.ZodNumber;
13
+ kind: z.ZodEnum<{
14
+ support: "support";
15
+ resistance: "resistance";
16
+ }>;
17
+ strength: z.ZodNumber;
18
+ touchCount: z.ZodNumber;
19
+ }, z.core.$strict>>;
20
+ }, z.core.$strict>;
21
+ export declare function calculateKeyLevels(input: unknown): SdkResult<z.infer<typeof CalculateKeyLevelsOutputSchema>>;
22
+ export declare const CalculatePivotPointsInputSchema: z.ZodObject<{
23
+ rows: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
24
+ toolResult: z.ZodOptional<z.ZodUnknown>;
25
+ }, z.core.$strict>;
26
+ export declare const CalculatePivotPointsOutputSchema: z.ZodObject<{
27
+ pivots: z.ZodArray<z.ZodObject<{
28
+ id: z.ZodString;
29
+ price: z.ZodNumber;
30
+ }, z.core.$strict>>;
31
+ sourceBar: z.ZodObject<{
32
+ high: z.ZodNumber;
33
+ low: z.ZodNumber;
34
+ close: z.ZodNumber;
35
+ }, z.core.$strict>;
36
+ }, z.core.$strict>;
37
+ export declare function calculatePivotPoints(input: unknown): SdkResult<z.infer<typeof CalculatePivotPointsOutputSchema>>;
38
+ export declare const CalculateFibonacciRangeInputSchema: z.ZodObject<{
39
+ rows: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
40
+ toolResult: z.ZodOptional<z.ZodUnknown>;
41
+ }, z.core.$strict>;
42
+ export declare const CalculateFibonacciRangeOutputSchema: z.ZodObject<{
43
+ range: z.ZodObject<{
44
+ high: z.ZodNumber;
45
+ low: z.ZodNumber;
46
+ trend: z.ZodEnum<{
47
+ up: "up";
48
+ down: "down";
49
+ }>;
50
+ }, z.core.$strip>;
51
+ }, z.core.$strict>;
52
+ export declare function calculateFibonacciRange(input: unknown): SdkResult<z.infer<typeof CalculateFibonacciRangeOutputSchema>>;
53
+ export declare const CalculateTrendLinesInputSchema: z.ZodObject<{
54
+ rows: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
55
+ toolResult: z.ZodOptional<z.ZodUnknown>;
56
+ lookback: z.ZodOptional<z.ZodNumber>;
57
+ maxLevels: z.ZodOptional<z.ZodNumber>;
58
+ tolerancePct: z.ZodOptional<z.ZodNumber>;
59
+ minTouches: z.ZodOptional<z.ZodNumber>;
60
+ maxLines: z.ZodOptional<z.ZodNumber>;
61
+ }, z.core.$strict>;
62
+ export declare const CalculateTrendLinesOutputSchema: z.ZodObject<{
63
+ trendLines: z.ZodArray<z.ZodObject<{
64
+ kind: z.ZodEnum<{
65
+ support: "support";
66
+ resistance: "resistance";
67
+ }>;
68
+ pointA: z.ZodObject<{
69
+ time: z.ZodNumber;
70
+ price: z.ZodNumber;
71
+ }, z.core.$strict>;
72
+ pointB: z.ZodObject<{
73
+ time: z.ZodNumber;
74
+ price: z.ZodNumber;
75
+ }, z.core.$strict>;
76
+ slope: z.ZodNumber;
77
+ touchCount: z.ZodNumber;
78
+ score: z.ZodNumber;
79
+ }, z.core.$strict>>;
80
+ }, z.core.$strict>;
81
+ export declare function calculateTrendLines(input: unknown): SdkResult<z.infer<typeof CalculateTrendLinesOutputSchema>>;
82
+ //# sourceMappingURL=calculate-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate-tools.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/levels/calculate-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AA6B/C,eAAO,MAAM,6BAA6B;;;;;;kBAAkB,CAAC;AAC7D,eAAO,MAAM,8BAA8B;;;;;;;;;;kBAajC,CAAC;AAEX,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAW5G;AAED,eAAO,MAAM,+BAA+B;;;kBAI1C,CAAC;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;kBAKnC,CAAC;AAEX,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,OAAO,GACZ,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC,CAO7D;AAED,eAAO,MAAM,kCAAkC;;;kBAI7C,CAAC;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;kBAQtC,CAAC;AAEX,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,OAAO,GACZ,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC,CAchE;AASD,eAAO,MAAM,8BAA8B;;;;;;;;kBAMzC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;kBAelC,CAAC;AAEX,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,OAAO,GACZ,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAW5D"}
@@ -0,0 +1,136 @@
1
+ import { z } from 'zod';
2
+ import { extractOhlcvBarsFromUnknown } from '../fetch-result.js';
3
+ import { calculateFibonacciRangeFromBars, calculateKeyLevelsFromBars } from './key-levels.js';
4
+ import { calculatePivotPointsFromBars } from './pivot-points.js';
5
+ import { calculateTrendLinesFromBars } from './trend-lines.js';
6
+ const barsInputSchema = z
7
+ .object({
8
+ toolResult: z.unknown().optional(),
9
+ rows: z.array(z.unknown()).min(1).optional(),
10
+ lookback: z.number().int().min(2).max(20).optional(),
11
+ tolerancePct: z.number().positive().max(0.05).optional(),
12
+ maxLevels: z.number().int().min(1).max(12).optional(),
13
+ })
14
+ .strict();
15
+ function barsFromToolInput(input) {
16
+ if (input.rows?.length) {
17
+ return input.rows;
18
+ }
19
+ if (input.toolResult != null) {
20
+ return (extractOhlcvBarsFromUnknown(input.toolResult) ?? []);
21
+ }
22
+ return [];
23
+ }
24
+ export const CalculateKeyLevelsInputSchema = barsInputSchema;
25
+ export const CalculateKeyLevelsOutputSchema = z
26
+ .object({
27
+ levels: z.array(z
28
+ .object({
29
+ price: z.number(),
30
+ kind: z.enum(['support', 'resistance']),
31
+ strength: z.number(),
32
+ touchCount: z.number(),
33
+ })
34
+ .strict()),
35
+ })
36
+ .strict();
37
+ export function calculateKeyLevels(input) {
38
+ const parsed = CalculateKeyLevelsInputSchema.safeParse(input);
39
+ if (!parsed.success) {
40
+ return { ok: false, reason: parsed.error.message };
41
+ }
42
+ const bars = barsFromToolInput(parsed.data);
43
+ if (!bars.length) {
44
+ return { ok: false, reason: 'No OHLCV bars in toolResult or rows.' };
45
+ }
46
+ const levels = calculateKeyLevelsFromBars(bars, parsed.data);
47
+ return { ok: true, data: { levels } };
48
+ }
49
+ export const CalculatePivotPointsInputSchema = barsInputSchema.omit({
50
+ lookback: true,
51
+ tolerancePct: true,
52
+ maxLevels: true,
53
+ });
54
+ export const CalculatePivotPointsOutputSchema = z
55
+ .object({
56
+ pivots: z.array(z.object({ id: z.string(), price: z.number() }).strict()),
57
+ sourceBar: z.object({ high: z.number(), low: z.number(), close: z.number() }).strict(),
58
+ })
59
+ .strict();
60
+ export function calculatePivotPoints(input) {
61
+ const parsed = CalculatePivotPointsInputSchema.safeParse(input);
62
+ if (!parsed.success) {
63
+ return { ok: false, reason: parsed.error.message };
64
+ }
65
+ const bars = barsFromToolInput(parsed.data);
66
+ return calculatePivotPointsFromBars(bars);
67
+ }
68
+ export const CalculateFibonacciRangeInputSchema = barsInputSchema.omit({
69
+ lookback: true,
70
+ tolerancePct: true,
71
+ maxLevels: true,
72
+ });
73
+ export const CalculateFibonacciRangeOutputSchema = z
74
+ .object({
75
+ range: z.object({
76
+ high: z.number(),
77
+ low: z.number(),
78
+ trend: z.enum(['up', 'down']),
79
+ }),
80
+ })
81
+ .strict();
82
+ export function calculateFibonacciRange(input) {
83
+ const parsed = CalculateFibonacciRangeInputSchema.safeParse(input);
84
+ if (!parsed.success) {
85
+ return { ok: false, reason: parsed.error.message };
86
+ }
87
+ const bars = barsFromToolInput(parsed.data);
88
+ if (!bars.length) {
89
+ return { ok: false, reason: 'No OHLCV bars in toolResult or rows.' };
90
+ }
91
+ const range = calculateFibonacciRangeFromBars(bars);
92
+ if (!range) {
93
+ return { ok: false, reason: 'Could not detect a swing range for Fibonacci.' };
94
+ }
95
+ return { ok: true, data: { range } };
96
+ }
97
+ const trendLinePointOutputSchema = z
98
+ .object({
99
+ time: z.number(),
100
+ price: z.number(),
101
+ })
102
+ .strict();
103
+ export const CalculateTrendLinesInputSchema = barsInputSchema.omit({
104
+ tolerancePct: true,
105
+ }).extend({
106
+ tolerancePct: z.number().positive().max(0.05).optional(),
107
+ minTouches: z.number().int().min(2).max(12).optional(),
108
+ maxLines: z.number().int().min(1).max(4).optional(),
109
+ });
110
+ export const CalculateTrendLinesOutputSchema = z
111
+ .object({
112
+ trendLines: z.array(z
113
+ .object({
114
+ kind: z.enum(['support', 'resistance']),
115
+ pointA: trendLinePointOutputSchema,
116
+ pointB: trendLinePointOutputSchema,
117
+ slope: z.number(),
118
+ touchCount: z.number(),
119
+ score: z.number(),
120
+ })
121
+ .strict()),
122
+ })
123
+ .strict();
124
+ export function calculateTrendLines(input) {
125
+ const parsed = CalculateTrendLinesInputSchema.safeParse(input);
126
+ if (!parsed.success) {
127
+ return { ok: false, reason: parsed.error.message };
128
+ }
129
+ const bars = barsFromToolInput(parsed.data);
130
+ if (!bars.length) {
131
+ return { ok: false, reason: 'No OHLCV bars in toolResult or rows.' };
132
+ }
133
+ const trendLines = calculateTrendLinesFromBars(bars, parsed.data);
134
+ return { ok: true, data: { trendLines } };
135
+ }
136
+ //# sourceMappingURL=calculate-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate-tools.js","sourceRoot":"","sources":["../../../../src/core/chart/levels/calculate-tools.ts"],"names":[],"mappings":"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"}