@continuumdao/continuum-node-sdk 1.3.36 → 1.3.38

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 (208) hide show
  1. package/dist/agent-host-catalog.json +9 -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 +33 -4
  4. package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
  5. package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
  6. package/dist/core/chart/analysis/analysis-catalog.js +47 -1
  7. package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
  8. package/dist/core/chart/analysis/analyze-tools.d.ts +167 -11
  9. package/dist/core/chart/analysis/analyze-tools.d.ts.map +1 -1
  10. package/dist/core/chart/analysis/analyze-tools.js +47 -55
  11. package/dist/core/chart/analysis/analyze-tools.js.map +1 -1
  12. package/dist/core/chart/analysis/chart-patterns-tools.d.ts +4 -4
  13. package/dist/core/chart/analysis/divergence/detect.d.ts +21 -0
  14. package/dist/core/chart/analysis/divergence/detect.d.ts.map +1 -0
  15. package/dist/core/chart/analysis/divergence/detect.js +223 -0
  16. package/dist/core/chart/analysis/divergence/detect.js.map +1 -0
  17. package/dist/core/chart/analysis/divergence/index.d.ts +4 -0
  18. package/dist/core/chart/analysis/divergence/index.d.ts.map +1 -0
  19. package/dist/core/chart/analysis/divergence/index.js +4 -0
  20. package/dist/core/chart/analysis/divergence/index.js.map +1 -0
  21. package/dist/core/chart/analysis/divergence/peaks.d.ts +11 -0
  22. package/dist/core/chart/analysis/divergence/peaks.d.ts.map +1 -0
  23. package/dist/core/chart/analysis/divergence/peaks.js +108 -0
  24. package/dist/core/chart/analysis/divergence/peaks.js.map +1 -0
  25. package/dist/core/chart/analysis/divergence/types.d.ts +30 -0
  26. package/dist/core/chart/analysis/divergence/types.d.ts.map +1 -0
  27. package/dist/core/chart/analysis/divergence/types.js +2 -0
  28. package/dist/core/chart/analysis/divergence/types.js.map +1 -0
  29. package/dist/core/chart/analysis/divergence-analyze-tools.d.ts +239 -0
  30. package/dist/core/chart/analysis/divergence-analyze-tools.d.ts.map +1 -0
  31. package/dist/core/chart/analysis/divergence-analyze-tools.js +283 -0
  32. package/dist/core/chart/analysis/divergence-analyze-tools.js.map +1 -0
  33. package/dist/core/chart/analysis/divergence-drawings-tools.d.ts +457 -0
  34. package/dist/core/chart/analysis/divergence-drawings-tools.d.ts.map +1 -0
  35. package/dist/core/chart/analysis/divergence-drawings-tools.js +380 -0
  36. package/dist/core/chart/analysis/divergence-drawings-tools.js.map +1 -0
  37. package/dist/core/chart/analysis/divergence-highlight.d.ts +19 -0
  38. package/dist/core/chart/analysis/divergence-highlight.d.ts.map +1 -0
  39. package/dist/core/chart/analysis/divergence-highlight.js +39 -0
  40. package/dist/core/chart/analysis/divergence-highlight.js.map +1 -0
  41. package/dist/core/chart/analysis/donchian-analyze-tools.d.ts +113 -0
  42. package/dist/core/chart/analysis/donchian-analyze-tools.d.ts.map +1 -0
  43. package/dist/core/chart/analysis/donchian-analyze-tools.js +218 -0
  44. package/dist/core/chart/analysis/donchian-analyze-tools.js.map +1 -0
  45. package/dist/core/chart/analysis/donchian-highlight.d.ts +31 -0
  46. package/dist/core/chart/analysis/donchian-highlight.d.ts.map +1 -0
  47. package/dist/core/chart/analysis/donchian-highlight.js +41 -0
  48. package/dist/core/chart/analysis/donchian-highlight.js.map +1 -0
  49. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts +35 -2
  50. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts.map +1 -1
  51. package/dist/core/chart/analysis/ichimoku-analyze-tools.d.ts +124 -0
  52. package/dist/core/chart/analysis/ichimoku-analyze-tools.d.ts.map +1 -0
  53. package/dist/core/chart/analysis/ichimoku-analyze-tools.js +243 -0
  54. package/dist/core/chart/analysis/ichimoku-analyze-tools.js.map +1 -0
  55. package/dist/core/chart/analysis/ichimoku-highlight.d.ts +36 -0
  56. package/dist/core/chart/analysis/ichimoku-highlight.d.ts.map +1 -0
  57. package/dist/core/chart/analysis/ichimoku-highlight.js +40 -0
  58. package/dist/core/chart/analysis/ichimoku-highlight.js.map +1 -0
  59. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts +2 -6
  60. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts.map +1 -1
  61. package/dist/core/chart/analysis/key-fib-drawings-tools.js +5 -17
  62. package/dist/core/chart/analysis/key-fib-drawings-tools.js.map +1 -1
  63. package/dist/core/chart/analysis/key-level-drawings-shared.d.ts +3 -12
  64. package/dist/core/chart/analysis/key-level-drawings-shared.d.ts.map +1 -1
  65. package/dist/core/chart/analysis/key-level-drawings-shared.js +6 -36
  66. package/dist/core/chart/analysis/key-level-drawings-shared.js.map +1 -1
  67. package/dist/core/chart/analysis/key-level-menu-summary.d.ts +15 -22
  68. package/dist/core/chart/analysis/key-level-menu-summary.d.ts.map +1 -1
  69. package/dist/core/chart/analysis/key-level-menu-summary.js +63 -124
  70. package/dist/core/chart/analysis/key-level-menu-summary.js.map +1 -1
  71. package/dist/core/chart/analysis/key-levels-dataset.d.ts +1 -0
  72. package/dist/core/chart/analysis/key-levels-dataset.d.ts.map +1 -1
  73. package/dist/core/chart/analysis/key-levels-dataset.js +4 -7
  74. package/dist/core/chart/analysis/key-levels-dataset.js.map +1 -1
  75. package/dist/core/chart/analysis/supertrend-analyze-tools.d.ts +112 -0
  76. package/dist/core/chart/analysis/supertrend-analyze-tools.d.ts.map +1 -0
  77. package/dist/core/chart/analysis/supertrend-analyze-tools.js +214 -0
  78. package/dist/core/chart/analysis/supertrend-analyze-tools.js.map +1 -0
  79. package/dist/core/chart/analysis/supertrend-highlight.d.ts +25 -0
  80. package/dist/core/chart/analysis/supertrend-highlight.d.ts.map +1 -0
  81. package/dist/core/chart/analysis/supertrend-highlight.js +37 -0
  82. package/dist/core/chart/analysis/supertrend-highlight.js.map +1 -0
  83. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.d.ts.map +1 -1
  84. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js +21 -0
  85. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js.map +1 -1
  86. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
  87. package/dist/core/chart/analysis/trade-setups/build-trade.js +23 -5
  88. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
  89. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.d.ts +78 -0
  90. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.d.ts.map +1 -0
  91. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.js +184 -0
  92. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.js.map +1 -0
  93. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.d.ts +133 -0
  94. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.d.ts.map +1 -0
  95. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.js +419 -0
  96. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.js.map +1 -0
  97. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.d.ts +154 -0
  98. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.d.ts.map +1 -0
  99. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.js +396 -0
  100. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.js.map +1 -0
  101. package/dist/core/chart/analysis/trade-setups/index.d.ts +5 -0
  102. package/dist/core/chart/analysis/trade-setups/index.d.ts.map +1 -1
  103. package/dist/core/chart/analysis/trade-setups/index.js +5 -0
  104. package/dist/core/chart/analysis/trade-setups/index.js.map +1 -1
  105. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts +7 -41
  106. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts.map +1 -1
  107. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js +33 -235
  108. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js.map +1 -1
  109. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts +2 -8
  110. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts.map +1 -1
  111. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js +0 -27
  112. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js.map +1 -1
  113. package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
  114. package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
  115. package/dist/core/chart/analysis/trade-setups/shared.js +10 -0
  116. package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
  117. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.d.ts +119 -0
  118. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.d.ts.map +1 -0
  119. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.js +301 -0
  120. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.js.map +1 -0
  121. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts +34 -0
  122. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts.map +1 -1
  123. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js +43 -0
  124. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js.map +1 -1
  125. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +15 -0
  126. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
  127. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +89 -0
  128. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
  129. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +32 -0
  130. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
  131. package/dist/core/chart/analysis/trade-setups/trade-idea.js +32 -0
  132. package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
  133. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +2 -2
  134. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
  135. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +2 -6
  136. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
  137. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +42 -8
  138. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -1
  139. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +72 -17
  140. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -1
  141. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.d.ts +89 -0
  142. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.d.ts.map +1 -0
  143. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.js +195 -0
  144. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.js.map +1 -0
  145. package/dist/core/chart/analysis/z-score-analyze-tools.d.ts +111 -0
  146. package/dist/core/chart/analysis/z-score-analyze-tools.d.ts.map +1 -0
  147. package/dist/core/chart/analysis/z-score-analyze-tools.js +240 -0
  148. package/dist/core/chart/analysis/z-score-analyze-tools.js.map +1 -0
  149. package/dist/core/chart/analysis/z-score-highlight.d.ts +29 -0
  150. package/dist/core/chart/analysis/z-score-highlight.d.ts.map +1 -0
  151. package/dist/core/chart/analysis/z-score-highlight.js +39 -0
  152. package/dist/core/chart/analysis/z-score-highlight.js.map +1 -0
  153. package/dist/core/chart/customization-catalog.d.ts.map +1 -1
  154. package/dist/core/chart/customization-catalog.js +36 -0
  155. package/dist/core/chart/customization-catalog.js.map +1 -1
  156. package/dist/core/chart/display-downsample.d.ts.map +1 -1
  157. package/dist/core/chart/display-downsample.js +4 -14
  158. package/dist/core/chart/display-downsample.js.map +1 -1
  159. package/dist/core/chart/overlay-schemas.d.ts +496 -0
  160. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  161. package/dist/core/chart/overlay-schemas.js +137 -0
  162. package/dist/core/chart/overlay-schemas.js.map +1 -1
  163. package/dist/core/chart/overlays.d.ts +2 -0
  164. package/dist/core/chart/overlays.d.ts.map +1 -1
  165. package/dist/core/chart/overlays.js +620 -2
  166. package/dist/core/chart/overlays.js.map +1 -1
  167. package/dist/core/chart/prepare-from-rows.d.ts +143 -0
  168. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  169. package/dist/core/chart/schemas.d.ts +491 -0
  170. package/dist/core/chart/schemas.d.ts.map +1 -1
  171. package/dist/core/coinmarketcap/schemas.d.ts +7 -7
  172. package/dist/index.d.ts +0 -1
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +2 -1
  175. package/dist/index.js.map +1 -1
  176. package/dist/mcp/agent-host-catalog.d.ts +1 -1
  177. package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
  178. package/dist/mcp/agent-host-catalog.js +1 -0
  179. package/dist/mcp/agent-host-catalog.js.map +1 -1
  180. package/dist/mcp/chart.d.ts.map +1 -1
  181. package/dist/mcp/chart.js +61 -2
  182. package/dist/mcp/chart.js.map +1 -1
  183. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  184. package/dist/mcp/deferred/tool-group-map.js +8 -0
  185. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  186. package/dist/mcp/defi/morpho-input.d.ts +3 -0
  187. package/dist/mcp/defi/morpho-input.d.ts.map +1 -1
  188. package/dist/mcp/defi/morpho-input.js +116 -1
  189. package/dist/mcp/defi/morpho-input.js.map +1 -1
  190. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
  191. package/dist/mcp/ohlcv-session-wrapper.js +8 -0
  192. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
  193. package/dist/mcp/resources/chart-analysis.md +9 -0
  194. package/dist/mcp/resources/chart.md +3 -0
  195. package/dist/mcp/trade-tools.d.ts.map +1 -1
  196. package/dist/mcp/trade-tools.js +2 -0
  197. package/dist/mcp/trade-tools.js.map +1 -1
  198. package/package.json +65 -60
  199. package/dist/core/agent/mcp-servers-catalog.d.ts +0 -15
  200. package/dist/core/agent/mcp-servers-catalog.d.ts.map +0 -1
  201. package/dist/core/agent/mcp-servers-catalog.js +0 -125
  202. package/dist/core/agent/mcp-servers-catalog.js.map +0 -1
  203. package/dist/core/agent/webhooks-catalog.d.ts +0 -10
  204. package/dist/core/agent/webhooks-catalog.d.ts.map +0 -1
  205. package/dist/core/agent/webhooks-catalog.js +0 -19
  206. package/dist/core/agent/webhooks-catalog.js.map +0 -1
  207. package/dist/mcp/resources/trade-defaults-skill.md +0 -69
  208. package/dist/mcp/ta/resources/indicators.md +0 -86
