@continuumdao/continuum-node-sdk 1.3.25 → 1.3.27

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 (570) hide show
  1. package/README.md +15 -1
  2. package/dist/agent-host-catalog.json +189 -0
  3. package/dist/core/agent/agent-chart-data-access-assert.d.ts +7 -0
  4. package/dist/core/agent/agent-chart-data-access-assert.d.ts.map +1 -0
  5. package/dist/core/agent/agent-chart-data-access-assert.js +27 -0
  6. package/dist/core/agent/agent-chart-data-access-assert.js.map +1 -0
  7. package/dist/core/agent/agent-chart-data-access.d.ts +11 -0
  8. package/dist/core/agent/agent-chart-data-access.d.ts.map +1 -0
  9. package/dist/core/agent/agent-chart-data-access.js +42 -0
  10. package/dist/core/agent/agent-chart-data-access.js.map +1 -0
  11. package/dist/core/agent/environment-variables.d.ts +8 -1
  12. package/dist/core/agent/environment-variables.d.ts.map +1 -1
  13. package/dist/core/agent/environment-variables.js +44 -1
  14. package/dist/core/agent/environment-variables.js.map +1 -1
  15. package/dist/core/agent/mcp-servers.d.ts +8 -1
  16. package/dist/core/agent/mcp-servers.d.ts.map +1 -1
  17. package/dist/core/agent/mcp-servers.js +50 -1
  18. package/dist/core/agent/mcp-servers.js.map +1 -1
  19. package/dist/core/agent/skills.d.ts +6 -0
  20. package/dist/core/agent/skills.d.ts.map +1 -1
  21. package/dist/core/agent/skills.js +40 -1
  22. package/dist/core/agent/skills.js.map +1 -1
  23. package/dist/core/candlestick-patterns/calibration-weights.d.ts +3 -0
  24. package/dist/core/candlestick-patterns/calibration-weights.d.ts.map +1 -0
  25. package/dist/core/candlestick-patterns/calibration-weights.js +3 -0
  26. package/dist/core/candlestick-patterns/calibration-weights.js.map +1 -0
  27. package/dist/core/candlestick-patterns/candle-settings.d.ts +50 -0
  28. package/dist/core/candlestick-patterns/candle-settings.d.ts.map +1 -0
  29. package/dist/core/candlestick-patterns/candle-settings.js +127 -0
  30. package/dist/core/candlestick-patterns/candle-settings.js.map +1 -0
  31. package/dist/core/candlestick-patterns/catalog.d.ts +7 -0
  32. package/dist/core/candlestick-patterns/catalog.d.ts.map +1 -0
  33. package/dist/core/candlestick-patterns/catalog.js +191 -0
  34. package/dist/core/candlestick-patterns/catalog.js.map +1 -0
  35. package/dist/core/candlestick-patterns/index.d.ts +7 -0
  36. package/dist/core/candlestick-patterns/index.d.ts.map +1 -0
  37. package/dist/core/candlestick-patterns/index.js +6 -0
  38. package/dist/core/candlestick-patterns/index.js.map +1 -0
  39. package/dist/core/candlestick-patterns/patterns/detect.d.ts +21 -0
  40. package/dist/core/candlestick-patterns/patterns/detect.d.ts.map +1 -0
  41. package/dist/core/candlestick-patterns/patterns/detect.js +515 -0
  42. package/dist/core/candlestick-patterns/patterns/detect.js.map +1 -0
  43. package/dist/core/candlestick-patterns/recommendation.d.ts +3 -0
  44. package/dist/core/candlestick-patterns/recommendation.d.ts.map +1 -0
  45. package/dist/core/candlestick-patterns/recommendation.js +92 -0
  46. package/dist/core/candlestick-patterns/recommendation.js.map +1 -0
  47. package/dist/core/candlestick-patterns/scan.d.ts +8 -0
  48. package/dist/core/candlestick-patterns/scan.d.ts.map +1 -0
  49. package/dist/core/candlestick-patterns/scan.js +70 -0
  50. package/dist/core/candlestick-patterns/scan.js.map +1 -0
  51. package/dist/core/candlestick-patterns/types.d.ts +47 -0
  52. package/dist/core/candlestick-patterns/types.d.ts.map +1 -0
  53. package/dist/core/candlestick-patterns/types.js +2 -0
  54. package/dist/core/candlestick-patterns/types.js.map +1 -0
  55. package/dist/core/chart/analysis/analysis-agent-view.d.ts +6 -0
  56. package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -0
  57. package/dist/core/chart/analysis/analysis-agent-view.js +197 -0
  58. package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -0
  59. package/dist/core/chart/analysis/analysis-catalog.d.ts +18 -0
  60. package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -0
  61. package/dist/core/chart/analysis/analysis-catalog.js +108 -0
  62. package/dist/core/chart/analysis/analysis-catalog.js.map +1 -0
  63. package/dist/core/chart/analysis/analysis-meta.d.ts +97 -0
  64. package/dist/core/chart/analysis/analysis-meta.d.ts.map +1 -0
  65. package/dist/core/chart/analysis/analysis-meta.js +86 -0
  66. package/dist/core/chart/analysis/analysis-meta.js.map +1 -0
  67. package/dist/core/chart/analysis/analyze-tools.d.ts +634 -0
  68. package/dist/core/chart/analysis/analyze-tools.d.ts.map +1 -0
  69. package/dist/core/chart/analysis/analyze-tools.js +785 -0
  70. package/dist/core/chart/analysis/analyze-tools.js.map +1 -0
  71. package/dist/core/chart/analysis/candlestick-patterns-tools.d.ts +125 -0
  72. package/dist/core/chart/analysis/candlestick-patterns-tools.d.ts.map +1 -0
  73. package/dist/core/chart/analysis/candlestick-patterns-tools.js +159 -0
  74. package/dist/core/chart/analysis/candlestick-patterns-tools.js.map +1 -0
  75. package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts +105 -0
  76. package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts.map +1 -0
  77. package/dist/core/chart/analysis/chart-patterns-drawings-tools.js +512 -0
  78. package/dist/core/chart/analysis/chart-patterns-drawings-tools.js.map +1 -0
  79. package/dist/core/chart/analysis/chart-patterns-tools.d.ts +542 -0
  80. package/dist/core/chart/analysis/chart-patterns-tools.d.ts.map +1 -0
  81. package/dist/core/chart/analysis/chart-patterns-tools.js +283 -0
  82. package/dist/core/chart/analysis/chart-patterns-tools.js.map +1 -0
  83. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts +42 -0
  84. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts.map +1 -0
  85. package/dist/core/chart/analysis/key-fib-drawings-tools.js +140 -0
  86. package/dist/core/chart/analysis/key-fib-drawings-tools.js.map +1 -0
  87. package/dist/core/chart/analysis/key-level-break-detect.d.ts +27 -0
  88. package/dist/core/chart/analysis/key-level-break-detect.d.ts.map +1 -0
  89. package/dist/core/chart/analysis/key-level-break-detect.js +156 -0
  90. package/dist/core/chart/analysis/key-level-break-detect.js.map +1 -0
  91. package/dist/core/chart/analysis/key-level-drawings-shared.d.ts +109 -0
  92. package/dist/core/chart/analysis/key-level-drawings-shared.d.ts.map +1 -0
  93. package/dist/core/chart/analysis/key-level-drawings-shared.js +335 -0
  94. package/dist/core/chart/analysis/key-level-drawings-shared.js.map +1 -0
  95. package/dist/core/chart/analysis/key-level-drawings-tools.d.ts +42 -0
  96. package/dist/core/chart/analysis/key-level-drawings-tools.d.ts.map +1 -0
  97. package/dist/core/chart/analysis/key-level-drawings-tools.js +140 -0
  98. package/dist/core/chart/analysis/key-level-drawings-tools.js.map +1 -0
  99. package/dist/core/chart/analysis/key-level-menu-summary.d.ts +84 -0
  100. package/dist/core/chart/analysis/key-level-menu-summary.d.ts.map +1 -0
  101. package/dist/core/chart/analysis/key-level-menu-summary.js +257 -0
  102. package/dist/core/chart/analysis/key-level-menu-summary.js.map +1 -0
  103. package/dist/core/chart/analysis/key-levels-dataset.d.ts +17 -0
  104. package/dist/core/chart/analysis/key-levels-dataset.d.ts.map +1 -0
  105. package/dist/core/chart/analysis/key-levels-dataset.js +44 -0
  106. package/dist/core/chart/analysis/key-levels-dataset.js.map +1 -0
  107. package/dist/core/chart/analysis/ohlcv-input.d.ts +39 -0
  108. package/dist/core/chart/analysis/ohlcv-input.d.ts.map +1 -0
  109. package/dist/core/chart/analysis/ohlcv-input.js +89 -0
  110. package/dist/core/chart/analysis/ohlcv-input.js.map +1 -0
  111. package/dist/core/chart/analysis/ohlcv-live-merge.d.ts +39 -0
  112. package/dist/core/chart/analysis/ohlcv-live-merge.d.ts.map +1 -0
  113. package/dist/core/chart/analysis/ohlcv-live-merge.js +158 -0
  114. package/dist/core/chart/analysis/ohlcv-live-merge.js.map +1 -0
  115. package/dist/core/chart/analysis/time-series-analyze-tools.d.ts +98 -0
  116. package/dist/core/chart/analysis/time-series-analyze-tools.d.ts.map +1 -0
  117. package/dist/core/chart/analysis/time-series-analyze-tools.js +343 -0
  118. package/dist/core/chart/analysis/time-series-analyze-tools.js.map +1 -0
  119. package/dist/core/chart/analysis/time-series-input.d.ts +15 -0
  120. package/dist/core/chart/analysis/time-series-input.d.ts.map +1 -0
  121. package/dist/core/chart/analysis/time-series-input.js +155 -0
  122. package/dist/core/chart/analysis/time-series-input.js.map +1 -0
  123. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.d.ts +10 -0
  124. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.d.ts.map +1 -0
  125. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js +128 -0
  126. package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js.map +1 -0
  127. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +46 -0
  128. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -0
  129. package/dist/core/chart/analysis/trade-setups/build-trade.js +288 -0
  130. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -0
  131. package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.d.ts +50 -0
  132. package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.d.ts.map +1 -0
  133. package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.js +80 -0
  134. package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.js.map +1 -0
  135. package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.d.ts +56 -0
  136. package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.d.ts.map +1 -0
  137. package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.js +223 -0
  138. package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.js.map +1 -0
  139. package/dist/core/chart/analysis/trade-setups/index.d.ts +13 -0
  140. package/dist/core/chart/analysis/trade-setups/index.d.ts.map +1 -0
  141. package/dist/core/chart/analysis/trade-setups/index.js +13 -0
  142. package/dist/core/chart/analysis/trade-setups/index.js.map +1 -0
  143. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts +105 -0
  144. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts.map +1 -0
  145. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js +452 -0
  146. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js.map +1 -0
  147. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts +110 -0
  148. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts.map +1 -0
  149. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js +344 -0
  150. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js.map +1 -0
  151. package/dist/core/chart/analysis/trade-setups/momentum-trade-setup.d.ts +39 -0
  152. package/dist/core/chart/analysis/trade-setups/momentum-trade-setup.d.ts.map +1 -0
  153. package/dist/core/chart/analysis/trade-setups/momentum-trade-setup.js +64 -0
  154. package/dist/core/chart/analysis/trade-setups/momentum-trade-setup.js.map +1 -0
  155. package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.d.ts +42 -0
  156. package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.d.ts.map +1 -0
  157. package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.js +395 -0
  158. package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.js.map +1 -0
  159. package/dist/core/chart/analysis/trade-setups/shared.d.ts +21 -0
  160. package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -0
  161. package/dist/core/chart/analysis/trade-setups/shared.js +48 -0
  162. package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -0
  163. package/dist/core/chart/analysis/trade-setups/trade-consensus.d.ts +22 -0
  164. package/dist/core/chart/analysis/trade-setups/trade-consensus.d.ts.map +1 -0
  165. package/dist/core/chart/analysis/trade-setups/trade-consensus.js +95 -0
  166. package/dist/core/chart/analysis/trade-setups/trade-consensus.js.map +1 -0
  167. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts +11 -0
  168. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts.map +1 -0
  169. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js +13 -0
  170. package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js.map +1 -0
  171. package/dist/core/chart/analysis/trade-setups/trade-entry-gates.d.ts +40 -0
  172. package/dist/core/chart/analysis/trade-setups/trade-entry-gates.d.ts.map +1 -0
  173. package/dist/core/chart/analysis/trade-setups/trade-entry-gates.js +84 -0
  174. package/dist/core/chart/analysis/trade-setups/trade-entry-gates.js.map +1 -0
  175. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +46 -0
  176. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -0
  177. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +95 -0
  178. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -0
  179. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +72 -0
  180. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -0
  181. package/dist/core/chart/analysis/trade-setups/trade-idea.js +182 -0
  182. package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -0
  183. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +43 -0
  184. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -0
  185. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +183 -0
  186. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -0
  187. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts +59 -0
  188. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts.map +1 -0
  189. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js +138 -0
  190. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js.map +1 -0
  191. package/dist/core/chart/analysis/trend-line-drawings-tools.d.ts +56 -0
  192. package/dist/core/chart/analysis/trend-line-drawings-tools.d.ts.map +1 -0
  193. package/dist/core/chart/analysis/trend-line-drawings-tools.js +271 -0
  194. package/dist/core/chart/analysis/trend-line-drawings-tools.js.map +1 -0
  195. package/dist/core/chart/analysis/trend-line-menu-summary.d.ts +38 -0
  196. package/dist/core/chart/analysis/trend-line-menu-summary.d.ts.map +1 -0
  197. package/dist/core/chart/analysis/trend-line-menu-summary.js +94 -0
  198. package/dist/core/chart/analysis/trend-line-menu-summary.js.map +1 -0
  199. package/dist/core/chart/apply-chart-drawings.d.ts +3 -0
  200. package/dist/core/chart/apply-chart-drawings.d.ts.map +1 -1
  201. package/dist/core/chart/apply-chart-drawings.js +101 -31
  202. package/dist/core/chart/apply-chart-drawings.js.map +1 -1
  203. package/dist/core/chart/chart-agent-view.d.ts +4 -0
  204. package/dist/core/chart/chart-agent-view.d.ts.map +1 -0
  205. package/dist/core/chart/chart-agent-view.js +27 -0
  206. package/dist/core/chart/chart-agent-view.js.map +1 -0
  207. package/dist/core/chart/chart-data-validation.d.ts +63 -0
  208. package/dist/core/chart/chart-data-validation.d.ts.map +1 -0
  209. package/dist/core/chart/chart-data-validation.js +320 -0
  210. package/dist/core/chart/chart-data-validation.js.map +1 -0
  211. package/dist/core/chart/chart-ohlcv-load-status.d.ts +39 -0
  212. package/dist/core/chart/chart-ohlcv-load-status.d.ts.map +1 -0
  213. package/dist/core/chart/chart-ohlcv-load-status.js +281 -0
  214. package/dist/core/chart/chart-ohlcv-load-status.js.map +1 -0
  215. package/dist/core/chart/chart-ohlcv-summary.d.ts +58 -0
  216. package/dist/core/chart/chart-ohlcv-summary.d.ts.map +1 -0
  217. package/dist/core/chart/chart-ohlcv-summary.js +118 -0
  218. package/dist/core/chart/chart-ohlcv-summary.js.map +1 -0
  219. package/dist/core/chart/chart-pattern-session-store.d.ts +39 -0
  220. package/dist/core/chart/chart-pattern-session-store.d.ts.map +1 -0
  221. package/dist/core/chart/chart-pattern-session-store.js +94 -0
  222. package/dist/core/chart/chart-pattern-session-store.js.map +1 -0
  223. package/dist/core/chart/customization-catalog.d.ts.map +1 -1
  224. package/dist/core/chart/customization-catalog.js +8 -2
  225. package/dist/core/chart/customization-catalog.js.map +1 -1
  226. package/dist/core/chart/display-downsample.d.ts +9 -0
  227. package/dist/core/chart/display-downsample.d.ts.map +1 -0
  228. package/dist/core/chart/display-downsample.js +79 -0
  229. package/dist/core/chart/display-downsample.js.map +1 -0
  230. package/dist/core/chart/index.d.ts +2 -1
  231. package/dist/core/chart/index.d.ts.map +1 -1
  232. package/dist/core/chart/index.js +2 -1
  233. package/dist/core/chart/index.js.map +1 -1
  234. package/dist/core/chart/levels/calculate-tools.d.ts +8 -0
  235. package/dist/core/chart/levels/calculate-tools.d.ts.map +1 -1
  236. package/dist/core/chart/levels/calculate-tools.js +9 -3
  237. package/dist/core/chart/levels/calculate-tools.js.map +1 -1
  238. package/dist/core/chart/levels/trend-lines.d.ts +3 -0
  239. package/dist/core/chart/levels/trend-lines.d.ts.map +1 -1
  240. package/dist/core/chart/levels/trend-lines.js +6 -3
  241. package/dist/core/chart/levels/trend-lines.js.map +1 -1
  242. package/dist/core/chart/live/binding-extract.d.ts.map +1 -1
  243. package/dist/core/chart/live/binding-extract.js +10 -1
  244. package/dist/core/chart/live/binding-extract.js.map +1 -1
  245. package/dist/core/chart/live/fetch-tick.d.ts +4 -0
  246. package/dist/core/chart/live/fetch-tick.d.ts.map +1 -0
  247. package/dist/core/chart/live/fetch-tick.js +73 -0
  248. package/dist/core/chart/live/fetch-tick.js.map +1 -0
  249. package/dist/core/chart/live/index.d.ts +1 -0
  250. package/dist/core/chart/live/index.d.ts.map +1 -1
  251. package/dist/core/chart/live/index.js +1 -0
  252. package/dist/core/chart/live/index.js.map +1 -1
  253. package/dist/core/chart/ohlcv-integrity-messages.d.ts +5 -0
  254. package/dist/core/chart/ohlcv-integrity-messages.d.ts.map +1 -0
  255. package/dist/core/chart/ohlcv-integrity-messages.js +12 -0
  256. package/dist/core/chart/ohlcv-integrity-messages.js.map +1 -0
  257. package/dist/core/chart/ohlcv-integrity.d.ts +82 -0
  258. package/dist/core/chart/ohlcv-integrity.d.ts.map +1 -0
  259. package/dist/core/chart/ohlcv-integrity.js +266 -0
  260. package/dist/core/chart/ohlcv-integrity.js.map +1 -0
  261. package/dist/core/chart/ohlcv-session-store.d.ts +38 -0
  262. package/dist/core/chart/ohlcv-session-store.d.ts.map +1 -0
  263. package/dist/core/chart/ohlcv-session-store.js +107 -0
  264. package/dist/core/chart/ohlcv-session-store.js.map +1 -0
  265. package/dist/core/chart/ohlcv-window-expectations.d.ts +77 -0
  266. package/dist/core/chart/ohlcv-window-expectations.d.ts.map +1 -0
  267. package/dist/core/chart/ohlcv-window-expectations.js +426 -0
  268. package/dist/core/chart/ohlcv-window-expectations.js.map +1 -0
  269. package/dist/core/chart/ohlcv-window.d.ts +36 -0
  270. package/dist/core/chart/ohlcv-window.d.ts.map +1 -0
  271. package/dist/core/chart/ohlcv-window.js +238 -0
  272. package/dist/core/chart/ohlcv-window.js.map +1 -0
  273. package/dist/core/chart/overlay-schemas.d.ts +545 -0
  274. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  275. package/dist/core/chart/overlay-schemas.js +116 -1
  276. package/dist/core/chart/overlay-schemas.js.map +1 -1
  277. package/dist/core/chart/overlays.d.ts.map +1 -1
  278. package/dist/core/chart/overlays.js +283 -11
  279. package/dist/core/chart/overlays.js.map +1 -1
  280. package/dist/core/chart/point-normalize.d.ts.map +1 -1
  281. package/dist/core/chart/point-normalize.js +21 -14
  282. package/dist/core/chart/point-normalize.js.map +1 -1
  283. package/dist/core/chart/prepare-core.d.ts.map +1 -1
  284. package/dist/core/chart/prepare-core.js +5 -1
  285. package/dist/core/chart/prepare-core.js.map +1 -1
  286. package/dist/core/chart/prepare-from-rows.d.ts +202 -1
  287. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  288. package/dist/core/chart/prepare-from-rows.js +81 -11
  289. package/dist/core/chart/prepare-from-rows.js.map +1 -1
  290. package/dist/core/chart/schemas.d.ts +686 -6
  291. package/dist/core/chart/schemas.d.ts.map +1 -1
  292. package/dist/core/chart/schemas.js +49 -6
  293. package/dist/core/chart/schemas.js.map +1 -1
  294. package/dist/core/chart-patterns/atr.d.ts +15 -0
  295. package/dist/core/chart-patterns/atr.d.ts.map +1 -0
  296. package/dist/core/chart-patterns/atr.js +57 -0
  297. package/dist/core/chart-patterns/atr.js.map +1 -0
  298. package/dist/core/chart-patterns/catalog.d.ts +7 -0
  299. package/dist/core/chart-patterns/catalog.d.ts.map +1 -0
  300. package/dist/core/chart-patterns/catalog.js +221 -0
  301. package/dist/core/chart-patterns/catalog.js.map +1 -0
  302. package/dist/core/chart-patterns/confidence.d.ts +12 -0
  303. package/dist/core/chart-patterns/confidence.d.ts.map +1 -0
  304. package/dist/core/chart-patterns/confidence.js +58 -0
  305. package/dist/core/chart-patterns/confidence.js.map +1 -0
  306. package/dist/core/chart-patterns/drawing-spec.d.ts +44 -0
  307. package/dist/core/chart-patterns/drawing-spec.d.ts.map +1 -0
  308. package/dist/core/chart-patterns/drawing-spec.js +425 -0
  309. package/dist/core/chart-patterns/drawing-spec.js.map +1 -0
  310. package/dist/core/chart-patterns/geometry-to-overlay.d.ts +34 -0
  311. package/dist/core/chart-patterns/geometry-to-overlay.d.ts.map +1 -0
  312. package/dist/core/chart-patterns/geometry-to-overlay.js +401 -0
  313. package/dist/core/chart-patterns/geometry-to-overlay.js.map +1 -0
  314. package/dist/core/chart-patterns/index.d.ts +13 -0
  315. package/dist/core/chart-patterns/index.d.ts.map +1 -0
  316. package/dist/core/chart-patterns/index.js +12 -0
  317. package/dist/core/chart-patterns/index.js.map +1 -0
  318. package/dist/core/chart-patterns/interpretation.d.ts +6 -0
  319. package/dist/core/chart-patterns/interpretation.d.ts.map +1 -0
  320. package/dist/core/chart-patterns/interpretation.js +49 -0
  321. package/dist/core/chart-patterns/interpretation.js.map +1 -0
  322. package/dist/core/chart-patterns/measured-move.d.ts +3 -0
  323. package/dist/core/chart-patterns/measured-move.d.ts.map +1 -0
  324. package/dist/core/chart-patterns/measured-move.js +196 -0
  325. package/dist/core/chart-patterns/measured-move.js.map +1 -0
  326. package/dist/core/chart-patterns/pattern-enrich.d.ts +4 -0
  327. package/dist/core/chart-patterns/pattern-enrich.d.ts.map +1 -0
  328. package/dist/core/chart-patterns/pattern-enrich.js +20 -0
  329. package/dist/core/chart-patterns/pattern-enrich.js.map +1 -0
  330. package/dist/core/chart-patterns/pattern-id-aliases.d.ts +3 -0
  331. package/dist/core/chart-patterns/pattern-id-aliases.d.ts.map +1 -0
  332. package/dist/core/chart-patterns/pattern-id-aliases.js +17 -0
  333. package/dist/core/chart-patterns/pattern-id-aliases.js.map +1 -0
  334. package/dist/core/chart-patterns/pattern-menu-summary.d.ts +21 -0
  335. package/dist/core/chart-patterns/pattern-menu-summary.d.ts.map +1 -0
  336. package/dist/core/chart-patterns/pattern-menu-summary.js +68 -0
  337. package/dist/core/chart-patterns/pattern-menu-summary.js.map +1 -0
  338. package/dist/core/chart-patterns/patterns/channel.d.ts +4 -0
  339. package/dist/core/chart-patterns/patterns/channel.d.ts.map +1 -0
  340. package/dist/core/chart-patterns/patterns/channel.js +137 -0
  341. package/dist/core/chart-patterns/patterns/channel.js.map +1 -0
  342. package/dist/core/chart-patterns/patterns/cup-and-handle.d.ts +4 -0
  343. package/dist/core/chart-patterns/patterns/cup-and-handle.d.ts.map +1 -0
  344. package/dist/core/chart-patterns/patterns/cup-and-handle.js +89 -0
  345. package/dist/core/chart-patterns/patterns/cup-and-handle.js.map +1 -0
  346. package/dist/core/chart-patterns/patterns/doubles.d.ts +4 -0
  347. package/dist/core/chart-patterns/patterns/doubles.d.ts.map +1 -0
  348. package/dist/core/chart-patterns/patterns/doubles.js +163 -0
  349. package/dist/core/chart-patterns/patterns/doubles.js.map +1 -0
  350. package/dist/core/chart-patterns/patterns/flag.d.ts +4 -0
  351. package/dist/core/chart-patterns/patterns/flag.d.ts.map +1 -0
  352. package/dist/core/chart-patterns/patterns/flag.js +64 -0
  353. package/dist/core/chart-patterns/patterns/flag.js.map +1 -0
  354. package/dist/core/chart-patterns/patterns/head-and-shoulders.d.ts +5 -0
  355. package/dist/core/chart-patterns/patterns/head-and-shoulders.d.ts.map +1 -0
  356. package/dist/core/chart-patterns/patterns/head-and-shoulders.js +69 -0
  357. package/dist/core/chart-patterns/patterns/head-and-shoulders.js.map +1 -0
  358. package/dist/core/chart-patterns/patterns/inverse-head-and-shoulders.d.ts +4 -0
  359. package/dist/core/chart-patterns/patterns/inverse-head-and-shoulders.d.ts.map +1 -0
  360. package/dist/core/chart-patterns/patterns/inverse-head-and-shoulders.js +66 -0
  361. package/dist/core/chart-patterns/patterns/inverse-head-and-shoulders.js.map +1 -0
  362. package/dist/core/chart-patterns/patterns/pennant.d.ts +4 -0
  363. package/dist/core/chart-patterns/patterns/pennant.d.ts.map +1 -0
  364. package/dist/core/chart-patterns/patterns/pennant.js +66 -0
  365. package/dist/core/chart-patterns/patterns/pennant.js.map +1 -0
  366. package/dist/core/chart-patterns/patterns/trendline-breakout.d.ts +10 -0
  367. package/dist/core/chart-patterns/patterns/trendline-breakout.d.ts.map +1 -0
  368. package/dist/core/chart-patterns/patterns/trendline-breakout.js +241 -0
  369. package/dist/core/chart-patterns/patterns/trendline-breakout.js.map +1 -0
  370. package/dist/core/chart-patterns/patterns/triangles.d.ts +4 -0
  371. package/dist/core/chart-patterns/patterns/triangles.d.ts.map +1 -0
  372. package/dist/core/chart-patterns/patterns/triangles.js +113 -0
  373. package/dist/core/chart-patterns/patterns/triangles.js.map +1 -0
  374. package/dist/core/chart-patterns/patterns/utils.d.ts +20 -0
  375. package/dist/core/chart-patterns/patterns/utils.d.ts.map +1 -0
  376. package/dist/core/chart-patterns/patterns/utils.js +60 -0
  377. package/dist/core/chart-patterns/patterns/utils.js.map +1 -0
  378. package/dist/core/chart-patterns/patterns/wedge.d.ts +4 -0
  379. package/dist/core/chart-patterns/patterns/wedge.d.ts.map +1 -0
  380. package/dist/core/chart-patterns/patterns/wedge.js +88 -0
  381. package/dist/core/chart-patterns/patterns/wedge.js.map +1 -0
  382. package/dist/core/chart-patterns/recommendation.d.ts +5 -0
  383. package/dist/core/chart-patterns/recommendation.d.ts.map +1 -0
  384. package/dist/core/chart-patterns/recommendation.js +84 -0
  385. package/dist/core/chart-patterns/recommendation.js.map +1 -0
  386. package/dist/core/chart-patterns/scan.d.ts +5 -0
  387. package/dist/core/chart-patterns/scan.d.ts.map +1 -0
  388. package/dist/core/chart-patterns/scan.js +121 -0
  389. package/dist/core/chart-patterns/scan.js.map +1 -0
  390. package/dist/core/chart-patterns/smoothing.d.ts +10 -0
  391. package/dist/core/chart-patterns/smoothing.d.ts.map +1 -0
  392. package/dist/core/chart-patterns/smoothing.js +45 -0
  393. package/dist/core/chart-patterns/smoothing.js.map +1 -0
  394. package/dist/core/chart-patterns/swings.d.ts +12 -0
  395. package/dist/core/chart-patterns/swings.d.ts.map +1 -0
  396. package/dist/core/chart-patterns/swings.js +135 -0
  397. package/dist/core/chart-patterns/swings.js.map +1 -0
  398. package/dist/core/chart-patterns/trade-setup.d.ts +2 -0
  399. package/dist/core/chart-patterns/trade-setup.d.ts.map +1 -0
  400. package/dist/core/chart-patterns/trade-setup.js +2 -0
  401. package/dist/core/chart-patterns/trade-setup.js.map +1 -0
  402. package/dist/core/chart-patterns/types.d.ts +225 -0
  403. package/dist/core/chart-patterns/types.d.ts.map +1 -0
  404. package/dist/core/chart-patterns/types.js +2 -0
  405. package/dist/core/chart-patterns/types.js.map +1 -0
  406. package/dist/core/chart-patterns/volume-confirmation.d.ts +13 -0
  407. package/dist/core/chart-patterns/volume-confirmation.d.ts.map +1 -0
  408. package/dist/core/chart-patterns/volume-confirmation.js +172 -0
  409. package/dist/core/chart-patterns/volume-confirmation.js.map +1 -0
  410. package/dist/core/coinmarketcap/api-key.d.ts +8 -0
  411. package/dist/core/coinmarketcap/api-key.d.ts.map +1 -0
  412. package/dist/core/coinmarketcap/api-key.js +30 -0
  413. package/dist/core/coinmarketcap/api-key.js.map +1 -0
  414. package/dist/core/coinmarketcap/client.d.ts +8 -0
  415. package/dist/core/coinmarketcap/client.d.ts.map +1 -0
  416. package/dist/core/coinmarketcap/client.js +103 -0
  417. package/dist/core/coinmarketcap/client.js.map +1 -0
  418. package/dist/core/coinmarketcap/index.d.ts +7 -0
  419. package/dist/core/coinmarketcap/index.d.ts.map +1 -0
  420. package/dist/core/coinmarketcap/index.js +7 -0
  421. package/dist/core/coinmarketcap/index.js.map +1 -0
  422. package/dist/core/coinmarketcap/kline-fallback.d.ts +11 -0
  423. package/dist/core/coinmarketcap/kline-fallback.d.ts.map +1 -0
  424. package/dist/core/coinmarketcap/kline-fallback.js +35 -0
  425. package/dist/core/coinmarketcap/kline-fallback.js.map +1 -0
  426. package/dist/core/coinmarketcap/kline-window.d.ts +26 -0
  427. package/dist/core/coinmarketcap/kline-window.d.ts.map +1 -0
  428. package/dist/core/coinmarketcap/kline-window.js +75 -0
  429. package/dist/core/coinmarketcap/kline-window.js.map +1 -0
  430. package/dist/core/coinmarketcap/kline.d.ts +13 -0
  431. package/dist/core/coinmarketcap/kline.d.ts.map +1 -0
  432. package/dist/core/coinmarketcap/kline.js +49 -0
  433. package/dist/core/coinmarketcap/kline.js.map +1 -0
  434. package/dist/core/coinmarketcap/mcp-server-choice.d.ts +24 -0
  435. package/dist/core/coinmarketcap/mcp-server-choice.d.ts.map +1 -0
  436. package/dist/core/coinmarketcap/mcp-server-choice.js +77 -0
  437. package/dist/core/coinmarketcap/mcp-server-choice.js.map +1 -0
  438. package/dist/core/coinmarketcap/public-api.d.ts +24 -0
  439. package/dist/core/coinmarketcap/public-api.d.ts.map +1 -0
  440. package/dist/core/coinmarketcap/public-api.js +277 -0
  441. package/dist/core/coinmarketcap/public-api.js.map +1 -0
  442. package/dist/core/coinmarketcap/schemas.d.ts +231 -0
  443. package/dist/core/coinmarketcap/schemas.d.ts.map +1 -0
  444. package/dist/core/coinmarketcap/schemas.js +153 -0
  445. package/dist/core/coinmarketcap/schemas.js.map +1 -0
  446. package/dist/core/mpc/mpa-fee-status.d.ts +2 -0
  447. package/dist/core/mpc/mpa-fee-status.d.ts.map +1 -1
  448. package/dist/core/mpc/mpa-fee-status.js +8 -1
  449. package/dist/core/mpc/mpa-fee-status.js.map +1 -1
  450. package/dist/core/node-info.d.ts +3 -1
  451. package/dist/core/node-info.d.ts.map +1 -1
  452. package/dist/core/node-info.js +37 -1
  453. package/dist/core/node-info.js.map +1 -1
  454. package/dist/index.d.ts +6 -4
  455. package/dist/index.d.ts.map +1 -1
  456. package/dist/index.js +6 -4
  457. package/dist/index.js.map +1 -1
  458. package/dist/mcp/agent-chart-data-access-gate.d.ts +5 -0
  459. package/dist/mcp/agent-chart-data-access-gate.d.ts.map +1 -0
  460. package/dist/mcp/agent-chart-data-access-gate.js +20 -0
  461. package/dist/mcp/agent-chart-data-access-gate.js.map +1 -0
  462. package/dist/mcp/agent-environment-variables.d.ts.map +1 -1
  463. package/dist/mcp/agent-environment-variables.js +13 -2
  464. package/dist/mcp/agent-environment-variables.js.map +1 -1
  465. package/dist/mcp/agent-host-catalog.d.ts +27 -0
  466. package/dist/mcp/agent-host-catalog.d.ts.map +1 -0
  467. package/dist/mcp/agent-host-catalog.js +88 -0
  468. package/dist/mcp/agent-host-catalog.js.map +1 -0
  469. package/dist/mcp/agent-mcp-servers.d.ts.map +1 -1
  470. package/dist/mcp/agent-mcp-servers.js +32 -3
  471. package/dist/mcp/agent-mcp-servers.js.map +1 -1
  472. package/dist/mcp/agent-skills.d.ts.map +1 -1
  473. package/dist/mcp/agent-skills.js +13 -1
  474. package/dist/mcp/agent-skills.js.map +1 -1
  475. package/dist/mcp/chart.d.ts.map +1 -1
  476. package/dist/mcp/chart.js +282 -25
  477. package/dist/mcp/chart.js.map +1 -1
  478. package/dist/mcp/coinmarketcap-public/register.d.ts +6 -0
  479. package/dist/mcp/coinmarketcap-public/register.d.ts.map +1 -0
  480. package/dist/mcp/coinmarketcap-public/register.js +99 -0
  481. package/dist/mcp/coinmarketcap-public/register.js.map +1 -0
  482. package/dist/mcp/deferred/discovery-tools.d.ts +6 -0
  483. package/dist/mcp/deferred/discovery-tools.d.ts.map +1 -0
  484. package/dist/mcp/deferred/discovery-tools.js +138 -0
  485. package/dist/mcp/deferred/discovery-tools.js.map +1 -0
  486. package/dist/mcp/deferred/optional-endpoint-groups.d.ts +12 -0
  487. package/dist/mcp/deferred/optional-endpoint-groups.d.ts.map +1 -0
  488. package/dist/mcp/deferred/optional-endpoint-groups.js +51 -0
  489. package/dist/mcp/deferred/optional-endpoint-groups.js.map +1 -0
  490. package/dist/mcp/deferred/session.d.ts +56 -0
  491. package/dist/mcp/deferred/session.d.ts.map +1 -0
  492. package/dist/mcp/deferred/session.js +242 -0
  493. package/dist/mcp/deferred/session.js.map +1 -0
  494. package/dist/mcp/deferred/tool-group-map.d.ts +23 -0
  495. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -0
  496. package/dist/mcp/deferred/tool-group-map.js +317 -0
  497. package/dist/mcp/deferred/tool-group-map.js.map +1 -0
  498. package/dist/mcp/defi/context.d.ts +2 -0
  499. package/dist/mcp/defi/context.d.ts.map +1 -1
  500. package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts +30 -0
  501. package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -0
  502. package/dist/mcp/defi/defi-protocol-fetch-meta.js +76 -0
  503. package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -0
  504. package/dist/mcp/defi/discovery.d.ts +2 -1
  505. package/dist/mcp/defi/discovery.d.ts.map +1 -1
  506. package/dist/mcp/defi/discovery.js +46 -6
  507. package/dist/mcp/defi/discovery.js.map +1 -1
  508. package/dist/mcp/defi/handler.d.ts.map +1 -1
  509. package/dist/mcp/defi/handler.js +6 -3
  510. package/dist/mcp/defi/handler.js.map +1 -1
  511. package/dist/mcp/defi/input-adapter.d.ts +6 -0
  512. package/dist/mcp/defi/input-adapter.d.ts.map +1 -1
  513. package/dist/mcp/defi/input-adapter.js +29 -12
  514. package/dist/mcp/defi/input-adapter.js.map +1 -1
  515. package/dist/mcp/defi/ohlcv-chart-workflow.d.ts +5 -1
  516. package/dist/mcp/defi/ohlcv-chart-workflow.d.ts.map +1 -1
  517. package/dist/mcp/defi/ohlcv-chart-workflow.js +28 -6
  518. package/dist/mcp/defi/ohlcv-chart-workflow.js.map +1 -1
  519. package/dist/mcp/defi/register-protocol-tools.d.ts +2 -1
  520. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  521. package/dist/mcp/defi/register-protocol-tools.js +12 -3
  522. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  523. package/dist/mcp/defi/trade-bridge.d.ts +2 -0
  524. package/dist/mcp/defi/trade-bridge.d.ts.map +1 -0
  525. package/dist/mcp/defi/trade-bridge.js +2 -0
  526. package/dist/mcp/defi/trade-bridge.js.map +1 -0
  527. package/dist/mcp/keygen.js +1 -1
  528. package/dist/mcp/keygen.js.map +1 -1
  529. package/dist/mcp/management-signer.d.ts.map +1 -1
  530. package/dist/mcp/management-signer.js +1 -1
  531. package/dist/mcp/management-signer.js.map +1 -1
  532. package/dist/mcp/node.d.ts.map +1 -1
  533. package/dist/mcp/node.js +7 -2
  534. package/dist/mcp/node.js.map +1 -1
  535. package/dist/mcp/ohlcv-session-context.d.ts +4 -0
  536. package/dist/mcp/ohlcv-session-context.d.ts.map +1 -0
  537. package/dist/mcp/ohlcv-session-context.js +13 -0
  538. package/dist/mcp/ohlcv-session-context.js.map +1 -0
  539. package/dist/mcp/ohlcv-session-wrapper.d.ts +8 -0
  540. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -0
  541. package/dist/mcp/ohlcv-session-wrapper.js +138 -0
  542. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -0
  543. package/dist/mcp/register.d.ts +3 -1
  544. package/dist/mcp/register.d.ts.map +1 -1
  545. package/dist/mcp/register.js +24 -5
  546. package/dist/mcp/register.js.map +1 -1
  547. package/dist/mcp/resources/agent-cron-jobs.md +25 -0
  548. package/dist/mcp/resources/agent-mcp-servers.md +21 -0
  549. package/dist/mcp/resources/chart-analysis.md +368 -0
  550. package/dist/mcp/resources/chart.md +71 -24
  551. package/dist/mcp/resources/coinmarketcap-public.md +109 -0
  552. package/dist/mcp/resources/keygen.md +1 -1
  553. package/dist/mcp/resources/trade-defaults-skill.md +69 -0
  554. package/dist/mcp/server/http-transport.d.ts.map +1 -1
  555. package/dist/mcp/server/http-transport.js +9 -2
  556. package/dist/mcp/server/http-transport.js.map +1 -1
  557. package/dist/mcp/server/index.js +3 -0
  558. package/dist/mcp/server/index.js.map +1 -1
  559. package/dist/mcp/tool-utils.d.ts.map +1 -1
  560. package/dist/mcp/tool-utils.js +7 -1
  561. package/dist/mcp/tool-utils.js.map +1 -1
  562. package/dist/mcp/trade-tools.d.ts +7 -0
  563. package/dist/mcp/trade-tools.d.ts.map +1 -0
  564. package/dist/mcp/trade-tools.js +201 -0
  565. package/dist/mcp/trade-tools.js.map +1 -0
  566. package/dist/schemas/extended.d.ts +30 -0
  567. package/dist/schemas/extended.d.ts.map +1 -1
  568. package/dist/schemas/extended.js +40 -0
  569. package/dist/schemas/extended.js.map +1 -1
  570. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-integrity-messages.js","sourceRoot":"","sources":["../../../src/core/chart/ohlcv-integrity-messages.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GACjC,0IAA0I;IAC1I,iFAAiF;IACjF,sGAAsG;IACtG,2LAA2L;IAC3L,8EAA8E,CAAC;AAEhF,MAAM,CAAC,MAAM,4BAA4B,GACxC,iMAAiM,CAAC;AAEnM,4FAA4F;AAC5F,MAAM,CAAC,MAAM,+BAA+B,GAC3C,oEAAoE;IACpE,gIAAgI;IAChI,0EAA0E;IAC1E,+EAA+E,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ import type { SdkResult } from '../result.js';
