@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,225 @@
1
+ import type { ChartTime } from '../chart/schemas.js';
2
+ export type ChartPatternDirection = 'bullish' | 'bearish' | 'neutral';
3
+ export type ChartPatternClassification = 'bullish' | 'moderately_bullish' | 'neutral' | 'moderately_bearish' | 'bearish';
4
+ export type ChartPatternCategory = 'reversal' | 'continuation';
5
+ export type ChartPatternId = 'head_and_shoulders' | 'inverse_head_and_shoulders' | 'double_top' | 'double_bottom' | 'double_bottom_adam_eve' | 'ascending_triangle' | 'descending_triangle' | 'symmetrical_triangle' | 'pennant_bullish' | 'pennant_bearish' | 'flag_bullish' | 'flag_bearish' | 'rising_wedge' | 'falling_wedge' | 'channel_up' | 'channel_down' | 'cup_and_handle' | 'trendline_breakout_bullish' | 'trendline_breakout_bearish' | 'trendline_breakout_retest_bullish' | 'trendline_breakout_retest_bearish';
6
+ export type ChartPatternPoint = {
7
+ timeSec: number;
8
+ price: number;
9
+ label?: string;
10
+ role?: string;
11
+ };
12
+ export type ChartPatternLineKind = 'support' | 'resistance' | 'neckline' | 'boundary' | 'flagpole';
13
+ export type ChartPatternLine = {
14
+ pointA: ChartPatternPoint;
15
+ pointB: ChartPatternPoint;
16
+ label?: string;
17
+ kind?: ChartPatternLineKind;
18
+ };
19
+ export type ChartPatternLevel = {
20
+ price: number;
21
+ label?: string;
22
+ kind?: 'support' | 'resistance' | 'neckline' | 'level';
23
+ };
24
+ export type ChartPatternBarSpan = {
25
+ fromIndex: number;
26
+ toIndex: number;
27
+ fromTimeSec: number;
28
+ toTimeSec: number;
29
+ };
30
+ export type NormalizedBar = {
31
+ index: number;
32
+ time: ChartTime;
33
+ timeSec: number;
34
+ open: number;
35
+ high: number;
36
+ low: number;
37
+ close: number;
38
+ };
39
+ export type OrderedSwing = {
40
+ barIndex: number;
41
+ timeSec: number;
42
+ price: number;
43
+ kind: 'support' | 'resistance';
44
+ };
45
+ export type MeasuredMove = {
46
+ targetPrice: number;
47
+ referencePrice: number;
48
+ height: number;
49
+ direction: 'up' | 'down';
50
+ formula: string;
51
+ status: 'projected' | 'active';
52
+ };
53
+ export type VolumeConfirmationEvent = {
54
+ barIndex: number;
55
+ timeSec: number;
56
+ role: string;
57
+ volume: number;
58
+ ratioToBaseline: number;
59
+ verdict: 'confirming' | 'neutral' | 'weak';
60
+ };
61
+ export type VolumeConfirmation = {
62
+ status: 'confirming' | 'mixed' | 'weak' | 'unavailable';
63
+ summary: string;
64
+ baseline: {
65
+ barCount: number;
66
+ avgVolume: number;
67
+ };
68
+ events: VolumeConfirmationEvent[];
69
+ };
70
+ export type PatternDrawingElementStyle = {
71
+ lineStyle?: 'solid' | 'dotted' | 'dashed';
72
+ lineWidth?: number;
73
+ color?: string;
74
+ };
75
+ export type PatternDrawingElement = {
76
+ kind: 'segment';
77
+ pointA: ChartPatternPoint;
78
+ pointB: ChartPatternPoint;
79
+ label?: string;
80
+ role?: string;
81
+ style?: PatternDrawingElementStyle;
82
+ } | {
83
+ kind: 'level';
84
+ price: number;
85
+ label?: string;
86
+ role?: string;
87
+ span?: ChartPatternBarSpan;
88
+ style?: PatternDrawingElementStyle;
89
+ } | {
90
+ kind: 'marker';
91
+ timeSec: number;
92
+ price: number;
93
+ label?: string;
94
+ role?: string;
95
+ style?: PatternDrawingElementStyle;
96
+ } | {
97
+ kind: 'polyline';
98
+ points: ChartPatternPoint[];
99
+ label?: string;
100
+ role?: string;
101
+ style?: PatternDrawingElementStyle;
102
+ } | {
103
+ kind: 'target';
104
+ price: number;
105
+ label?: string;
106
+ role: 'measured_move';
107
+ status: 'projected' | 'active';
108
+ style?: PatternDrawingElementStyle;
109
+ };
110
+ export type PatternDrawingSpec = {
111
+ version: 1;
112
+ patternId: ChartPatternId;
113
+ barSpan: ChartPatternBarSpan;
114
+ elements: PatternDrawingElement[];
115
+ legend: string[];
116
+ };
117
+ export type PatternMenuEntry = {
118
+ index: number;
119
+ id: ChartPatternId;
120
+ name: string;
121
+ confidence: number;
122
+ completionState?: 'forming' | 'completed';
123
+ classification: ChartPatternClassification;
124
+ drawable: boolean;
125
+ isPrimary: boolean;
126
+ isHighestConfidence: boolean;
127
+ barSpan: {
128
+ fromTimeSec: number;
129
+ toTimeSec: number;
130
+ barCount: number;
131
+ };
132
+ keyLevels: Array<{
133
+ label: string;
134
+ price: number;
135
+ timeSec?: number;
136
+ }>;
137
+ measuredMove?: PatternMeasuredMoveSummary;
138
+ };
139
+ export type PatternMeasuredMoveSummary = {
140
+ targetPrice: number;
141
+ referencePrice: number;
142
+ direction: 'up' | 'down';
143
+ status: 'projected' | 'active';
144
+ formula: string;
145
+ };
146
+ export type ChartPatternHitSummary = {
147
+ id: ChartPatternId;
148
+ name: string;
149
+ classification: ChartPatternClassification;
150
+ confidence: number;
151
+ interpretation: string;
152
+ barSpan: {
153
+ fromTimeSec: number;
154
+ toTimeSec: number;
155
+ barCount: number;
156
+ };
157
+ keyLevels: Array<{
158
+ label: string;
159
+ price: number;
160
+ timeSec?: number;
161
+ }>;
162
+ measuredMove?: PatternMeasuredMoveSummary;
163
+ };
164
+ export type ChartPatternHit = {
165
+ id: ChartPatternId;
166
+ name: string;
167
+ variant?: string;
168
+ category: ChartPatternCategory;
169
+ direction: ChartPatternDirection;
170
+ confidence: number;
171
+ classification: ChartPatternClassification;
172
+ barSpan: ChartPatternBarSpan;
173
+ points: ChartPatternPoint[];
174
+ lines: ChartPatternLine[];
175
+ levels?: ChartPatternLevel[];
176
+ description: string;
177
+ interpretation: string;
178
+ completionState?: 'forming' | 'completed';
179
+ };
180
+ export type EnrichedChartPatternHit = ChartPatternHit & {
181
+ drawingSpec: PatternDrawingSpec;
182
+ drawable: boolean;
183
+ measuredMove?: MeasuredMove;
184
+ volumeConfirmation?: VolumeConfirmation;
185
+ };
186
+ export type ChartPatternCatalogEntry = {
187
+ id: ChartPatternId;
188
+ name: string;
189
+ category: ChartPatternCategory;
190
+ direction: ChartPatternDirection;
191
+ minBars: number;
192
+ description: string;
193
+ interpretation: string;
194
+ };
195
+ export type ScanChartPatternsOptions = {
196
+ patternIds?: ChartPatternId[];
197
+ focusWindow?: 'last' | number;
198
+ minConfidence?: number;
199
+ swingLookback?: number;
200
+ /** Smooth highs/lows before H&S swing detection (default true). */
201
+ smoothHeadShoulders?: boolean;
202
+ /** Savitzky-Golay window for H&S smoothing (3 or 5, default 5). */
203
+ smoothWindow?: 3 | 5;
204
+ /** Retest tolerance as fraction of breakout excursion (default 0.10 = 10%). */
205
+ retestTolerancePct?: number;
206
+ /** ATR period for retest band (default 14). */
207
+ retestAtrPeriod?: number;
208
+ /** ATR multiplier for retest band; combined with excursion as max(excursion, ATR×mult) (default 1). */
209
+ retestAtrMultiplier?: number;
210
+ };
211
+ export type TradeSetupSide = 'long' | 'short' | 'neutral';
212
+ export type { ChartPatternTradeSetup } from '../chart/analysis/trade-setups/chart-pattern-trade-setup.js';
213
+ export type ChartPatternAnalysis = {
214
+ summary: string;
215
+ classification: ChartPatternClassification | null;
216
+ interpretation: string;
217
+ primaryPattern: ChartPatternHitSummary | null;
218
+ highestConfidencePattern: ChartPatternHitSummary | null;
219
+ patternMenu: PatternMenuEntry[];
220
+ pattern: EnrichedChartPatternHit | null;
221
+ patterns: EnrichedChartPatternHit[];
222
+ rationale: string;
223
+ chartPatternTradeSetup: import('../chart/analysis/trade-setups/chart-pattern-trade-setup.js').ChartPatternTradeSetup | null;
224
+ };
225
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/chart-patterns/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/chart-patterns/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { ChartPatternHit, NormalizedBar, VolumeConfirmation } from './types.js';
2
+ export declare function computeVolumeConfirmation(hit: ChartPatternHit, bars: NormalizedBar[], rawBars: Record<string, unknown>[]): VolumeConfirmation | undefined;
3
+ export type VolumeProfileBin = {
4
+ priceLo: number;
5
+ priceHi: number;
6
+ volume: number;
7
+ };
8
+ export declare function computePatternVolumeProfile(hit: ChartPatternHit, bars: NormalizedBar[], rawBars: Record<string, unknown>[], binCount?: number): {
9
+ bins: VolumeProfileBin[];
10
+ pocPrice: number;
11
+ barSpan: ChartPatternHit['barSpan'];
12
+ } | undefined;
13
+ //# sourceMappingURL=volume-confirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume-confirmation.d.ts","sourceRoot":"","sources":["../../../src/core/chart-patterns/volume-confirmation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAuEnF,wBAAgB,yBAAyB,CACxC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,aAAa,EAAE,EACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAChC,kBAAkB,GAAG,SAAS,CAyFhC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAC;AAElF,wBAAgB,2BAA2B,CAC1C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,aAAa,EAAE,EACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAClC,QAAQ,SAAI,GACV;IAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;CAAC,GAAG,SAAS,CA+B/F"}
@@ -0,0 +1,172 @@
1
+ import { barRowsHaveVolume } from '../chart/fetch-result.js';
2
+ function barVolume(bar) {
3
+ const raw = bar.volume ?? bar.volumeUSD ?? bar.volumeUsd ?? bar.v ?? (Array.isArray(bar) ? bar[5] : undefined);
4
+ const n = typeof raw === 'number' ? raw : typeof raw === 'string' ? Number.parseFloat(raw) : Number.NaN;
5
+ return Number.isFinite(n) && n >= 0 ? n : null;
6
+ }
7
+ function volumeAtIndex(bars, rawBars, index) {
8
+ const raw = rawBars[index];
9
+ if (!raw) {
10
+ return 0;
11
+ }
12
+ return barVolume(raw) ?? 0;
13
+ }
14
+ function avgVolumeInSpan(bars, rawBars, fromIndex, toIndex) {
15
+ let sum = 0;
16
+ let count = 0;
17
+ for (let i = fromIndex; i <= toIndex && i < bars.length; i++) {
18
+ sum += volumeAtIndex(bars, rawBars, i);
19
+ count++;
20
+ }
21
+ return count > 0 ? sum / count : 0;
22
+ }
23
+ function verdictForBreakout(ratio) {
24
+ if (ratio >= 1.3) {
25
+ return 'confirming';
26
+ }
27
+ if (ratio < 0.8) {
28
+ return 'weak';
29
+ }
30
+ return 'neutral';
31
+ }
32
+ function verdictForRetest(ratio) {
33
+ if (ratio <= 0.9) {
34
+ return 'confirming';
35
+ }
36
+ if (ratio > 1.2) {
37
+ return 'weak';
38
+ }
39
+ return 'neutral';
40
+ }
41
+ function findBarIndexByLabel(hit, bars, label) {
42
+ const pt = hit.points.find(p => p.label === label);
43
+ if (!pt) {
44
+ return -1;
45
+ }
46
+ let best = -1;
47
+ let bestDist = Infinity;
48
+ for (const bar of bars) {
49
+ const dist = Math.abs(bar.timeSec - pt.timeSec);
50
+ if (dist < bestDist) {
51
+ bestDist = dist;
52
+ best = bar.index;
53
+ }
54
+ }
55
+ return best;
56
+ }
57
+ export function computeVolumeConfirmation(hit, bars, rawBars) {
58
+ if (!barRowsHaveVolume(rawBars)) {
59
+ return {
60
+ status: 'unavailable',
61
+ summary: 'Volume not present in OHLCV fetch; confirmation skipped.',
62
+ baseline: { barCount: 0, avgVolume: 0 },
63
+ events: [],
64
+ };
65
+ }
66
+ const from = hit.barSpan.fromIndex;
67
+ const to = hit.barSpan.toIndex;
68
+ const baselineAvg = avgVolumeInSpan(bars, rawBars, from, to);
69
+ if (baselineAvg <= 0) {
70
+ return {
71
+ status: 'unavailable',
72
+ summary: 'No usable volume in pattern window.',
73
+ baseline: { barCount: to - from + 1, avgVolume: 0 },
74
+ events: [],
75
+ };
76
+ }
77
+ const events = [];
78
+ const addEvent = (barIndex, role, verdict) => {
79
+ if (barIndex < 0 || barIndex >= bars.length) {
80
+ return;
81
+ }
82
+ const volume = volumeAtIndex(bars, rawBars, barIndex);
83
+ const ratio = volume / baselineAvg;
84
+ events.push({
85
+ barIndex,
86
+ timeSec: bars[barIndex].timeSec,
87
+ role,
88
+ volume,
89
+ ratioToBaseline: ratio,
90
+ verdict,
91
+ });
92
+ };
93
+ const boIdx = findBarIndexByLabel(hit, bars, 'BO');
94
+ if (boIdx >= 0) {
95
+ const ratio = volumeAtIndex(bars, rawBars, boIdx) / baselineAvg;
96
+ addEvent(boIdx, 'breakout', verdictForBreakout(ratio));
97
+ }
98
+ const rtIdx = findBarIndexByLabel(hit, bars, 'RT');
99
+ if (rtIdx >= 0) {
100
+ const ratio = volumeAtIndex(bars, rawBars, rtIdx) / baselineAvg;
101
+ addEvent(rtIdx, 'retest', verdictForRetest(ratio));
102
+ }
103
+ for (const label of ['T1', 'T2', 'B1', 'B2']) {
104
+ const idx = findBarIndexByLabel(hit, bars, label);
105
+ if (idx >= 0) {
106
+ const ratio = volumeAtIndex(bars, rawBars, idx) / baselineAvg;
107
+ const role = label.startsWith('T') ? 'peak' : 'trough';
108
+ let verdict = 'neutral';
109
+ if (label === 'T2' || label === 'B2') {
110
+ verdict = ratio <= 1.0 ? 'confirming' : ratio > 1.2 ? 'weak' : 'neutral';
111
+ }
112
+ addEvent(idx, role, verdict);
113
+ }
114
+ }
115
+ if (!events.length) {
116
+ return {
117
+ status: 'unavailable',
118
+ summary: 'No volume events mapped for this pattern.',
119
+ baseline: { barCount: to - from + 1, avgVolume: baselineAvg },
120
+ events: [],
121
+ };
122
+ }
123
+ const hasWeak = events.some(e => e.verdict === 'weak');
124
+ const hasConfirming = events.some(e => e.verdict === 'confirming');
125
+ let status = 'mixed';
126
+ if (hasConfirming && !hasWeak) {
127
+ status = 'confirming';
128
+ }
129
+ else if (hasWeak && !hasConfirming) {
130
+ status = 'weak';
131
+ }
132
+ const parts = events.map(e => `${e.role} ${e.ratioToBaseline.toFixed(1)}×`);
133
+ return {
134
+ status,
135
+ summary: parts.join('; '),
136
+ baseline: { barCount: to - from + 1, avgVolume: baselineAvg },
137
+ events,
138
+ };
139
+ }
140
+ export function computePatternVolumeProfile(hit, bars, rawBars, binCount = 8) {
141
+ if (!barRowsHaveVolume(rawBars)) {
142
+ return undefined;
143
+ }
144
+ const slice = bars.slice(hit.barSpan.fromIndex, hit.barSpan.toIndex + 1);
145
+ if (!slice.length) {
146
+ return undefined;
147
+ }
148
+ let low = Infinity;
149
+ let high = -Infinity;
150
+ for (const b of slice) {
151
+ low = Math.min(low, b.low);
152
+ high = Math.max(high, b.high);
153
+ }
154
+ if (!Number.isFinite(low) || !Number.isFinite(high) || high <= low) {
155
+ return undefined;
156
+ }
157
+ const bins = [];
158
+ const step = (high - low) / binCount;
159
+ for (let i = 0; i < binCount; i++) {
160
+ bins.push({ priceLo: low + i * step, priceHi: low + (i + 1) * step, volume: 0 });
161
+ }
162
+ for (const b of slice) {
163
+ const v = volumeAtIndex(bars, rawBars, b.index);
164
+ const mid = (b.high + b.low) / 2;
165
+ const idx = Math.min(binCount - 1, Math.max(0, Math.floor((mid - low) / step)));
166
+ bins[idx].volume += v;
167
+ }
168
+ const poc = bins.reduce((best, cur) => (cur.volume > best.volume ? cur : best), bins[0]);
169
+ const pocPrice = (poc.priceLo + poc.priceHi) / 2;
170
+ return { bins, pocPrice, barSpan: hit.barSpan };
171
+ }
172
+ //# sourceMappingURL=volume-confirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volume-confirmation.js","sourceRoot":"","sources":["../../../src/core/chart-patterns/volume-confirmation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { NodeSdkConfig } from '../../config/schema.js';
2
+ export declare const COINMARKETCAP_API_KEY_ENV = "COINMARKETCAP_API_KEY";
3
+ export declare const COINMARKETCAP_API_KEY_SIGNUP_URL = "https://pro.coinmarketcap.com/signup";
4
+ export declare function missingCmcApiKeyReason(): string;
5
+ /** Agent Variable first, then continuum-mcp process.env fallback. */
6
+ export declare function resolveCmcApiKey(config: NodeSdkConfig): Promise<string | undefined>;
7
+ export declare function isCmcApiKeyConfigured(config: NodeSdkConfig): Promise<boolean>;
8
+ //# sourceMappingURL=api-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../../src/core/coinmarketcap/api-key.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAG1D,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,eAAO,MAAM,gCAAgC,yCACN,CAAC;AAExC,wBAAgB,sBAAsB,IAAI,MAAM,CAQ/C;AAED,qEAAqE;AACrE,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,OAAO,CAAC,CAElB"}
@@ -0,0 +1,30 @@
1
+ import { getEnvironmentVariable } from '../agent/environment-variables.js';
2
+ import { getCmcProApiKey } from './client.js';
3
+ export const COINMARKETCAP_API_KEY_ENV = 'COINMARKETCAP_API_KEY';
4
+ export const COINMARKETCAP_API_KEY_SIGNUP_URL = 'https://pro.coinmarketcap.com/signup';
5
+ export function missingCmcApiKeyReason() {
6
+ return [
7
+ 'CoinMarketCap Pro API key required for CEX aggregate OHLCV.',
8
+ `Add environment variable ${COINMARKETCAP_API_KEY_ENV} in Node → AI Agent → Variables (add_environment_variable MCP tool).`,
9
+ `Create a key at ${COINMARKETCAP_API_KEY_SIGNUP_URL}`,
10
+ 'Verify with list_environment_variables (name and envConfigured only — never pass the key in tool input).',
11
+ 'For keyless DEX pool OHLCV use get_kline_candles instead.',
12
+ ].join('\n');
13
+ }
14
+ /** Agent Variable first, then continuum-mcp process.env fallback. */
15
+ export async function resolveCmcApiKey(config) {
16
+ const result = await getEnvironmentVariable(config, {
17
+ name: COINMARKETCAP_API_KEY_ENV,
18
+ });
19
+ if (result.ok) {
20
+ const value = result.data.value.trim();
21
+ if (value) {
22
+ return value;
23
+ }
24
+ }
25
+ return getCmcProApiKey();
26
+ }
27
+ export async function isCmcApiKeyConfigured(config) {
28
+ return (await resolveCmcApiKey(config)) !== undefined;
29
+ }
30
+ //# sourceMappingURL=api-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../../src/core/coinmarketcap/api-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAEjE,MAAM,CAAC,MAAM,gCAAgC,GAC5C,sCAAsC,CAAC;AAExC,MAAM,UAAU,sBAAsB;IACrC,OAAO;QACN,6DAA6D;QAC7D,4BAA4B,yBAAyB,sEAAsE;QAC3H,mBAAmB,gCAAgC,EAAE;QACrD,0GAA0G;QAC1G,2DAA2D;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,MAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE;QACnD,IAAI,EAAE,yBAAyB;KAC/B,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,eAAe,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,MAAqB;IAErB,OAAO,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;AACvD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SdkResult } from '../result.js';
2
+ export declare const CMC_KEYLESS_BASE_URL = "https://pro-api.coinmarketcap.com/public-api";
3
+ export declare const CMC_PRO_BASE_URL = "https://pro-api.coinmarketcap.com";
4
+ export type CmcQueryParams = Record<string, string | number | boolean | undefined>;
5
+ export declare function getCmcProApiKey(): string | undefined;
6
+ export declare function cmcProGet(path: string, params?: CmcQueryParams, apiKey?: string): Promise<SdkResult<unknown>>;
7
+ export declare function cmcKeylessGet(path: string, params?: CmcQueryParams): Promise<SdkResult<unknown>>;
8
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/coinmarketcap/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,eAAO,MAAM,oBAAoB,iDAAiD,CAAC;AACnF,eAAO,MAAM,gBAAgB,sCAAsC,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEnF,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAGpD;AAyDD,wBAAsB,SAAS,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,cAAmB,EAC3B,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CA8B7B;AAED,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,cAAmB,GACzB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAkB7B"}
@@ -0,0 +1,103 @@
1
+ export const CMC_KEYLESS_BASE_URL = 'https://pro-api.coinmarketcap.com/public-api';
2
+ export const CMC_PRO_BASE_URL = 'https://pro-api.coinmarketcap.com';
3
+ export function getCmcProApiKey() {
4
+ const key = process.env.COINMARKETCAP_API_KEY?.trim();
5
+ return key || undefined;
6
+ }
7
+ function appendQueryParams(url, params) {
8
+ for (const [key, value] of Object.entries(params)) {
9
+ if (value === undefined || value === '') {
10
+ continue;
11
+ }
12
+ url.searchParams.set(key, String(value));
13
+ }
14
+ }
15
+ async function parseCmcJsonResponse(response) {
16
+ let body;
17
+ try {
18
+ body = await response.json();
19
+ }
20
+ catch {
21
+ body = undefined;
22
+ }
23
+ const status = body && typeof body === 'object' && 'status' in body
24
+ ? body.status
25
+ : undefined;
26
+ if (!response.ok) {
27
+ const detail = status?.error_message?.trim();
28
+ if (response.status === 429) {
29
+ return {
30
+ ok: false,
31
+ reason: detail || 'CoinMarketCap API rate limit (HTTP 429). Retry with exponential backoff.',
32
+ };
33
+ }
34
+ if (response.status === 403 && detail) {
35
+ return {
36
+ ok: false,
37
+ reason: `CoinMarketCap API error: HTTP 403 — ${detail}`,
38
+ };
39
+ }
40
+ return {
41
+ ok: false,
42
+ reason: detail
43
+ ? `CoinMarketCap API error: HTTP ${response.status} — ${detail}`
44
+ : `CoinMarketCap API error: HTTP ${response.status}`,
45
+ };
46
+ }
47
+ const errorCode = status?.error_code;
48
+ if (errorCode && errorCode !== '0') {
49
+ return {
50
+ ok: false,
51
+ reason: status?.error_message?.trim() ||
52
+ `CoinMarketCap API error code ${errorCode}`,
53
+ };
54
+ }
55
+ return { ok: true, data: body };
56
+ }
57
+ export async function cmcProGet(path, params = {}, apiKey) {
58
+ const resolvedKey = apiKey?.trim() || getCmcProApiKey();
59
+ if (!resolvedKey) {
60
+ return {
61
+ ok: false,
62
+ reason: 'COINMARKETCAP_API_KEY is not configured. Add it via Node → AI Agent → Variables (add_environment_variable). Use get_kline_candles for keyless DEX OHLCV.',
63
+ };
64
+ }
65
+ const url = new URL(`${CMC_PRO_BASE_URL}${path.startsWith('/') ? path : `/${path}`}`);
66
+ appendQueryParams(url, params);
67
+ try {
68
+ const response = await fetch(url, {
69
+ headers: {
70
+ Accept: 'application/json',
71
+ 'X-CMC_PRO_API_KEY': resolvedKey,
72
+ },
73
+ });
74
+ return parseCmcJsonResponse(response);
75
+ }
76
+ catch (error) {
77
+ return {
78
+ ok: false,
79
+ reason: error instanceof Error
80
+ ? `CoinMarketCap Pro API request failed: ${error.message}`
81
+ : 'CoinMarketCap Pro API request failed.',
82
+ };
83
+ }
84
+ }
85
+ export async function cmcKeylessGet(path, params = {}) {
86
+ const url = new URL(`${CMC_KEYLESS_BASE_URL}${path.startsWith('/') ? path : `/${path}`}`);
87
+ appendQueryParams(url, params);
88
+ try {
89
+ const response = await fetch(url, {
90
+ headers: { Accept: 'application/json' },
91
+ });
92
+ return parseCmcJsonResponse(response);
93
+ }
94
+ catch (error) {
95
+ return {
96
+ ok: false,
97
+ reason: error instanceof Error
98
+ ? `CoinMarketCap keyless API request failed: ${error.message}`
99
+ : 'CoinMarketCap keyless API request failed.',
100
+ };
101
+ }
102
+ }
103
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/coinmarketcap/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { COINMARKETCAP_API_KEY_ENV, isCmcApiKeyConfigured, missingCmcApiKeyReason, resolveCmcApiKey, } from './api-key.js';
2
+ export { chooseCoinMarketCapMcpServer, CMC_FULL_MCP_SERVER_ID, CMC_PUBLIC_MCP_SERVER_ID, resolveCoinMarketCapMcpServer, type CoinMarketCapMcpServerChoice, type CoinMarketCapMcpVariant, } from './mcp-server-choice.js';
3
+ export { cmcKeylessGet, cmcProGet, CMC_KEYLESS_BASE_URL, CMC_PRO_BASE_URL, getCmcProApiKey } from './client.js';
4
+ export { getAltcoinSeasonIndexLatest, getCmc100Latest, getCryptoOhlcvHistorical, getCryptoQuotesLatest, getDexPairQuotes, getDexToken, getDexTokenPools, getFearAndGreedHistorical, getFearAndGreedLatest, getGlobalMetricsLatest, getKlineCandles, getSimplePrice, searchDexTokens, } from './public-api.js';
5
+ export { normalizeKlineCandleTuple, normalizeKlineCandles, type CmcKlineCandle, } from './kline.js';
6
+ export { CmcKlineIntervalSchema, CmcPlatformSchema, GetAltcoinSeasonIndexLatestInputSchema, GetCmc100LatestInputSchema, GetCryptoQuotesLatestInputSchema, GetCryptoOhlcvHistoricalInputSchema, GetCryptoOhlcvHistoricalOutputSchema, GetDexPairQuotesInputSchema, GetDexTokenInputSchema, GetDexTokenPoolsInputSchema, GetFearAndGreedHistoricalInputSchema, GetFearAndGreedLatestInputSchema, GetGlobalMetricsLatestInputSchema, GetKlineCandlesInputSchema, GetKlineCandlesOutputSchema, GetSimplePriceInputSchema, SearchDexTokensInputSchema, } from './schemas.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/coinmarketcap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAC9G,OAAO,EACN,2BAA2B,EAC3B,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,cAAc,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,sBAAsB,EACtB,iBAAiB,EACjB,sCAAsC,EACtC,0BAA0B,EAC1B,gCAAgC,EAChC,mCAAmC,EACnC,oCAAoC,EACpC,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,oCAAoC,EACpC,gCAAgC,EAChC,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,GAC1B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { COINMARKETCAP_API_KEY_ENV, isCmcApiKeyConfigured, missingCmcApiKeyReason, resolveCmcApiKey, } from './api-key.js';
2
+ export { chooseCoinMarketCapMcpServer, CMC_FULL_MCP_SERVER_ID, CMC_PUBLIC_MCP_SERVER_ID, resolveCoinMarketCapMcpServer, } from './mcp-server-choice.js';
3
+ export { cmcKeylessGet, cmcProGet, CMC_KEYLESS_BASE_URL, CMC_PRO_BASE_URL, getCmcProApiKey } from './client.js';
4
+ export { getAltcoinSeasonIndexLatest, getCmc100Latest, getCryptoOhlcvHistorical, getCryptoQuotesLatest, getDexPairQuotes, getDexToken, getDexTokenPools, getFearAndGreedHistorical, getFearAndGreedLatest, getGlobalMetricsLatest, getKlineCandles, getSimplePrice, searchDexTokens, } from './public-api.js';
5
+ export { normalizeKlineCandleTuple, normalizeKlineCandles, } from './kline.js';
6
+ export { CmcKlineIntervalSchema, CmcPlatformSchema, GetAltcoinSeasonIndexLatestInputSchema, GetCmc100LatestInputSchema, GetCryptoQuotesLatestInputSchema, GetCryptoOhlcvHistoricalInputSchema, GetCryptoOhlcvHistoricalOutputSchema, GetDexPairQuotesInputSchema, GetDexTokenInputSchema, GetDexTokenPoolsInputSchema, GetFearAndGreedHistoricalInputSchema, GetFearAndGreedLatestInputSchema, GetGlobalMetricsLatestInputSchema, GetKlineCandlesInputSchema, GetKlineCandlesOutputSchema, GetSimplePriceInputSchema, SearchDexTokensInputSchema, } from './schemas.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/coinmarketcap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,GAG7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAC9G,OAAO,EACN,2BAA2B,EAC3B,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,yBAAyB,EACzB,qBAAqB,GAErB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,sBAAsB,EACtB,iBAAiB,EACjB,sCAAsC,EACtC,0BAA0B,EAC1B,gCAAgC,EAChC,mCAAmC,EACnC,oCAAoC,EACpC,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,oCAAoC,EACpC,gCAAgC,EAChC,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,GAC1B,MAAM,cAAc,CAAC"}