@@ -0,0 +1,218 @@
1
+ import { z } from 'zod';
2
+ import { calculateTechnicalIndicator } from '../../ta/calculate.js';
3
+ import { coerceFiniteNumber } from '../point-normalize.js';
4
+ import { ChartLiveTickSchema } from '../live/schemas.js';
5
+ import { buildOhlcvAnalysisMeta, OhlcvAnalysisMetaSchema } from './analysis-meta.js';
6
+ import { prepareOhlcvBarsForAnalysis } from './ohlcv-live-merge.js';
7
+ import { preprocessOhlcvToolInput, missingOhlcvBarsReason } from './ohlcv-input.js';
8
+ import { ohlcvToolRejectIfLineOnly } from './time-series-analyze-tools.js';
9
+ import { buildDonchianHighlight } from './donchian-highlight.js';
10
+ import { entryProximityAtrFromOhlcvRows } from './trade-setups/entry-proximity-atr.js';
11
+ import { DEFAULT_ENTRY_PROXIMITY_ATR_PERIOD } from './trade-setups/trade-desk-defaults.js';
12
+ import { buildDonchianTradeSetup, DEFAULT_DONCHIAN_ENTRY_MODE, DEFAULT_DONCHIAN_PERIOD, DEFAULT_DONCHIAN_TARGET_ATR_MULTIPLE, } from './trade-setups/donchian-trade-setup.js';
13
+ const donchianInputSchema = z
14
+ .object({
15
+ toolResult: z.unknown().optional(),
16
+ rows: z.array(z.unknown()).min(1).optional(),
17
+ title: z.string().trim().min(1).max(256).optional(),
18
+ label: z.string().trim().min(1).max(128).optional(),
19
+ ohlcvDigest: z.string().trim().min(1).max(512).optional(),
20
+ mergeLive: z.boolean().optional(),
21
+ liveTick: ChartLiveTickSchema.optional(),
22
+ allowRowsOnly: z.boolean().optional(),
23
+ /** Channel length; desk may inject as donchianPeriod when period is omitted. */
24
+ period: z.number().int().min(2).max(500).optional(),
25
+ donchianPeriod: z.number().int().min(2).max(500).optional(),
26
+ donchianEntryMode: z.enum(['retest', 'immediate']).optional(),
27
+ /** Target = entry ± (multiple × ATR); desk donchianTargetAtrMultiple default 3. */
28
+ donchianTargetAtrMultiple: z.number().min(0.1).max(50).optional(),
29
+ entryProximityPct: z.number().min(0).max(100).optional(),
30
+ entryProximityMode: z.enum(['price', 'atr']).optional(),
31
+ entryProximityAtrPeriod: z.number().int().min(2).max(100).optional(),
32
+ entryOffsetPct: z.number().min(0).max(50).optional(),
33
+ invalidationOffsetPct: z.number().min(0).max(50).optional(),
34
+ })
35
+ .strict();
36
+ export const AnalyzeDonchianBreakoutInputSchema = z.preprocess(preprocessOhlcvToolInput, donchianInputSchema);
37
+ export const AnalyzeDonchianBreakoutOutputSchema = z
38
+ .object({
39
+ analysis: z
40
+ .object({
41
+ summary: z.string(),
42
+ interpretation: z.string(),
43
+ upper: z.number(),
44
+ middle: z.number(),
45
+ lower: z.number(),
46
+ priorUpper: z.number(),
47
+ priorLower: z.number(),
48
+ channelWidth: z.number(),
49
+ period: z.number().int(),
50
+ entryMode: z.enum(['retest', 'immediate']),
51
+ donchianTradeSetup: z.object({}).catchall(z.unknown()).nullable(),
52
+ donchianHighlight: z.object({}).catchall(z.unknown()),
53
+ })
54
+ .strict(),
55
+ meta: OhlcvAnalysisMetaSchema,
56
+ })
57
+ .strict();
58
+ function resolvePeriod(data) {
59
+ return data.period ?? data.donchianPeriod ?? DEFAULT_DONCHIAN_PERIOD;
60
+ }
61
+ function resolveEntryMode(mode) {
62
+ return mode ?? DEFAULT_DONCHIAN_ENTRY_MODE;
63
+ }
64
+ function extractOhlcSeries(bars) {
65
+ const high = [];
66
+ const low = [];
67
+ const close = [];
68
+ for (const bar of bars) {
69
+ const h = coerceFiniteNumber(bar.high);
70
+ const l = coerceFiniteNumber(bar.low);
71
+ const c = coerceFiniteNumber(bar.close);
72
+ if (h == null || l == null || c == null) {
73
+ continue;
74
+ }
75
+ high.push(h);
76
+ low.push(l);
77
+ close.push(c);
78
+ }
79
+ if (high.length === 0) {
80
+ return null;
81
+ }
82
+ return { high, low, close };
83
+ }
84
+ function alignChannelsToBars(barCount, rows) {
85
+ const out = Array.from({ length: barCount }, () => null);
86
+ if (!Array.isArray(rows) || rows.length === 0 || rows.length > barCount) {
87
+ return out;
88
+ }
89
+ const offset = barCount - rows.length;
90
+ for (let j = 0; j < rows.length; j++) {
91
+ const row = rows[j];
92
+ if (!row || typeof row !== 'object') {
93
+ continue;
94
+ }
95
+ const upper = coerceFiniteNumber(row.upper ?? row.Upper);
96
+ const middle = coerceFiniteNumber(row.middle ?? row.Middle);
97
+ const lower = coerceFiniteNumber(row.lower ?? row.Lower);
98
+ if (upper == null || middle == null || lower == null || upper <= lower) {
99
+ continue;
100
+ }
101
+ out[offset + j] = { upper, middle, lower };
102
+ }
103
+ return out;
104
+ }
105
+ export async function analyzeDonchianBreakout(input) {
106
+ const parsed = AnalyzeDonchianBreakoutInputSchema.safeParse(input);
107
+ if (!parsed.success) {
108
+ return { ok: false, reason: parsed.error.message };
109
+ }
110
+ const lineOnly = ohlcvToolRejectIfLineOnly(parsed.data);
111
+ if (lineOnly) {
112
+ return lineOnly;
113
+ }
114
+ const period = resolvePeriod(parsed.data);
115
+ const entryMode = resolveEntryMode(parsed.data.donchianEntryMode);
116
+ const minBars = period + 2;
117
+ const prepared = await prepareOhlcvBarsForAnalysis(parsed.data);
118
+ if (!prepared.ok) {
119
+ if (!parsed.data.toolResult && !parsed.data.rows?.length) {
120
+ return { ok: false, reason: missingOhlcvBarsReason(parsed.data) };
121
+ }
122
+ return prepared;
123
+ }
124
+ const { bars, liveMerge, fingerprint } = prepared.data;
125
+ if (bars.length < minBars) {
126
+ return {
127
+ ok: false,
128
+ reason: `Need at least ${minBars} OHLCV bars for Donchian breakout analysis (period ${period}).`,
129
+ };
130
+ }
131
+ const ohlc = extractOhlcSeries(bars);
132
+ if (!ohlc || ohlc.close.length < minBars) {
133
+ return { ok: false, reason: 'Insufficient valid OHLC prices for Donchian analysis.' };
134
+ }
135
+ const ta = calculateTechnicalIndicator({
136
+ indicator: 'donchianchannels',
137
+ params: { period },
138
+ input: { high: ohlc.high, low: ohlc.low, close: ohlc.close },
139
+ options: { maxPoints: ohlc.high.length },
140
+ });
141
+ if (!ta.ok) {
142
+ return ta;
143
+ }
144
+ const channels = alignChannelsToBars(ohlc.close.length, ta.data.result);
145
+ const lastIndex = ohlc.close.length - 1;
146
+ const current = channels[lastIndex];
147
+ const prior = channels[lastIndex - 1];
148
+ if (current == null || prior == null) {
149
+ return { ok: false, reason: 'Donchian channels have no valid values after warmup.' };
150
+ }
151
+ const atrPeriod = parsed.data.entryProximityAtrPeriod ?? DEFAULT_ENTRY_PROXIMITY_ATR_PERIOD;
152
+ const atr = entryProximityAtrFromOhlcvRows(bars, atrPeriod);
153
+ const targetAtrMultiple = parsed.data.donchianTargetAtrMultiple ?? DEFAULT_DONCHIAN_TARGET_ATR_MULTIPLE;
154
+ const donchianTradeSetup = buildDonchianTradeSetup({
155
+ closes: ohlc.close,
156
+ channels,
157
+ period,
158
+ entryMode,
159
+ entryProximityPct: parsed.data.entryProximityPct,
160
+ entryOffsetPct: parsed.data.entryOffsetPct,
161
+ invalidationOffsetPct: parsed.data.invalidationOffsetPct,
162
+ atr,
163
+ targetAtrMultiple,
164
+ });
165
+ const channelWidth = current.upper - current.lower;
166
+ const donchianHighlight = buildDonchianHighlight({
167
+ upper: current.upper,
168
+ middle: current.middle,
169
+ lower: current.lower,
170
+ priorUpper: prior.upper,
171
+ priorLower: prior.lower,
172
+ channelWidth,
173
+ period,
174
+ entryMode,
175
+ setup: donchianTradeSetup,
176
+ });
177
+ const lastClose = ohlc.close[lastIndex];
178
+ const summary = donchianHighlight.summary;
179
+ let interpretation = `Donchian channels (${period}): upper ${current.upper.toFixed(2)}, middle ${current.middle.toFixed(2)}, lower ${current.lower.toFixed(2)}. Prior channel ${prior.lower.toFixed(2)}–${prior.upper.toFixed(2)}. Last close ${lastClose.toFixed(2)}. Entry mode: ${entryMode}. `;
180
+ if (donchianTradeSetup?.invalidated) {
181
+ interpretation += donchianTradeSetup.unclearReason ?? 'Setup invalidated.';
182
+ }
183
+ else if (donchianTradeSetup?.status === 'clear' &&
184
+ donchianTradeSetup.side !== 'neutral') {
185
+ interpretation += `Trade setup (${donchianTradeSetup.setupPurposeCode}): ${donchianTradeSetup.side} at ${donchianTradeSetup.entryLabel ?? 'channel'} toward ${donchianTradeSetup.targetLabel ?? 'target'}.`;
186
+ }
187
+ else {
188
+ interpretation +=
189
+ donchianTradeSetup?.conditionalNote ??
190
+ 'No clear Donchian breakout/retest — wait for signal.';
191
+ }
192
+ return {
193
+ ok: true,
194
+ data: {
195
+ analysis: {
196
+ summary,
197
+ interpretation,
198
+ upper: current.upper,
199
+ middle: current.middle,
200
+ lower: current.lower,
201
+ priorUpper: prior.upper,
202
+ priorLower: prior.lower,
203
+ channelWidth,
204
+ period,
205
+ entryMode,
206
+ donchianTradeSetup,
207
+ donchianHighlight,
208
+ },
209
+ meta: buildOhlcvAnalysisMeta(bars, {
210
+ title: parsed.data.title,
211
+ toolResult: parsed.data.toolResult,
212
+ liveMerge,
213
+ ohlcvFingerprint: fingerprint,
214
+ }),
215
+ },
216
+ };
217
+ }
218
+ //# sourceMappingURL=donchian-analyze-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donchian-analyze-tools.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/donchian-analyze-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { DonchianTradeSetup } from './trade-setups/donchian-trade-setup.js';
2
+ export type DonchianHighlight = {
3
+ summary: string;
4
+ upper: number;
5
+ middle: number;
6
+ lower: number;
7
+ priorUpper: number;
8
+ priorLower: number;
9
+ channelWidth: number;
10
+ period: number;
11
+ entryMode: 'retest' | 'immediate';
12
+ side: 'long' | 'short' | 'neutral';
13
+ status: 'clear' | 'unclear';
14
+ invalidated: boolean;
15
+ confidence: number;
16
+ conditionalNote: string;
17
+ chartDrawingHint?: string;
18
+ unclearReason?: string;
19
+ };
20
+ export declare function buildDonchianHighlight(input: {
21
+ upper: number;
22
+ middle: number;
23
+ lower: number;
24
+ priorUpper: number;
25
+ priorLower: number;
26
+ channelWidth: number;
27
+ period: number;
28
+ entryMode: 'retest' | 'immediate';
29
+ setup: DonchianTradeSetup | null;
30
+ }): DonchianHighlight;
31
+ //# sourceMappingURL=donchian-highlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donchian-highlight.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/donchian-highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,wCAAwC,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAYF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACjC,GAAG,iBAAiB,CAiCpB"}
@@ -0,0 +1,41 @@
1
+ function sideLabel(side) {
2
+ if (side === 'long') {
3
+ return 'Long';
4
+ }
5
+ if (side === 'short') {
6
+ return 'Short';
7
+ }
8
+ return 'Neutral';
9
+ }
10
+ export function buildDonchianHighlight(input) {
11
+ const setup = input.setup;
12
+ const side = setup?.side ?? 'neutral';
13
+ const status = setup?.status ?? 'unclear';
14
+ const invalidated = setup?.invalidated ?? false;
15
+ const confidence = setup?.confidence ?? 0.4;
16
+ const conditionalNote = setup?.conditionalNote ??
17
+ 'Donchian channel — wait for breakout or retest of the broken band.';
18
+ const statusPart = invalidated ? 'Invalid' : status === 'clear' ? 'Clear' : 'Unclear';
19
+ const modePart = input.entryMode === 'retest' ? 'retest' : 'immediate';
20
+ const summary = `DC(${input.period}) · ${input.lower.toFixed(2)}–${input.upper.toFixed(2)} · ${modePart}. ${sideLabel(side)} — ${statusPart}. ${conditionalNote}`;
21
+ const chartDrawingHint = 'When a chart is already prepared, merge `{ type: "donchian", sourceSeriesId, period }` into prepareReplay.overlays (period from trade-desk.yaml donchianPeriod) and call prepare_chart_from_rows with the same OHLCV session.';
22
+ return {
23
+ summary,
24
+ upper: input.upper,
25
+ middle: input.middle,
26
+ lower: input.lower,
27
+ priorUpper: input.priorUpper,
28
+ priorLower: input.priorLower,
29
+ channelWidth: input.channelWidth,
30
+ period: input.period,
31
+ entryMode: input.entryMode,
32
+ side,
33
+ status,
34
+ invalidated,
35
+ confidence,
36
+ conditionalNote,
37
+ chartDrawingHint,
38
+ ...(setup?.unclearReason ? { unclearReason: setup.unclearReason } : {}),
39
+ };
40
+ }
41
+ //# sourceMappingURL=donchian-highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donchian-highlight.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/donchian-highlight.ts"],"names":[],"mappings":"AAqBA,SAAS,SAAS,CAAC,IAA+B;IACjD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAUtC;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;IAC1C,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,GAAG,CAAC;IAC5C,MAAM,eAAe,GACpB,KAAK,EAAE,eAAe;QACtB,oEAAoE,CAAC;IACtE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,UAAU,KAAK,eAAe,EAAE,CAAC;IAClK,MAAM,gBAAgB,GACrB,+NAA+N,CAAC;IAEjO,OAAO;QACN,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI;QACJ,MAAM;QACN,WAAW;QACX,UAAU;QACV,eAAe;QACf,gBAAgB;QAChB,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;AACH,CAAC"}
@@ -21,6 +21,39 @@ export declare const AnalyzeElliottWavesInputSchema: z.ZodPreprocess<z.ZodObject
21
21
  entryProximityAtrPeriod: z.ZodOptional<z.ZodNumber>;