3
+ import type { ChartOhlcvSummary } from './chart-ohlcv-summary.js';
4
+ export declare const OhlcvFingerprintSchema: z.ZodObject<{
5
+ version: z.ZodLiteral<1>;
6
+ barCount: z.ZodNumber;
7
+ timeStartSec: z.ZodNumber;
8
+ timeEndSec: z.ZodNumber;
9
+ low: z.ZodNumber;
10
+ high: z.ZodNumber;
11
+ lastClose: z.ZodNumber;
12
+ digest: z.ZodString;
13
+ }, z.core.$strict>;
14
+ export type OhlcvFingerprint = z.infer<typeof OhlcvFingerprintSchema>;
15
+ export type InvalidOhlcvBarReport = {
16
+ index: number;
17
+ timeSec: number | null;
18
+ open: number;
19
+ high: number;
20
+ low: number;
21
+ close: number;
22
+ issues: string[];
23
+ };
24
+ export { ANALYSIS_FOLLOWUP_SAME_FETCH, OHLCV_TRUNCATION_MYTH } from './ohlcv-integrity-messages.js';
25
+ export { OhlcvFetchContextSchema, OhlcvWindowExpectationSchema, formatWindowExpectation, parseIntervalLabelFromChartTitle, parseLookbackDaysFromChartTitle, parseLookbackSpanFromChartTitle, rejectIntervalMismatchTitleVsFetch, rejectOhlcvWindowBarCountMismatch, rejectOhlcvWindowMismatch, rejectTitleLookbackBarCountMismatch, rejectTitleLookbackMismatchVsFetch, resolveOhlcvFetchContext, resolveOhlcvWindowExpectation, type OhlcvFetchContext, type OhlcvWindowExpectation, type LookbackSpan, } from './ohlcv-window-expectations.js';
26
+ export declare const ROWS_ONLY_WITHOUT_TOOL_RESULT_REASON: string;
27
+ /** Reject hand-copied rows when no fetch payload is present (all vendors). */
28
+ export declare function rejectRowsOnlyWithoutFetch(input: {
29
+ toolResult?: unknown;
30
+ executeResult?: unknown;
31
+ fetchResult?: unknown;
32
+ rows?: unknown[];
33
+ allowRowsOnly?: boolean;
34
+ }): {
35
+ ok: true;
36
+ } | {
37
+ ok: false;
38
+ reason: string;
39
+ };
40
+ /** Validate every bar: structural OHLC + wick/outlier heuristics (all data sources). */
41
+ export declare function validateOhlcvBarIntegrity(bars: Record<string, unknown>[], options?: {
42
+ maxReport?: number;
43
+ }): {
44
+ ok: true;
45
+ } | {
46
+ ok: false;
47
+ reason: string;
48
+ invalidBars: InvalidOhlcvBarReport[];
49
+ };
50
+ export declare function buildOhlcvFingerprint(bars: Record<string, unknown>[]): OhlcvFingerprint | null;
51
+ export declare const APPLY_PATTERN_DRAWINGS_WORKFLOW = "Add a classic pattern overlay with ONE call to apply_chart_pattern_drawings: pass `prepareReplay` + `live` from the prior chart, `analysis` (or patternId/drawings), and `{ title, ohlcvDigest }` from meta.sessionBind (or full fetch toolResult once). Do NOT call prepare_chart_from_rows again.";
52
+ export declare function rejectApplyPatternDrawingsWithoutChartContext(input: {
53
+ toolResult?: unknown;
54
+ prepareReplay?: unknown;
55
+ rows?: unknown[];
56
+ }): {
57
+ ok: true;
58
+ } | {
59
+ ok: false;
60
+ reason: string;
61
+ };
62
+ /** Tolerance for pattern geometry vs OHLCV summary (smoothed swings / live mark may slightly exceed bar wicks). */
63
+ export declare function geometryToleranceForOhlcvSummary(summary: ChartOhlcvSummary): number;
64
+ /** Hard-fail when referenced prices are outside the loaded bar range (mixed fetches). */
65
+ export declare function rejectGeometryOutsideOhlcvSummary(summary: ChartOhlcvSummary, prices: number[], tolerance?: number): {
66
+ ok: true;
67
+ } | {
68
+ ok: false;
69
+ reason: string;
70
+ };
71
+ export type OhlcvPipelineInput = {
72
+ toolResult?: unknown;
73
+ executeResult?: unknown;
74
+ fetchResult?: unknown;
75
+ rows?: unknown[];
76
+ allowRowsOnly?: boolean;
77
+ };
78
+ /** Provenance + per-bar integrity — run before chart prep or analysis. */
79
+ export declare function runOhlcvIntegrityPipeline(bars: Record<string, unknown>[], input: OhlcvPipelineInput): SdkResult<{
80
+ fingerprint: OhlcvFingerprint | null;
81
+ }>;
82
+ //# sourceMappingURL=ohlcv-integrity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-integrity.d.ts","sourceRoot":"","sources":["../../../src/core/chart/ohlcv-integrity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { z } from 'zod';
2
+ import { summarizeOhlcvBars } from './chart-ohlcv-summary.js';
3
+ import { normalizeCandleRow, parseChartTimeFromRow } from './point-normalize.js';
4
+ /** Body mid this many × median range away from prior bar → stale/wrong slice. */
5
+ const STALE_BODY_GAP_MULTIPLIER = 3;
6
+ /** Wick must exceed body by this factor before a stale-body composite is considered. */
7
+ const MIN_WICK_BODY_RATIO_FOR_COMPOSITE = 8;
8
+ /** Wick extreme must land within this × median range of the prior bar high/low. */
9
+ const WICK_NEAR_PRIOR_RANGE_MULTIPLIER = 4;
10
+ const MIN_BARS_FOR_MEDIAN = 8;
11
+ export const OhlcvFingerprintSchema = z
12
+ .object({
13
+ version: z.literal(1),
14
+ barCount: z.number().int(),
15
+ timeStartSec: z.number(),
16
+ timeEndSec: z.number(),
17
+ low: z.number(),
18
+ high: z.number(),
19
+ lastClose: z.number(),
20
+ /** Stable id — compare across chart + analyze on the same fetch. */
21
+ digest: z.string(),
22
+ })
23
+ .strict();
24
+ export { ANALYSIS_FOLLOWUP_SAME_FETCH, OHLCV_TRUNCATION_MYTH } from './ohlcv-integrity-messages.js';
25
+ export { OhlcvFetchContextSchema, OhlcvWindowExpectationSchema, formatWindowExpectation, parseIntervalLabelFromChartTitle, parseLookbackDaysFromChartTitle, parseLookbackSpanFromChartTitle, rejectIntervalMismatchTitleVsFetch, rejectOhlcvWindowBarCountMismatch, rejectOhlcvWindowMismatch, rejectTitleLookbackBarCountMismatch, rejectTitleLookbackMismatchVsFetch, resolveOhlcvFetchContext, resolveOhlcvWindowExpectation, } from './ohlcv-window-expectations.js';
26
+ export const ROWS_ONLY_WITHOUT_TOOL_RESULT_REASON = 'OHLCV `rows` without fetch `toolResult` are not trusted for charts or analysis. ' +
27
+ 'Re-run the OHLCV fetch and pass the full MCP JSON as `toolResult` unchanged (Hyperliquid, GMX, CoinGecko, CMC, etc.). ' +
28
+ 'Do not hand-copy candle arrays into chat or `rows`.';
29
+ function hasFetchPayload(input) {
30
+ return (input.toolResult != null || input.executeResult != null || input.fetchResult != null);
31
+ }
32
+ /** Reject hand-copied rows when no fetch payload is present (all vendors). */
33
+ export function rejectRowsOnlyWithoutFetch(input) {
34
+ if (input.allowRowsOnly) {
35
+ return { ok: true };
36
+ }
37
+ const hasRows = Array.isArray(input.rows) && input.rows.length > 0;
38
+ if (hasRows && !hasFetchPayload(input)) {
39
+ return { ok: false, reason: ROWS_ONLY_WITHOUT_TOOL_RESULT_REASON };
40
+ }
41
+ return { ok: true };
42
+ }
43
+ function formatTimeSec(timeSec) {
44
+ if (timeSec == null) {
45
+ return '?';
46
+ }
47
+ return new Date(timeSec * 1000).toISOString();
48
+ }
49
+ function structuralOhlcIssues(open, high, low, close) {
50
+ const issues = [];
51
+ if (high < low) {
52
+ issues.push('high < low');
53
+ }
54
+ if (high < open) {
55
+ issues.push('high < open');
56
+ }
57
+ if (high < close) {
58
+ issues.push('high < close');
59
+ }
60
+ if (low > open) {
61
+ issues.push('low > open');
62
+ }
63
+ if (low > close) {
64
+ issues.push('low > close');
65
+ }
66
+ return issues;
67
+ }
68
+ /** Stale body at wrong price level while wick reaches prior-bar range (mixed feed composite). */
69
+ function staleCompositeIssues(open, high, low, close, prev, medianRange) {
70
+ if (!prev || medianRange == null || medianRange <= 0) {
71
+ return [];
72
+ }
73
+ const body = Math.abs(close - open);
74
+ const mid = (open + close) / 2;
75
+ const minBody = Math.max(mid * 1e-4, 1e-6);
76
+ const prevMid = (prev.open + prev.close) / 2;
77
+ const bodyGap = Math.abs(mid - prevMid);
78
+ if (bodyGap <= medianRange * STALE_BODY_GAP_MULTIPLIER) {
79
+ return [];
80
+ }
81
+ const issues = [];
82
+ const upperWick = high - Math.max(open, close);
83
+ const lowerWick = Math.min(open, close) - low;
84
+ const nearPrior = medianRange * WICK_NEAR_PRIOR_RANGE_MULTIPLIER;
85
+ if (body >= minBody && upperWick > body * MIN_WICK_BODY_RATIO_FOR_COMPOSITE) {
86
+ if (high >= prev.high - nearPrior && high <= prev.high + nearPrior) {
87
+ issues.push(`body near ${mid.toFixed(1)} but high ${high.toFixed(1)} matches prior bar while body gap is ${bodyGap.toFixed(1)} — likely stale/mixed composite OHLC`);
88
+ }
89
+ }
90
+ if (body >= minBody && lowerWick > body * MIN_WICK_BODY_RATIO_FOR_COMPOSITE) {
91
+ if (low <= prev.low + nearPrior && low >= prev.low - nearPrior) {
92
+ issues.push(`body near ${mid.toFixed(1)} but low ${low.toFixed(1)} matches prior bar while body gap is ${bodyGap.toFixed(1)} — likely stale/mixed composite OHLC`);
93
+ }
94
+ }
95
+ return issues;
96
+ }
97
+ function medianBarRange(candles) {
98
+ if (candles.length < MIN_BARS_FOR_MEDIAN) {
99
+ return null;
100
+ }
101
+ const ranges = candles.map(c => c.high - c.low).filter(r => r > 0).sort((a, b) => a - b);
102
+ if (!ranges.length) {
103
+ return null;
104
+ }
105
+ const mid = Math.floor(ranges.length / 2);
106
+ return ranges.length % 2 ? ranges[mid] : (ranges[mid - 1] + ranges[mid]) / 2;
107
+ }
108
+ /** Validate every bar: structural OHLC + wick/outlier heuristics (all data sources). */
109
+ export function validateOhlcvBarIntegrity(bars, options = {}) {
110
+ const normalized = [];
111
+ for (let index = 0; index < bars.length; index++) {
112
+ const candle = normalizeCandleRow(bars[index]);
113
+ if (!candle) {
114
+ continue;
115
+ }
116
+ const timeSec = typeof candle.time === 'number'
117
+ ? candle.time
118
+ : parseChartTimeFromRow(bars[index]);
119
+ normalized.push({
120
+ index,
121
+ timeSec: typeof timeSec === 'number' ? timeSec : null,
122
+ open: candle.open,
123
+ high: candle.high,
124
+ low: candle.low,
125
+ close: candle.close,
126
+ });
127
+ }
128
+ const medianRange = medianBarRange(normalized);
129
+ const invalidBars = [];
130
+ const maxReport = options.maxReport ?? 3;
131
+ for (let i = 0; i < normalized.length; i++) {
132
+ const bar = normalized[i];
133
+ const prev = i > 0 ? normalized[i - 1] : null;
134
+ const issues = [
135
+ ...structuralOhlcIssues(bar.open, bar.high, bar.low, bar.close),
136
+ ...staleCompositeIssues(bar.open, bar.high, bar.low, bar.close, prev, medianRange),
137
+ ];
138
+ if (issues.length) {
139
+ invalidBars.push({
140
+ index: bar.index,
141
+ timeSec: bar.timeSec,
142
+ open: bar.open,
143
+ high: bar.high,
144
+ low: bar.low,
145
+ close: bar.close,
146
+ issues,
147
+ });
148
+ }
149
+ }
150
+ if (!invalidBars.length) {
151
+ return { ok: true };
152
+ }
153
+ const sample = invalidBars.slice(0, maxReport);
154
+ const detail = sample
155
+ .map(b => `bar #${b.index + 1} (${formatTimeSec(b.timeSec)} O=${b.open} H=${b.high} L=${b.low} C=${b.close}): ${b.issues.join('; ')}`)
156
+ .join(' | ');
157
+ return {
158
+ ok: false,
159
+ reason: `Invalid or corrupt OHLCV (${invalidBars.length} bar(s)): ${detail}. ` +
160
+ 'Re-fetch OHLCV and pass the full fetch toolResult unchanged — do not hand-copy rows.',
161
+ invalidBars,
162
+ };
163
+ }
164
+ export function buildOhlcvFingerprint(bars) {
165
+ const summary = summarizeOhlcvBars(bars);
166
+ if (!summary) {
167
+ return null;
168
+ }
169
+ let firstAnchor = '';
170
+ let lastAnchor = '';
171
+ for (const raw of bars) {
172
+ const c = normalizeCandleRow(raw);
173
+ if (!c || typeof c.time !== 'number') {
174
+ continue;
175
+ }
176
+ const anchor = `${c.time}:${c.open.toFixed(4)}:${c.high.toFixed(4)}:${c.low.toFixed(4)}:${c.close.toFixed(4)}`;
177
+ if (!firstAnchor) {
178
+ firstAnchor = anchor;
179
+ }
180
+ lastAnchor = anchor;
181
+ }
182
+ const digest = [
183
+ summary.barCount,
184
+ summary.timeStartSec,
185
+ summary.timeEndSec,
186
+ summary.low.toFixed(2),
187
+ summary.high.toFixed(2),
188
+ summary.lastClose.toFixed(2),
189
+ firstAnchor,
190
+ lastAnchor,
191
+ ].join('|');
192
+ return {
193
+ version: 1,
194
+ barCount: summary.barCount,
195
+ timeStartSec: summary.timeStartSec,
196
+ timeEndSec: summary.timeEndSec,
197
+ low: summary.low,
198
+ high: summary.high,
199
+ lastClose: summary.lastClose,
200
+ digest: `v1:${digest}`,
201
+ };
202
+ }
203
+ export const APPLY_PATTERN_DRAWINGS_WORKFLOW = 'Add a classic pattern overlay with ONE call to apply_chart_pattern_drawings: pass `prepareReplay` + `live` from the prior chart, `analysis` (or patternId/drawings), and `{ title, ohlcvDigest }` from meta.sessionBind (or full fetch toolResult once). Do NOT call prepare_chart_from_rows again.';
204
+ export function rejectApplyPatternDrawingsWithoutChartContext(input) {
205
+ const hasReplay = input.prepareReplay != null &&
206
+ typeof input.prepareReplay === 'object' &&
207
+ !Array.isArray(input.prepareReplay);
208
+ const hasFetch = input.toolResult != null;
209
+ const hasRows = Array.isArray(input.rows) && input.rows.length > 0;
210
+ if (!hasFetch && !hasRows) {
211
+ return {
212
+ ok: false,
213
+ reason: 'Missing OHLCV data for pattern overlay. Pass `toolResult` from the original fetch (preferred) or `rows` from that fetch. ' +
214
+ APPLY_PATTERN_DRAWINGS_WORKFLOW,
215
+ };
216
+ }
217
+ if (!hasReplay && !hasFetch) {
218
+ return {
219
+ ok: false,
220
+ reason: 'Missing `prepareReplay` from the prior chart. Pass `prepareReplay` (and `live` when present) from prepare_chart_from_rows output — do not recreate the chart. ' +
221
+ APPLY_PATTERN_DRAWINGS_WORKFLOW,
222
+ };
223
+ }
224
+ return { ok: true };
225
+ }
226
+ const GEOMETRY_MISMATCH_FAIL = 'Pattern geometry prices fall outside loaded OHLCV summary — analysis and chart likely use different data. ' +
227
+ 'Re-fetch once and pass the same full toolResult to prepare_chart_from_rows and analyze_* (compare meta.ohlcvFingerprint).';
228
+ /** Tolerance for pattern geometry vs OHLCV summary (smoothed swings / live mark may slightly exceed bar wicks). */
229
+ export function geometryToleranceForOhlcvSummary(summary) {
230
+ return Math.max(0.5, summary.high * 0.02);
231
+ }
232
+ /** Hard-fail when referenced prices are outside the loaded bar range (mixed fetches). */
233
+ export function rejectGeometryOutsideOhlcvSummary(summary, prices, tolerance) {
234
+ const effectiveTolerance = tolerance ?? geometryToleranceForOhlcvSummary(summary);
235
+ if (!prices.length) {
236
+ return { ok: true };
237
+ }
238
+ const max = Math.max(...prices);
239
+ const min = Math.min(...prices);
240
+ if (max > summary.high + effectiveTolerance) {
241
+ return {
242
+ ok: false,
243
+ reason: `Referenced price ${max.toFixed(2)} is above loaded OHLCV high ${summary.high.toFixed(2)}. ${GEOMETRY_MISMATCH_FAIL}`,
244
+ };
245
+ }
246
+ if (min < summary.low - effectiveTolerance) {
247
+ return {
248
+ ok: false,
249
+ reason: `Referenced price ${min.toFixed(2)} is below loaded OHLCV low ${summary.low.toFixed(2)}. ${GEOMETRY_MISMATCH_FAIL}`,
250
+ };
251
+ }
252
+ return { ok: true };
253
+ }
254
+ /** Provenance + per-bar integrity — run before chart prep or analysis. */
255
+ export function runOhlcvIntegrityPipeline(bars, input) {
256
+ const provenance = rejectRowsOnlyWithoutFetch(input);
257
+ if (!provenance.ok) {
258
+ return provenance;
259
+ }
260
+ const integrity = validateOhlcvBarIntegrity(bars);
261
+ if (!integrity.ok) {
262
+ return { ok: false, reason: integrity.reason };
263
+ }
264
+ return { ok: true, data: { fingerprint: buildOhlcvFingerprint(bars) } };
265
+ }
266
+ //# sourceMappingURL=ohlcv-integrity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-integrity.js","sourceRoot":"","sources":["../../../src/core/chart/ohlcv-integrity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { SdkResult } from '../result.js';
2
+ import { type OhlcvFingerprint } from './ohlcv-integrity.js';
3
+ export type BoundOhlcvFetch = {
4
+ toolResult: unknown;
5
+ fingerprint: OhlcvFingerprint | null;
6
+ title?: string;
7
+ boundAt: number;
8
+ };
9
+ export type OhlcvSessionResolveInput = {
10
+ toolResult?: unknown;
11
+ rows?: unknown;
12
+ title?: string;
13
+ ohlcvDigest?: string;
14
+ allowRowsOnly?: boolean;
15
+ };
16
+ export type OhlcvSessionBindHint = {
17
+ ohlcvDigest: string;
18
+ title?: string;
19
+ reuseInput: {
20
+ title?: string;
21
+ ohlcvDigest: string;
22
+ };
23
+ };
24
+ export declare function clearOhlcvSession(sessionKey: string): void;
25
+ export declare function getBoundOhlcvFetch(sessionKey: string): BoundOhlcvFetch | undefined;
26
+ /** Store the latest OHLCV fetch for a session (fetch, chart, or analyze with full toolResult). */
27
+ export declare function bindOhlcvSessionFetch(sessionKey: string, toolResult: unknown, options?: {
28
+ title?: string;
29
+ fingerprint?: OhlcvFingerprint | null;
30
+ }): BoundOhlcvFetch | null;
31
+ export declare function buildOhlcvSessionBindHint(bound: BoundOhlcvFetch): OhlcvSessionBindHint | undefined;
32
+ /** Strip trailing parenthetical suffixes so "ETH 1H — last 7d" matches "ETH 1H — last 7d (Hyperliquid)". */
33
+ export declare function normalizeOhlcvSessionTitle(title: string): string;
34
+ /** Resolve MCP input: inject bound toolResult from session when only title/digest provided. */
35
+ export declare function resolveOhlcvSessionInput(sessionKey: string, input: OhlcvSessionResolveInput): SdkResult<OhlcvSessionResolveInput & {
36
+ toolResult?: unknown;
37
+ }>;
38
+ //# sourceMappingURL=ohlcv-session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-session-store.d.ts","sourceRoot":"","sources":["../../../src/core/chart/ohlcv-session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAwB,KAAK,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAGlF,MAAM,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC;CAClD,CAAC;AAIF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAElF;AAUD,kGAAkG;AAClG,wBAAgB,qBAAqB,CACpC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAM,GACnE,eAAe,GAAG,IAAI,CAcxB;AAED,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,eAAe,GACpB,oBAAoB,GAAG,SAAS,CAalC;AAQD,4GAA4G;AAC5G,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAgBD,+FAA+F;AAC/F,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,wBAAwB,GAC7B,SAAS,CAAC,wBAAwB,GAAG;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC,CAgD9D"}
@@ -0,0 +1,107 @@
1
+ import { extractOhlcvBarsFromUnknown } from './fetch-result.js';
2
+ import { buildOhlcvFingerprint } from './ohlcv-integrity.js';
3
+ import { invalidStringToolResultReason, isUnparsedJsonString } from './ohlcv-window.js';
4
+ const store = new Map();
5
+ export function clearOhlcvSession(sessionKey) {
6
+ store.delete(sessionKey);
7
+ }
8
+ export function getBoundOhlcvFetch(sessionKey) {
9
+ return store.get(sessionKey);
10
+ }
11
+ function fingerprintFromToolResult(toolResult) {
12
+ const bars = extractOhlcvBarsFromUnknown(toolResult, { maxPoints: 10_000 });
13
+ if (!bars?.length) {
14
+ return null;
15
+ }
16
+ return buildOhlcvFingerprint(bars);
17
+ }
18
+ /** Store the latest OHLCV fetch for a session (fetch, chart, or analyze with full toolResult). */
19
+ export function bindOhlcvSessionFetch(sessionKey, toolResult, options = {}) {
20
+ if (toolResult == null || typeof toolResult !== 'object') {
21
+ return null;
22
+ }
23
+ const fingerprint = options.fingerprint ?? fingerprintFromToolResult(toolResult);
24
+ const bound = {
25
+ toolResult,
26
+ fingerprint,
27
+ ...(options.title?.trim() ? { title: options.title.trim() } : {}),
28
+ boundAt: Date.now(),
29
+ };
30
+ store.set(sessionKey, bound);
31
+ return bound;
32
+ }
33
+ export function buildOhlcvSessionBindHint(bound) {
34
+ const digest = bound.fingerprint?.digest;
35
+ if (!digest) {
36
+ return undefined;
37
+ }
38
+ return {
39
+ ohlcvDigest: digest,
40
+ ...(bound.title ? { title: bound.title } : {}),
41
+ reuseInput: {
42
+ ...(bound.title ? { title: bound.title } : {}),
43
+ ohlcvDigest: digest,
44
+ },
45
+ };
46
+ }
47
+ const DIGEST_MISMATCH_REASON = '`ohlcvDigest` does not match the bound session fetch. Pass the digest from the prior chart/analyze meta.sessionBind, or pass the full fetch object once after re-fetching.';
48
+ const SESSION_MISS_REASON = 'No OHLCV in this request and no bound fetch in this session. Run fetch_ohlcv once, then pass `{ title, ohlcvDigest }` from meta.sessionBind on follow-ups — do not re-paste candle JSON.';
49
+ /** Strip trailing parenthetical suffixes so "ETH 1H — last 7d" matches "ETH 1H — last 7d (Hyperliquid)". */
50
+ export function normalizeOhlcvSessionTitle(title) {
51
+ return title.trim().replace(/\s*\([^)]*\)\s*$/u, '').trim();
52
+ }
53
+ function ohlcvSessionTitlesCompatible(requested, bound) {
54
+ const req = requested?.trim();
55
+ const bnd = bound?.trim();
56
+ if (!req || !bnd) {
57
+ return true;
58
+ }
59
+ if (req === bnd) {
60
+ return true;
61
+ }
62
+ const reqNorm = normalizeOhlcvSessionTitle(req);
63
+ const bndNorm = normalizeOhlcvSessionTitle(bnd);
64
+ return reqNorm === bndNorm || bndNorm.startsWith(reqNorm) || reqNorm.startsWith(bndNorm);
65
+ }
66
+ /** Resolve MCP input: inject bound toolResult from session when only title/digest provided. */
67
+ export function resolveOhlcvSessionInput(sessionKey, input) {
68
+ if (input.toolResult != null) {
69
+ if (typeof input.toolResult === 'string') {
70
+ if (isUnparsedJsonString(input.toolResult)) {
71
+ return { ok: false, reason: invalidStringToolResultReason() };
72
+ }
73
+ return {
74
+ ok: false,
75
+ reason: '`toolResult` must be the fetch JSON object, not a string. On follow-ups pass `{ title, ohlcvDigest }` from meta.sessionBind instead of re-pasting fetch JSON.',
76
+ };
77
+ }
78
+ return { ok: true, data: input };
79
+ }
80
+ if (Array.isArray(input.rows) && input.rows.length > 0) {
81
+ return { ok: true, data: input };
82
+ }
83
+ const bound = store.get(sessionKey);
84
+ if (!bound) {
85
+ return { ok: false, reason: SESSION_MISS_REASON };
86
+ }
87
+ const requestedDigest = input.ohlcvDigest?.trim();
88
+ if (requestedDigest && bound.fingerprint?.digest !== requestedDigest) {
89
+ return { ok: false, reason: DIGEST_MISMATCH_REASON };
90
+ }
91
+ if (input.title?.trim() &&
92
+ bound.title &&
93
+ !ohlcvSessionTitlesCompatible(input.title, bound.title)) {
94
+ return {
95
+ ok: false,
96
+ reason: '`title` does not match the bound session fetch. Use the same title as the chart step, or pass matching meta.ohlcvFingerprint.digest via `ohlcvDigest`.',
97
+ };
98
+ }
99
+ return {
100
+ ok: true,
101
+ data: {
102
+ ...input,
103
+ toolResult: bound.toolResult,
104
+ },
105
+ };
106
+ }
107
+ //# sourceMappingURL=ohlcv-session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-session-store.js","sourceRoot":"","sources":["../../../src/core/chart/ohlcv-session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { z } from 'zod';
2
+ export type LookbackSpan = {
3
+ label: string;
4
+ spanSec: number;
5
+ };
6
+ export declare const OhlcvFetchContextSchema: z.ZodObject<{
7
+ interval: z.ZodNullable<z.ZodString>;
8
+ intervalSec: z.ZodNullable<z.ZodNumber>;
9
+ lookbackDays: z.ZodNullable<z.ZodNumber>;
10
+ lookbackHours: z.ZodNullable<z.ZodNumber>;
11
+ lookbackLabel: z.ZodNullable<z.ZodString>;
12
+ coin: z.ZodNullable<z.ZodString>;
13
+ declaredBarCount: z.ZodNullable<z.ZodNumber>;
14
+ windowExpectedBarCount: z.ZodNullable<z.ZodNumber>;
15
+ expectedBarCount: z.ZodNullable<z.ZodNumber>;
16
+ }, z.core.$strict>;
17
+ export type OhlcvFetchContext = z.infer<typeof OhlcvFetchContextSchema>;
18
+ export declare const OhlcvWindowExpectationSchema: z.ZodObject<{
19
+ interval: z.ZodNullable<z.ZodString>;
20
+ intervalSec: z.ZodNullable<z.ZodNumber>;
21
+ lookbackLabel: z.ZodNullable<z.ZodString>;
22
+ expectedBarCount: z.ZodNullable<z.ZodNumber>;
23
+ minBarCount: z.ZodNullable<z.ZodNumber>;
24
+ sources: z.ZodArray<z.ZodString>;
25
+ }, z.core.$strict>;
26
+ export type OhlcvWindowExpectation = z.infer<typeof OhlcvWindowExpectationSchema>;
27
+ /** Parse bar interval from title: 15m, 4H, 1d, 1w, etc. (not lookback phrases). */
28
+ export declare function parseIntervalLabelFromChartTitle(title: string): string | null;
29
+ /** Parse calendar lookback from title: 7d, 24h, 4 weeks, 6 months, etc. */
30
+ export declare function parseLookbackSpanFromChartTitle(title: string): LookbackSpan | null;
31
+ /** @deprecated Use parseLookbackSpanFromChartTitle — returns whole days when span is day-based. */
32
+ export declare function parseLookbackDaysFromChartTitle(title: string): number | null;
33
+ /** Read interval, lookback, and expected bar count from any vendor fetch payload. */
34
+ export declare function resolveOhlcvFetchContext(toolResult: unknown): OhlcvFetchContext | null;
35
+ /** Merge title + fetch metadata into one bar-count expectation (any interval × any lookback). */
36
+ export declare function resolveOhlcvWindowExpectation(title: string | undefined, toolResult: unknown | undefined): OhlcvWindowExpectation | null;
37
+ export declare function formatWindowExpectation(expectation: OhlcvWindowExpectation): string;
38
+ /** Hard-fail when title interval ≠ fetch interval. */
39
+ export declare function rejectIntervalMismatchTitleVsFetch(title: string, toolResult: unknown | undefined): {
40
+ ok: true;
41
+ } | {
42
+ ok: false;
43
+ reason: string;
44
+ };
45
+ /** Hard-fail when chart title lookback ≠ fetch lookback/window (e.g. title "3d" after lookbackDays: 7). */
46
+ export declare function rejectTitleLookbackMismatchVsFetch(title: string, toolResult: unknown | undefined): {
47
+ ok: true;
48
+ } | {
49
+ ok: false;
50
+ reason: string;
51
+ };
52
+ /** Hard-fail when loaded bar count is far below title/fetch window (truncated or wrong refetch). */
53
+ export declare function rejectOhlcvWindowBarCountMismatch(title: string | undefined, barCount: number, toolResult: unknown | undefined): {
54
+ ok: true;
55
+ } | {
56
+ ok: false;
57
+ reason: string;
58
+ };
59
+ /** Interval + bar-count checks for chart and analyze (all vendors, all intervals/lookbacks). */
60
+ export declare function rejectOhlcvWindowMismatch(input: {
61
+ title?: string;
62
+ barCount: number;
63
+ toolResult?: unknown;
64
+ }): {
65
+ ok: true;
66
+ } | {
67
+ ok: false;
68
+ reason: string;
69
+ };
70
+ /** @deprecated Use rejectOhlcvWindowBarCountMismatch */
71
+ export declare function rejectTitleLookbackBarCountMismatch(title: string, barCount: number, toolResult: unknown | undefined): {
72
+ ok: true;
73
+ } | {
74
+ ok: false;
75
+ reason: string;
76
+ };
77
+ //# sourceMappingURL=ohlcv-window-expectations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-window-expectations.d.ts","sourceRoot":"","sources":["../../../src/core/chart/ohlcv-window-expectations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAQtB,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;kBAY1B,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,4BAA4B;;;;;;;kBAS/B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA4ClF,mFAAmF;AACnF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsD7E;AAED,2EAA2E;AAC3E,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAwElF;AA0BD,mGAAmG;AACnG,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5E;AAgCD,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAgCtF;AAED,iGAAiG;AACjG,wBAAgB,6BAA6B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,EAAE,OAAO,GAAG,SAAS,GAC7B,sBAAsB,GAAG,IAAI,CAkD/B;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,sBAAsB,GAAG,MAAM,CAInF;AAED,sDAAsD;AACtD,wBAAgB,kCAAkC,CACjD,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAAG,SAAS,GAC7B;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAyB1C;AAED,2GAA2G;AAC3G,wBAAgB,kCAAkC,CACjD,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAAG,SAAS,GAC7B;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAmD1C;AAED,oGAAoG;AACpG,wBAAgB,iCAAiC,CAChD,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,GAAG,SAAS,GAC7B;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAe1C;AAED,gGAAgG;AAChG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAY3C;AAED,wDAAwD;AACxD,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,GAAG,SAAS,GAC7B;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAE1C"}