22
22
  entryOffsetPct: z.ZodOptional<z.ZodNumber>;
23
23
  invalidationOffsetPct: z.ZodOptional<z.ZodNumber>;
24
+ fibKeyLevelMinConfidence: z.ZodOptional<z.ZodNumber>;
25
+ donchianPeriod: z.ZodOptional<z.ZodNumber>;
26
+ donchianEntryMode: z.ZodOptional<z.ZodEnum<{
27
+ retest: "retest";
28
+ immediate: "immediate";
29
+ }>>;
30
+ donchianTargetAtrMultiple: z.ZodOptional<z.ZodNumber>;
31
+ supertrendPeriod: z.ZodOptional<z.ZodNumber>;
32
+ supertrendMultiplier: z.ZodOptional<z.ZodNumber>;
33
+ supertrendEntryMode: z.ZodOptional<z.ZodEnum<{
34
+ retest: "retest";
35
+ flip: "flip";
36
+ }>>;
37
+ supertrendTargetAtrMultiple: z.ZodOptional<z.ZodNumber>;
38
+ ichimokuConversionPeriod: z.ZodOptional<z.ZodNumber>;
39
+ ichimokuBasePeriod: z.ZodOptional<z.ZodNumber>;
40
+ ichimokuSpanPeriod: z.ZodOptional<z.ZodNumber>;
41
+ ichimokuDisplacement: z.ZodOptional<z.ZodNumber>;
42
+ ichimokuTargetAtrMultiple: z.ZodOptional<z.ZodNumber>;
43
+ zScorePeriod: z.ZodOptional<z.ZodNumber>;
44
+ zScoreEntry: z.ZodOptional<z.ZodNumber>;
45
+ zScoreExit: z.ZodOptional<z.ZodNumber>;
46
+ zScoreStopAtrMultiple: z.ZodOptional<z.ZodNumber>;
47
+ zScoreAtrFilter: z.ZodOptional<z.ZodEnum<{
48
+ none: "none";
49
+ contracting: "contracting";
50
+ }>>;
51
+ divergenceOscillator: z.ZodOptional<z.ZodEnum<{
52
+ rsi: "rsi";
53
+ stochasticrsi: "stochasticrsi";
54
+ both: "both";
55
+ }>>;
56
+ divergenceMaxLag: z.ZodOptional<z.ZodNumber>;
24
57
  }, z.core.$strict>>;
25
58
  export declare const AnalyzeElliottWavesOutputSchema: z.ZodObject<{
26
59
  analysis: z.ZodObject<{
@@ -30,9 +63,9 @@ export declare const AnalyzeElliottWavesOutputSchema: z.ZodObject<{
30
63
  }>;
31
64
  dataGuidance: z.ZodString;
32
65
  effectiveDegree: z.ZodEnum<{
66
+ primary: "primary";
33
67
  minor: "minor";
34
68
  intermediate: "intermediate";
35
- primary: "primary";
36
69
  }>;
37
70
  minBarsRequired: z.ZodNumber;
38
71
  trendDirection: z.ZodEnum<{
@@ -52,9 +85,9 @@ export declare const AnalyzeElliottWavesOutputSchema: z.ZodObject<{
52
85
  index: z.ZodNumber;
53
86
  waveMenuNumber: z.ZodNumber;
54
87
  degree: z.ZodEnum<{
88
+ primary: "primary";
55
89
  minor: "minor";
56
90
  intermediate: "intermediate";
57
- primary: "primary";
58
91
  }>;
59
92
  patternType: z.ZodEnum<{
60
93
  corrective: "corrective";
@@ -1 +1 @@
1
- {"version":3,"file":"elliott-waves-analyze-tools.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/elliott-waves-analyze-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AA2B/C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;mBAA0D,CAAC;AAyBtG,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BlC,CAAC;AAEX,wBAAsB,uBAAuB,CAC5C,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAwErE"}
1
+ {"version":3,"file":"elliott-waves-analyze-tools.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/elliott-waves-analyze-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AA2B/C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAA0D,CAAC;AAyBtG,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BlC,CAAC;AAEX,wBAAsB,uBAAuB,CAC5C,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAwErE"}
@@ -0,0 +1,124 @@
1
+ import { z } from 'zod';
2
+ import type { SdkResult } from '../../result.js';
3
+ export declare const AnalyzeIchimokuInputSchema: z.ZodPreprocess<z.ZodObject<{
4
+ toolResult: z.ZodOptional<z.ZodUnknown>;
5
+ rows: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
6
+ title: z.ZodOptional<z.ZodString>;
7
+ label: z.ZodOptional<z.ZodString>;
8
+ ohlcvDigest: z.ZodOptional<z.ZodString>;
9
+ mergeLive: z.ZodOptional<z.ZodBoolean>;
10
+ liveTick: z.ZodOptional<z.ZodObject<{
11
+ timeMs: z.ZodNumber;
12
+ price: z.ZodNumber;
13
+ volume: z.ZodOptional<z.ZodNumber>;
14
+ }, z.core.$strict>>;
15
+ allowRowsOnly: z.ZodOptional<z.ZodBoolean>;
16
+ conversionPeriod: z.ZodOptional<z.ZodNumber>;
17
+ ichimokuConversionPeriod: z.ZodOptional<z.ZodNumber>;
18
+ basePeriod: z.ZodOptional<z.ZodNumber>;
19
+ ichimokuBasePeriod: z.ZodOptional<z.ZodNumber>;
20
+ spanPeriod: z.ZodOptional<z.ZodNumber>;
21
+ ichimokuSpanPeriod: z.ZodOptional<z.ZodNumber>;
22
+ displacement: z.ZodOptional<z.ZodNumber>;
23
+ ichimokuDisplacement: z.ZodOptional<z.ZodNumber>;
24
+ ichimokuTargetAtrMultiple: z.ZodOptional<z.ZodNumber>;
25
+ entryProximityPct: z.ZodOptional<z.ZodNumber>;
26
+ entryProximityMode: z.ZodOptional<z.ZodEnum<{
27
+ price: "price";
28
+ atr: "atr";
29
+ }>>;
30
+ entryProximityAtrPeriod: z.ZodOptional<z.ZodNumber>;
31
+ entryOffsetPct: z.ZodOptional<z.ZodNumber>;
32
+ invalidationOffsetPct: z.ZodOptional<z.ZodNumber>;
33
+ }, z.core.$strict>>;
34
+ export declare const AnalyzeIchimokuOutputSchema: z.ZodObject<{
35
+ analysis: z.ZodObject<{
36
+ summary: z.ZodString;
37
+ interpretation: z.ZodString;
38
+ conversion: z.ZodNumber;
39
+ base: z.ZodNumber;
40
+ cloudTop: z.ZodNumber;
41
+ cloudBottom: z.ZodNumber;
42
+ spanA: z.ZodNumber;
43
+ spanB: z.ZodNumber;
44
+ conversionPeriod: z.ZodNumber;
45
+ basePeriod: z.ZodNumber;
46
+ spanPeriod: z.ZodNumber;
47
+ displacement: z.ZodNumber;
48
+ tkState: z.ZodEnum<{
49
+ flat: "flat";
50
+ bullish: "bullish";
51
+ bearish: "bearish";
52
+ }>;
53
+ cloudPosition: z.ZodEnum<{
54
+ inside: "inside";
55
+ above: "above";
56
+ below: "below";
57
+ }>;
58
+ ichimokuTradeSetup: z.ZodNullable<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
59
+ ichimokuHighlight: z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>;
60
+ }, z.core.$strict>;
61
+ meta: z.ZodObject<{
62
+ barCount: z.ZodNumber;
63
+ title: z.ZodOptional<z.ZodString>;
64
+ ohlcvSummary: z.ZodOptional<z.ZodObject<{
65
+ barCount: z.ZodNumber;
66
+ timeStartSec: z.ZodNumber;
67
+ timeEndSec: z.ZodNumber;
68
+ low: z.ZodNumber;
69
+ high: z.ZodNumber;
70
+ lastClose: z.ZodNumber;
71
+ }, z.core.$strict>>;
72
+ ohlcvFingerprint: z.ZodOptional<z.ZodObject<{
73
+ version: z.ZodLiteral<1>;
74
+ barCount: z.ZodNumber;
75
+ timeStartSec: z.ZodNumber;
76
+ timeEndSec: z.ZodNumber;
77
+ low: z.ZodNumber;
78
+ high: z.ZodNumber;
79
+ lastClose: z.ZodNumber;
80
+ digest: z.ZodString;
81
+ }, z.core.$strict>>;
82
+ fetchContext: z.ZodOptional<z.ZodObject<{
83
+ interval: z.ZodNullable<z.ZodString>;
84
+ intervalSec: z.ZodNullable<z.ZodNumber>;
85
+ lookbackDays: z.ZodNullable<z.ZodNumber>;
86
+ lookbackHours: z.ZodNullable<z.ZodNumber>;
87
+ lookbackLabel: z.ZodNullable<z.ZodString>;
88
+ coin: z.ZodNullable<z.ZodString>;
89
+ declaredBarCount: z.ZodNullable<z.ZodNumber>;
90
+ windowExpectedBarCount: z.ZodNullable<z.ZodNumber>;
91
+ expectedBarCount: z.ZodNullable<z.ZodNumber>;
92
+ }, z.core.$strict>>;
93
+ windowExpectation: z.ZodOptional<z.ZodObject<{
94
+ interval: z.ZodNullable<z.ZodString>;
95
+ intervalSec: z.ZodNullable<z.ZodNumber>;
96
+ lookbackLabel: z.ZodNullable<z.ZodString>;
97
+ expectedBarCount: z.ZodNullable<z.ZodNumber>;
98
+ minBarCount: z.ZodNullable<z.ZodNumber>;
99
+ sources: z.ZodArray<z.ZodString>;
100
+ }, z.core.$strict>>;
101
+ liveMerge: z.ZodOptional<z.ZodObject<{
102
+ attempted: z.ZodBoolean;
103
+ merged: z.ZodBoolean;
104
+ livePrice: z.ZodOptional<z.ZodNumber>;
105
+ liveTickTimeMs: z.ZodOptional<z.ZodNumber>;
106
+ priorLastClose: z.ZodOptional<z.ZodNumber>;
107
+ barRolledOver: z.ZodOptional<z.ZodBoolean>;
108
+ skippedReason: z.ZodOptional<z.ZodString>;
109
+ }, z.core.$strict>>;
110
+ patternsScanned: z.ZodOptional<z.ZodNumber>;
111
+ dataPolicy: z.ZodString;
112
+ warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
113
+ sessionBind: z.ZodOptional<z.ZodObject<{
114
+ ohlcvDigest: z.ZodString;
115
+ title: z.ZodOptional<z.ZodString>;
116
+ reuseInput: z.ZodObject<{
117
+ title: z.ZodOptional<z.ZodString>;
118
+ ohlcvDigest: z.ZodString;
119
+ }, z.core.$strict>;
120
+ }, z.core.$strict>>;
121
+ }, z.core.$strict>;
122
+ }, z.core.$strict>;
123
+ export declare function analyzeIchimoku(input: unknown): Promise<SdkResult<z.infer<typeof AnalyzeIchimokuOutputSchema>>>;
124
+ //# sourceMappingURL=ichimoku-analyze-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ichimoku-analyze-tools.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/ichimoku-analyze-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAiD/C,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAGtC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwB9B,CAAC;AA2EX,wBAAsB,eAAe,CACpC,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CA+IjE"}