@continuumdao/continuum-node-sdk 1.3.31 → 1.3.32

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 (174) hide show
  1. package/dist/agent-host-catalog.json +5 -0
  2. package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
  3. package/dist/core/chart/analysis/analysis-agent-view.js +48 -7
  4. package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
  5. package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
  6. package/dist/core/chart/analysis/analysis-catalog.js +12 -0
  7. package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
  8. package/dist/core/chart/analysis/elliott-wave-drawings-tools.d.ts +31 -0
  9. package/dist/core/chart/analysis/elliott-wave-drawings-tools.d.ts.map +1 -0
  10. package/dist/core/chart/analysis/elliott-wave-drawings-tools.js +301 -0
  11. package/dist/core/chart/analysis/elliott-wave-drawings-tools.js.map +1 -0
  12. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts +161 -0
  13. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts.map +1 -0
  14. package/dist/core/chart/analysis/elliott-waves-analyze-tools.js +139 -0
  15. package/dist/core/chart/analysis/elliott-waves-analyze-tools.js.map +1 -0
  16. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +10 -1
  17. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
  18. package/dist/core/chart/analysis/trade-setups/build-trade.js +134 -4
  19. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
  20. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.d.ts +50 -0
  21. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.d.ts.map +1 -0
  22. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.js +116 -0
  23. package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.js.map +1 -0
  24. package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
  25. package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
  26. package/dist/core/chart/analysis/trade-setups/shared.js +2 -0
  27. package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
  28. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +2 -0
  29. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
  30. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +38 -3
  31. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
  32. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +4 -0
  33. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
  34. package/dist/core/chart/analysis/trade-setups/trade-idea.js +4 -0
  35. package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
  36. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +8 -1
  37. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -1
  38. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +13 -0
  39. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -1
  40. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts +20 -0
  41. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts.map +1 -1
  42. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js +54 -0
  43. package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js.map +1 -1
  44. package/dist/core/chart/fetch-agent-view.d.ts +17 -0
  45. package/dist/core/chart/fetch-agent-view.d.ts.map +1 -0
  46. package/dist/core/chart/fetch-agent-view.js +39 -0
  47. package/dist/core/chart/fetch-agent-view.js.map +1 -0
  48. package/dist/core/chart/live/binding-extract.d.ts.map +1 -1
  49. package/dist/core/chart/live/binding-extract.js +34 -2
  50. package/dist/core/chart/live/binding-extract.js.map +1 -1
  51. package/dist/core/chart/live/fetch-tick.d.ts.map +1 -1
  52. package/dist/core/chart/live/fetch-tick.js +25 -1
  53. package/dist/core/chart/live/fetch-tick.js.map +1 -1
  54. package/dist/core/chart/live/index.d.ts +1 -1
  55. package/dist/core/chart/live/index.d.ts.map +1 -1
  56. package/dist/core/chart/live/index.js +1 -1
  57. package/dist/core/chart/live/index.js.map +1 -1
  58. package/dist/core/chart/live/schemas.d.ts +1 -0
  59. package/dist/core/chart/live/schemas.d.ts.map +1 -1
  60. package/dist/core/chart/live/schemas.js +1 -0
  61. package/dist/core/chart/live/schemas.js.map +1 -1
  62. package/dist/core/chart/overlay-schemas.d.ts +241 -0
  63. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  64. package/dist/core/chart/overlay-schemas.js +63 -0
  65. package/dist/core/chart/overlay-schemas.js.map +1 -1
  66. package/dist/core/chart/overlays.d.ts.map +1 -1
  67. package/dist/core/chart/overlays.js +72 -1
  68. package/dist/core/chart/overlays.js.map +1 -1
  69. package/dist/core/chart/prepare-from-rows.d.ts +60 -0
  70. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  71. package/dist/core/chart/schemas.d.ts +240 -0
  72. package/dist/core/chart/schemas.d.ts.map +1 -1
  73. package/dist/core/coinmarketcap/schemas.d.ts +2 -2
  74. package/dist/core/elliott-waves/analyze.d.ts +38 -0
  75. package/dist/core/elliott-waves/analyze.d.ts.map +1 -0
  76. package/dist/core/elliott-waves/analyze.js +276 -0
  77. package/dist/core/elliott-waves/analyze.js.map +1 -0
  78. package/dist/core/elliott-waves/constants.d.ts +24 -0
  79. package/dist/core/elliott-waves/constants.d.ts.map +1 -0
  80. package/dist/core/elliott-waves/constants.js +24 -0
  81. package/dist/core/elliott-waves/constants.js.map +1 -0
  82. package/dist/core/elliott-waves/data-requirements.d.ts +22 -0
  83. package/dist/core/elliott-waves/data-requirements.d.ts.map +1 -0
  84. package/dist/core/elliott-waves/data-requirements.js +105 -0
  85. package/dist/core/elliott-waves/data-requirements.js.map +1 -0
  86. package/dist/core/elliott-waves/fibonacci-projector.d.ts +7 -0
  87. package/dist/core/elliott-waves/fibonacci-projector.d.ts.map +1 -0
  88. package/dist/core/elliott-waves/fibonacci-projector.js +20 -0
  89. package/dist/core/elliott-waves/fibonacci-projector.js.map +1 -0
  90. package/dist/core/elliott-waves/impulse-detector.d.ts +11 -0
  91. package/dist/core/elliott-waves/impulse-detector.d.ts.map +1 -0
  92. package/dist/core/elliott-waves/impulse-detector.js +294 -0
  93. package/dist/core/elliott-waves/impulse-detector.js.map +1 -0
  94. package/dist/core/elliott-waves/index.d.ts +10 -0
  95. package/dist/core/elliott-waves/index.d.ts.map +1 -0
  96. package/dist/core/elliott-waves/index.js +10 -0
  97. package/dist/core/elliott-waves/index.js.map +1 -0
  98. package/dist/core/elliott-waves/pivot-scanner.d.ts +40 -0
  99. package/dist/core/elliott-waves/pivot-scanner.d.ts.map +1 -0
  100. package/dist/core/elliott-waves/pivot-scanner.js +121 -0
  101. package/dist/core/elliott-waves/pivot-scanner.js.map +1 -0
  102. package/dist/core/elliott-waves/projection-builder.d.ts +32 -0
  103. package/dist/core/elliott-waves/projection-builder.d.ts.map +1 -0
  104. package/dist/core/elliott-waves/projection-builder.js +153 -0
  105. package/dist/core/elliott-waves/projection-builder.js.map +1 -0
  106. package/dist/core/elliott-waves/types.d.ts +117 -0
  107. package/dist/core/elliott-waves/types.d.ts.map +1 -0
  108. package/dist/core/elliott-waves/types.js +6 -0
  109. package/dist/core/elliott-waves/types.js.map +1 -0
  110. package/dist/core/elliott-waves/wave-labeler.d.ts +34 -0
  111. package/dist/core/elliott-waves/wave-labeler.d.ts.map +1 -0
  112. package/dist/core/elliott-waves/wave-labeler.js +95 -0
  113. package/dist/core/elliott-waves/wave-labeler.js.map +1 -0
  114. package/dist/core/elliott-waves/wave-math.d.ts +10 -0
  115. package/dist/core/elliott-waves/wave-math.d.ts.map +1 -0
  116. package/dist/core/elliott-waves/wave-math.js +61 -0
  117. package/dist/core/elliott-waves/wave-math.js.map +1 -0
  118. package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
  119. package/dist/core/mpc/broadcast-sign-result.js +63 -0
  120. package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
  121. package/dist/core/mpc/deliver-arcus-exchange.d.ts +17 -0
  122. package/dist/core/mpc/deliver-arcus-exchange.d.ts.map +1 -0
  123. package/dist/core/mpc/deliver-arcus-exchange.js +380 -0
  124. package/dist/core/mpc/deliver-arcus-exchange.js.map +1 -0
  125. package/dist/core/mpc/deliver-personal-sign.d.ts +13 -0
  126. package/dist/core/mpc/deliver-personal-sign.d.ts.map +1 -0
  127. package/dist/core/mpc/deliver-personal-sign.js +17 -0
  128. package/dist/core/mpc/deliver-personal-sign.js.map +1 -0
  129. package/dist/mcp/agent-host-catalog.d.ts +1 -1
  130. package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
  131. package/dist/mcp/agent-host-catalog.js +2 -1
  132. package/dist/mcp/agent-host-catalog.js.map +1 -1
  133. package/dist/mcp/chart.d.ts.map +1 -1
  134. package/dist/mcp/chart.js +25 -2
  135. package/dist/mcp/chart.js.map +1 -1
  136. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  137. package/dist/mcp/deferred/tool-group-map.js +5 -0
  138. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  139. package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -1
  140. package/dist/mcp/defi/defi-protocol-fetch-meta.js +2 -0
  141. package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -1
  142. package/dist/mcp/defi/eip712-multisign.d.ts +26 -0
  143. package/dist/mcp/defi/eip712-multisign.d.ts.map +1 -0
  144. package/dist/mcp/defi/eip712-multisign.js +74 -0
  145. package/dist/mcp/defi/eip712-multisign.js.map +1 -0
  146. package/dist/mcp/defi/handler.d.ts.map +1 -1
  147. package/dist/mcp/defi/handler.js +42 -31
  148. package/dist/mcp/defi/handler.js.map +1 -1
  149. package/dist/mcp/defi/ohlcv-chart-workflow.d.ts +4 -2
  150. package/dist/mcp/defi/ohlcv-chart-workflow.d.ts.map +1 -1
  151. package/dist/mcp/defi/ohlcv-chart-workflow.js +20 -8
  152. package/dist/mcp/defi/ohlcv-chart-workflow.js.map +1 -1
  153. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  154. package/dist/mcp/defi/register-protocol-tools.js +30 -6
  155. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  156. package/dist/mcp/defi/tool-schemas.d.ts +1 -3
  157. package/dist/mcp/defi/tool-schemas.d.ts.map +1 -1
  158. package/dist/mcp/defi/uniswap-limit-order-input.d.ts +10 -0
  159. package/dist/mcp/defi/uniswap-limit-order-input.d.ts.map +1 -0
  160. package/dist/mcp/defi/uniswap-limit-order-input.js +39 -0
  161. package/dist/mcp/defi/uniswap-limit-order-input.js.map +1 -0
  162. package/dist/mcp/defi/uniswap-quote-input.d.ts.map +1 -1
  163. package/dist/mcp/defi/uniswap-quote-input.js +45 -26
  164. package/dist/mcp/defi/uniswap-quote-input.js.map +1 -1
  165. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
  166. package/dist/mcp/ohlcv-session-wrapper.js +56 -2
  167. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
  168. package/dist/mcp/resources/agent-cron-jobs.md +11 -0
  169. package/dist/mcp/resources/chart-analysis.md +37 -3
  170. package/dist/mcp/resources/chart.md +5 -2
  171. package/dist/mcp/trade-tools.d.ts.map +1 -1
  172. package/dist/mcp/trade-tools.js +10 -2
  173. package/dist/mcp/trade-tools.js.map +1 -1
  174. package/package.json +2 -2
@@ -3,36 +3,48 @@ import { getToolsForProtocol } from './catalog-adapter.js';
3
3
  export function defiProtocolFetchOhlcvToolName(protocolId) {
4
4
  return getToolsForProtocol(protocolId).find(t => t.name.includes('fetch_ohlcv'))?.name;
5
5
  }
6
+ /** Load-only path after fetch_ohlcv — cron / prefetch; no chart unless operator asks later. */
7
+ export function defiOhlcvFetchOnlyWorkflowReminder(protocolId, fetchTool) {
8
+ return [
9
+ `Load-only OHLCV for ${protocolId} (cron / prefetch — no chart unless operator asks later):`,
10
+ `0. Call get_defi_protocol_fetch_options — pick chainId (protocol.fetch.chain.set UI or ask operator).`,
11
+ `1. Call ${fetchTool} with chainId + JSON numbers for lookbackDays / lookbackHours.`,
12
+ '2. Summarize meta.ohlcvSummary (high, low, lastClose, barCount) and meta.sessionBind from the slim fetch response — STOP.',
13
+ '3. Do NOT call prepare_chart_from_rows unless the operator explicitly asks to chart / plot / draw.',
14
+ '4. Later chart (same session): prepare_chart_from_rows({ title, ohlcvDigest }) from meta.sessionBind — no re-fetch.',
15
+ 'When analysis is requested on follow-up: analyze_* with { title, ohlcvDigest } — not the full candle JSON.',
16
+ ].join('\n');
17
+ }
6
18
  /** Analysis-only path after fetch_ohlcv — no chart envelope. */
7
19
  export function defiOhlcvAnalysisWorkflowReminder(protocolId, fetchTool) {
8
20
  return [
9
21
  `Analysis-only OHLCV for ${protocolId} (interpret / analyze — no chart required):`,
10
22
  `0. Call get_defi_protocol_fetch_options — pick chainId (protocol.fetch.chain.set UI or ask operator).`,
11
- `1. Call ${fetchTool} with chainId for candle rows.`,
23
+ `1. Call ${fetchTool} with chainId for candle rows (or reuse bound session via meta.sessionBind).`,
12
24
  '2. Call continuum__list_chart_analysis_options when the analysis type is unclear.',
13
- '3. Call matching continuum__analyze_* with the full fetch JSON as toolResult.',
25
+ '3. Call matching continuum__analyze_* with full fetch JSON as toolResult on first call, or { title, ohlcvDigest } on follow-ups.',
14
26
  '4. Summarize { analysis, meta } in prose. Do NOT call prepare_chart_from_rows unless the operator asked to draw a chart.',
15
27
  'Skills: chart-analysis-menu (initialLoad), chart_analysis_docs. Orchestration analysis sub-agents must stop here.',
16
28
  ].join('\n');
17
29
  }
18
- /** Chart/plot path after fetch_ohlcv. */
30
+ /** Chart/plot path after fetch_ohlcv — only when operator asked to chart. */
19
31
  export function defiOhlcvChartWorkflowReminder(protocolId, fetchTool) {
20
32
  return [
21
33
  `Chart/plot OHLCV for ${protocolId} (operator asked to chart / graph / plot / draw):`,
22
34
  `0. Call get_defi_protocol_fetch_options({ protocolId: "${protocolId}" }) — pick chainId (UI protocol.fetch.chain.set or ask operator). Required when multiple chains exist.`,
23
- `1. Call ${fetchTool} with chainId + JSON numbers for lookbackDays / lookbackHours (e.g. lookbackDays: 30 — not "30").`,
24
- '2. Same agent turn — call continuum__prepare_chart_from_rows with the **full fetch object** as toolResult (not a JSON string; never truncate candles).',
35
+ `1. Call ${fetchTool} with chainId + JSON numbers for lookbackDays / lookbackHours (e.g. lookbackDays: 30 — not "30"), or reuse bound session via meta.sessionBind.`,
36
+ '2. Same agent turn — call continuum__prepare_chart_from_rows with the **full fetch object** as toolResult (not a JSON string; never truncate candles), or { title, ohlcvDigest } when fetch is already bound.',
25
37
  'Do NOT use fetch_market_snapshot for chart history — it returns ~48 recent bars only.',
26
38
  'Fetching candles does not render a chart. The UI only draws continuum/chart/v1 from prepare_chart_from_rows — not assistant markdown.',
27
39
  'Skills: chart-defaults, chart-periods, chart_docs.',
28
40
  ].join('\n');
29
41
  }
30
- /** Both lanesinjected on load_defi_protocol when the protocol exposes fetch_ohlcv. */
42
+ /** Default after load_defi_protocol fetch/load + analysis lanes only (chart lane is separate chartWorkflow). */
31
43
  export function defiOhlcvWorkflowReminder(protocolId, fetchTool) {
32
44
  return [
33
- defiOhlcvAnalysisWorkflowReminder(protocolId, fetchTool),
45
+ defiOhlcvFetchOnlyWorkflowReminder(protocolId, fetchTool),
34
46
  '',
35
- defiOhlcvChartWorkflowReminder(protocolId, fetchTool),
47
+ defiOhlcvAnalysisWorkflowReminder(protocolId, fetchTool),
36
48
  ].join('\n');
37
49
  }
38
50
  //# sourceMappingURL=ohlcv-chart-workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ohlcv-chart-workflow.js","sourceRoot":"","sources":["../../../src/mcp/defi/ohlcv-chart-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AAEzD,qDAAqD;AACrD,MAAM,UAAU,8BAA8B,CAAC,UAAkB;IAChE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;AACxF,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,iCAAiC,CAAC,UAAkB,EAAE,SAAiB;IACtF,OAAO;QACN,2BAA2B,UAAU,6CAA6C;QAClF,uGAAuG;QACvG,WAAW,SAAS,gCAAgC;QACpD,mFAAmF;QACnF,+EAA+E;QAC/E,0HAA0H;QAC1H,mHAAmH;KACnH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,8BAA8B,CAAC,UAAkB,EAAE,SAAiB;IACnF,OAAO;QACN,wBAAwB,UAAU,mDAAmD;QACrF,0DAA0D,UAAU,yGAAyG;QAC7K,WAAW,SAAS,mGAAmG;QACvH,wJAAwJ;QACxJ,uFAAuF;QACvF,uIAAuI;QACvI,oDAAoD;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,yBAAyB,CAAC,UAAkB,EAAE,SAAiB;IAC9E,OAAO;QACN,iCAAiC,CAAC,UAAU,EAAE,SAAS,CAAC;QACxD,EAAE;QACF,8BAA8B,CAAC,UAAU,EAAE,SAAS,CAAC;KACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"ohlcv-chart-workflow.js","sourceRoot":"","sources":["../../../src/mcp/defi/ohlcv-chart-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AAEzD,qDAAqD;AACrD,MAAM,UAAU,8BAA8B,CAAC,UAAkB;IAChE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;AACxF,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,kCAAkC,CAAC,UAAkB,EAAE,SAAiB;IACvF,OAAO;QACN,uBAAuB,UAAU,2DAA2D;QAC5F,uGAAuG;QACvG,WAAW,SAAS,gEAAgE;QACpF,2HAA2H;QAC3H,oGAAoG;QACpG,qHAAqH;QACrH,4GAA4G;KAC5G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,iCAAiC,CAAC,UAAkB,EAAE,SAAiB;IACtF,OAAO;QACN,2BAA2B,UAAU,6CAA6C;QAClF,uGAAuG;QACvG,WAAW,SAAS,8EAA8E;QAClG,mFAAmF;QACnF,kIAAkI;QAClI,0HAA0H;QAC1H,mHAAmH;KACnH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,8BAA8B,CAAC,UAAkB,EAAE,SAAiB;IACnF,OAAO;QACN,wBAAwB,UAAU,mDAAmD;QACrF,0DAA0D,UAAU,yGAAyG;QAC7K,WAAW,SAAS,gJAAgJ;QACpK,+MAA+M;QAC/M,uFAAuF;QACvF,uIAAuI;QACvI,oDAAoD;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,yBAAyB,CAAC,UAAkB,EAAE,SAAiB;IAC9E,OAAO;QACN,kCAAkC,CAAC,UAAU,EAAE,SAAS,CAAC;QACzD,EAAE;QACF,iCAAiC,CAAC,UAAU,EAAE,SAAS,CAAC;KACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-protocol-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/register-protocol-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAIvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAYtD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAEhE,2FAA2F;AAC3F,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,mBAAmB,EAChC,eAAe,CAAC,EAAE,mBAAmB,GACnC,IAAI,CAgBN;AA6HD,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GAChB,MAAM,EAAE,CASV"}
1
+ {"version":3,"file":"register-protocol-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/register-protocol-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAIvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAiBtD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAkBhE,2FAA2F;AAC3F,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,mBAAmB,EAChC,eAAe,CAAC,EAAE,mBAAmB,GACnC,IAAI,CAgBN;AAoID,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,MAAM,GAChB,MAAM,EAAE,CASV"}
@@ -6,6 +6,23 @@ import { UNISWAP_V4_API_KEY_TOOL_NAMES, UNISWAP_API_KEY_ENV, UNISWAP_API_KEY_SIG
6
6
  import { defiToolInputSchema, defiToolOutputSchema } from './tool-schemas.js';
7
7
  import { isAaveV4MultisignTool } from './aave-v4-input.js';
8
8
  import { isMorphoMultisignTool } from './morpho-input.js';
9
+ import { isUniswapLimitOrderMultisignTool } from './uniswap-limit-order-input.js';
10
+ import { HYPERLIQUID_LIMIT_ORDER_MULTISIGN_TOOL, HYPERLIQUID_STATIC_EIP712_MULTISIGN_TOOLS, } from './eip712-multisign.js';
11
+ function multisignCreateGuidance(toolName) {
12
+ if (isUniswapLimitOrderMultisignTool(toolName)) {
13
+ return 'Pass keyGenId + chainId 1 + purposeText + fullLimitQuote from a fresh ctm_uniswap_v4_limit_order_quote. EIP-712 only — useCustomGas is not used (do not call get_multi_sign_gas_options for this tool).';
14
+ }
15
+ if (HYPERLIQUID_STATIC_EIP712_MULTISIGN_TOOLS.has(toolName)) {
16
+ return 'Pass keyGenId + chainId + purposeText + tool-specific fields. EIP-712 only — useCustomGas is not used (do not call get_multi_sign_gas_options). trigger_sign_result without txParams; broadcast_sign_result POSTs to Hyperliquid /exchange.';
17
+ }
18
+ if (toolName === HYPERLIQUID_LIMIT_ORDER_MULTISIGN_TOOL) {
19
+ return 'Plain limit (no TP/SL): CoreWriter EVM tx on HyperEVM — call get_multi_sign_gas_options and pass useCustomGas. With takeProfitTriggerPxHuman and/or stopLossTriggerPxHuman: EIP-712 normalTpsl bracket — no useCustomGas, trigger without txParams, broadcast POSTs to /exchange.';
20
+ }
21
+ if (toolName === 'ctm_gmx_build_increase_multisign') {
22
+ return `Pass keyGenId + chainId + purposeText (server resolves keyGen, executorAddress, rpcUrl from get_chain_registry rpcGateway, chainDetail). Do not pass rpcUrl. ${MULTISIGN_CREATE_GAS_GUIDANCE} GMX TP/SL (takeProfitPriceUsdHuman / stopLossPriceUsdHuman) is on-chain classic orders — useCustomGas applies; not EIP-712.`;
23
+ }
24
+ return `Pass keyGenId + chainId + purposeText (server resolves keyGen, executorAddress, rpcUrl from get_chain_registry rpcGateway, chainDetail). Do not pass rpcUrl. ${MULTISIGN_CREATE_GAS_GUIDANCE}`;
25
+ }
9
26
  /** Register every DeFi catalog tool; calls are gated by DefiProtocolContext.load state. */
10
27
  export function registerAllDefiProtocolTools(server, config, defiContext, deferredSession) {
11
28
  const byProtocol = new Map();
@@ -27,9 +44,7 @@ export function registerAllDefiProtocolTools(server, config, defiContext, deferr
27
44
  function registerDefiTool(server, config, defiContext, tool, deferredSession) {
28
45
  const description = [
29
46
  tool.description,
30
- !MCP_NON_SUBMIT_TOOL_NAMES.has(tool.name)
31
- ? `Pass keyGenId + chainId + purposeText (server resolves keyGen, executorAddress, rpcUrl from get_chain_registry rpcGateway, chainDetail). Do not pass rpcUrl. ${MULTISIGN_CREATE_GAS_GUIDANCE}`
32
- : '',
47
+ !MCP_NON_SUBMIT_TOOL_NAMES.has(tool.name) ? multisignCreateGuidance(tool.name) : '',
33
48
  UNISWAP_V4_API_KEY_TOOL_NAMES.has(tool.name)
34
49
  ? `Uses ${UNISWAP_API_KEY_ENV} from Node → AI Agent → Variables (get a key at ${UNISWAP_API_KEY_SIGNUP_URL}). The server injects the API key automatically — do not pass uniswapApiKey. Check configuration with list_environment_variables.${tool.name === 'ctm_uniswap_v4_quote'
35
50
  ? ' Pass keyGenId (preferred KeyGen id) or swapper. Quote defaults match the node app: permit2Disabled true, slippage 0.5, native ETH tokenIn 0x0.'
@@ -46,10 +61,10 @@ function registerDefiTool(server, config, defiContext, tool, deferredSession) {
46
61
  : '',
47
62
  tool.name === 'ctm_uniswap_v4_limit_order_quote' ||
48
63
  tool.name === 'ctm_uniswap_v4_build_limit_order_multisign'
49
- ? 'UniswapX limit orders: mainnet (chainId 1) only. limit_order_quote → build_limit_order_multisign (EIP-712). After sign, delivery POSTs to Trade API /v1/order.'
64
+ ? 'UniswapX limit orders: mainnet (chainId 1) only. limit_order_quote → build_limit_order_multisign (EIP-712, no gas). Re-quote immediately before build when limitPrice or orderDeadline changes — never reuse a stale fullLimitQuote. Pass keyGenId (server resolves swapper). After sign, delivery POSTs to Trade API /v1/order.'
50
65
  : '',
51
66
  tool.name === 'ctm_uniswap_v4_fetch_limit_orders'
52
- ? 'List open UniswapX limit orders for swapper on Ethereum mainnet.'
67
+ ? 'List open UniswapX limit orders for swapper on Ethereum mainnet. Pass keyGenId or swapper (server resolves swapper from keyGenId).'
53
68
  : '',
54
69
  tool.name === 'ctm_uniswap_v4_list_lp_pools'
55
70
  ? 'List standard V4 LP pools for a chain (ETH/USDC etc. at 0.05%, 0.3%, 1% fee tiers). Returns presetId and computed poolReference. Use presetId as poolPreset on lp_create_position or fetch_ohlcv.'
@@ -89,7 +104,16 @@ function registerDefiTool(server, config, defiContext, tool, deferredSession) {
89
104
  ? 'Vault deposit: ctm_morpho_fetch_earn_vaults then build_vault_deposit_multisign — copy vaultAddress + underlyingAddress from the fetch row into the build tool (same field names). See tool input schema for required fields. Do not use create_compose_multi_sign_request.'
90
105
  : '',
91
106
  tool.name === 'ctm_hyperliquid_build_update_leverage_multisign'
92
- ? 'Set leverage/cross: ctm_hyperliquid_fetch_open_context (leverageLabel) + fetch_markets (maxLeverage). EIP-712 digest — not CoreWriter. trigger_sign_result without txParams; broadcast_sign_result POSTs signature to Hyperliquid /exchange (not eth_sendRawTransaction). isCross true (default) or false for isolated.'
107
+ ? 'Set leverage/cross: ctm_hyperliquid_fetch_open_context (leverageLabel) + fetch_markets (maxLeverage). EIP-712 L1 /exchange — not CoreWriter, no useCustomGas. trigger_sign_result without txParams; broadcast_sign_result POSTs signature to Hyperliquid /exchange. isCross true (default) or false for isolated.'
108
+ : '',
109
+ tool.name === 'ctm_hyperliquid_build_bridge_withdraw_multisign'
110
+ ? 'Withdraw USDC Hyperliquid → Arbitrum via withdraw3. EIP-712 L1 /exchange — no useCustomGas. trigger_sign_result without txParams; broadcast_sign_result POSTs to /exchange.'
111
+ : '',
112
+ tool.name === 'ctm_hyperliquid_build_limit_order_multisign'
113
+ ? 'Plain limit: CoreWriter on HyperEVM (useCustomGas). With takeProfitTriggerPxHuman and/or stopLossTriggerPxHuman: EIP-712 normalTpsl bracket to /exchange (no gas). Re-build if entry/TP/SL params change.'
114
+ : '',
115
+ tool.name === 'ctm_gmx_build_increase_multisign'
116
+ ? 'GMX classic increase (market/limit). Optional takeProfitPriceUsdHuman / stopLossPriceUsdHuman attach native on-chain TP/SL decrease orders — still EVM gas + broadcast, not EIP-712.'
93
117
  : '',
94
118
  tool.prerequisites.length
95
119
  ? `Prerequisites: ${tool.prerequisites.join('; ')}`
@@ -1 +1 @@
1
- {"version":3,"file":"register-protocol-tools.js","sourceRoot":"","sources":["../../../src/mcp/defi/register-protocol-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-protocol-tools.js","sourceRoot":"","sources":["../../../src/mcp/defi/register-protocol-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,EAAC,yBAAyB,EAAC,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAC,6BAA6B,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACN,6BAA6B,EAC7B,mBAAmB,EACnB,0BAA0B,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,gCAAgC,EAAC,MAAM,gCAAgC,CAAC;AAChF,OAAO,EACN,sCAAsC,EACtC,yCAAyC,GACzC,MAAM,uBAAuB,CAAC;AAG/B,SAAS,uBAAuB,CAAC,QAAgB;IAChD,IAAI,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,yMAAyM,CAAC;IAClN,CAAC;IACD,IAAI,yCAAyC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,OAAO,6OAA6O,CAAC;IACtP,CAAC;IACD,IAAI,QAAQ,KAAK,sCAAsC,EAAE,CAAC;QACzD,OAAO,mRAAmR,CAAC;IAC5R,CAAC;IACD,IAAI,QAAQ,KAAK,kCAAkC,EAAE,CAAC;QACrD,OAAO,gKAAgK,6BAA6B,8HAA8H,CAAC;IACpU,CAAC;IACD,OAAO,gKAAgK,6BAA6B,EAAE,CAAC;AACxM,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,4BAA4B,CAC3C,MAAiB,EACjB,MAAqB,EACrB,WAAgC,EAChC,eAAqC;IAErC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,EAAE,CAAC;QAC5C,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,UAAU,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,eAAe,EAAE,YAAY,EAAE,CAAC;gBACnC,eAAe,CAAC,aAAa,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CACxB,MAAiB,EACjB,MAAqB,EACrB,WAAgC,EAChC,IAAuB,EACvB,eAAqC;IAErC,MAAM,WAAW,GAAG;QACnB,IAAI,CAAC,WAAW;QAChB,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACnF,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,CAAC,CAAC,QAAQ,mBAAmB,mDAAmD,0BAA0B,oIACxG,IAAI,CAAC,IAAI,KAAK,sBAAsB;gBACnC,CAAC,CAAC,iJAAiJ;gBACnJ,CAAC,CAAC,EACJ,EAAE;YACH,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,qBAAqB;YACnC,IAAI,CAAC,IAAI,KAAK,oCAAoC;YACjD,CAAC,CAAC,6LAA6L;YAC/L,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,sBAAsB;YACpC,IAAI,CAAC,IAAI,KAAK,4BAA4B;YAC1C,IAAI,CAAC,IAAI,KAAK,qCAAqC;YAClD,CAAC,CAAC,mLAAmL;YACrL,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,kCAAkC;YAChD,IAAI,CAAC,IAAI,KAAK,4CAA4C;YACzD,CAAC,CAAC,kUAAkU;YACpU,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,mCAAmC;YAChD,CAAC,CAAC,oIAAoI;YACtI,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,8BAA8B;YAC3C,CAAC,CAAC,mMAAmM;YACrM,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,4BAA4B;YACzC,CAAC,CAAC,8TAA8T;YAChU,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,mCAAmC;YACjD,IAAI,CAAC,IAAI,KAAK,+CAA+C;YAC5D,CAAC,CAAC,wYAAwY;YAC1Y,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,4BAA4B;YAC1C,IAAI,CAAC,IAAI,KAAK,mDAAmD;YAChE,CAAC,CAAC,gQAAgQ;YAClQ,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,4BAA4B;YAC1C,IAAI,CAAC,IAAI,KAAK,mDAAmD;YAChE,CAAC,CAAC,sGAAsG;YACxG,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,2BAA2B;YACzC,IAAI,CAAC,IAAI,KAAK,6CAA6C;YAC1D,CAAC,CAAC,6HAA6H;YAC/H,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,kCAAkC;YAC/C,CAAC,CAAC,wRAAwR;YAC1R,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,sCAAsC;YACnD,CAAC,CAAC,6IAA6I;YAC/I,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,+CAA+C;YAC5D,CAAC,CAAC,2IAA2I;YAC7I,CAAC,CAAC,EAAE;QACL,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,gYAAgY;YAClY,CAAC,CAAC,EAAE;QACL,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,4QAA4Q;YAC9Q,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,iDAAiD;YAC9D,CAAC,CAAC,mTAAmT;YACrT,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,iDAAiD;YAC9D,CAAC,CAAC,6KAA6K;YAC/K,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,6CAA6C;YAC1D,CAAC,CAAC,2MAA2M;YAC7M,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,IAAI,KAAK,kCAAkC;YAC/C,CAAC,CAAC,sLAAsL;YACxL,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,aAAa,CAAC,MAAM;YACxB,CAAC,CAAC,kBAAkB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACnD,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KACpE;SACC,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,oFAAoF;IACpF,MAAM,YAAY,GAAG,IAIpB,CAAC;IACF,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE;QAC3C,WAAW;QACX,WAAW,EAAE,mBAAmB,CAAC,YAAY,CAAC;QAC9C,YAAY,EAAE,oBAAoB,CAAC,YAAY,CAAC;QAChD,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC;KACtE,CAAC,CAAC;IACH,IAAI,eAAe,EAAE,CAAC;QACrB,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;AACF,CAAC;AASD,SAAS,wBAAwB,CAChC,MAAiB,EACjB,IAAY,EACZ,YAAkC;IAElC,MAAM,CAAC,YAAY,CAClB,IAAI,EACJ;QACC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,YAAY,EAAE,YAAY,CAAC,YAAY;KACvC,EACD,YAAY,CAAC,OAAO,CACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,WAAgC,EAChC,UAAkB;IAElB,MAAM,SAAS,GAAG,qBAAqB,EAAE;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -5,9 +5,7 @@ type DefiToolSchemaSource = {
5
5
  outputZod: AnySchema;
6
6
  };
7
7
  type ZodObjectLike = AnySchema & {
8
- omit: (keys: {
9
- uniswapApiKey: true;
10
- }) => AnySchema;
8
+ omit: (keys: Record<string, true>) => AnySchema;
11
9
  partial: (keys: Record<string, true>) => AnySchema;
12
10
  passthrough: () => AnySchema;
13
11
  shape: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/tool-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gDAAgD,CAAC;AAe9E,KAAK,oBAAoB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG,SAAS,GAAG;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE;QAAC,aAAa,EAAE,IAAI,CAAA;KAAC,KAAK,SAAS,CAAC;IACjD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;IACnD,WAAW,EAAE,MAAM,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,IAAI,CAahF;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAiCzE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAK1E"}
1
+ {"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/tool-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gDAAgD,CAAC;AAe9E,KAAK,oBAAoB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG,SAAS,GAAG;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;IAChD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;IACnD,WAAW,EAAE,MAAM,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,IAAI,CAahF;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAiCzE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAK1E"}
@@ -0,0 +1,10 @@
1
+ export declare const UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME = "ctm_uniswap_v4_limit_order_quote";
2
+ export declare const UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME = "ctm_uniswap_v4_fetch_limit_orders";
3
+ export declare const UNISWAP_V4_BUILD_LIMIT_ORDER_MULTISIGN_TOOL_NAME = "ctm_uniswap_v4_build_limit_order_multisign";
4
+ export declare function isUniswapLimitOrderKeyTool(toolName: string): boolean;
5
+ export declare function isUniswapLimitOrderMultisignTool(toolName: string): boolean;
6
+ /** @deprecated Use eip712MultisignEnrichedFields from ./eip712-multisign.js */
7
+ export { eip712MultisignEnrichedFields as limitOrderMultisignEnrichedFields } from './eip712-multisign.js';
8
+ /** Order expiry from limit_order_quote JSON (quote.orderInfo.deadline). */
9
+ export declare function orderDeadlineFromLimitQuote(fullLimitQuote: unknown): number | undefined;
10
+ //# sourceMappingURL=uniswap-limit-order-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-limit-order-input.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-limit-order-input.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sCAAsC,qCAAqC,CAAC;AACzF,eAAO,MAAM,uCAAuC,sCAAsC,CAAC;AAC3F,eAAO,MAAM,gDAAgD,+CAChB,CAAC;AAE9C,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,+EAA+E;AAC/E,OAAO,EAAC,6BAA6B,IAAI,iCAAiC,EAAC,MAAM,uBAAuB,CAAC;AAEzG,2EAA2E;AAC3E,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA0BvF"}
@@ -0,0 +1,39 @@
1
+ export const UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME = 'ctm_uniswap_v4_limit_order_quote';
2
+ export const UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME = 'ctm_uniswap_v4_fetch_limit_orders';
3
+ export const UNISWAP_V4_BUILD_LIMIT_ORDER_MULTISIGN_TOOL_NAME = 'ctm_uniswap_v4_build_limit_order_multisign';
4
+ export function isUniswapLimitOrderKeyTool(toolName) {
5
+ return (toolName === UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME ||
6
+ toolName === UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME);
7
+ }
8
+ export function isUniswapLimitOrderMultisignTool(toolName) {
9
+ return toolName === UNISWAP_V4_BUILD_LIMIT_ORDER_MULTISIGN_TOOL_NAME;
10
+ }
11
+ /** @deprecated Use eip712MultisignEnrichedFields from ./eip712-multisign.js */
12
+ export { eip712MultisignEnrichedFields as limitOrderMultisignEnrichedFields } from './eip712-multisign.js';
13
+ /** Order expiry from limit_order_quote JSON (quote.orderInfo.deadline). */
14
+ export function orderDeadlineFromLimitQuote(fullLimitQuote) {
15
+ if (!fullLimitQuote || typeof fullLimitQuote !== 'object' || Array.isArray(fullLimitQuote)) {
16
+ return undefined;
17
+ }
18
+ const root = fullLimitQuote;
19
+ const quote = root.quote && typeof root.quote === 'object' && !Array.isArray(root.quote)
20
+ ? root.quote
21
+ : root;
22
+ const orderInfo = quote.orderInfo &&
23
+ typeof quote.orderInfo === 'object' &&
24
+ !Array.isArray(quote.orderInfo)
25
+ ? quote.orderInfo
26
+ : undefined;
27
+ const deadline = orderInfo?.deadline ?? quote.deadline ?? root.deadline;
28
+ if (typeof deadline === 'number' && Number.isFinite(deadline) && deadline > 0) {
29
+ return Math.floor(deadline);
30
+ }
31
+ if (typeof deadline === 'string' && deadline.trim()) {
32
+ const parsed = Number(deadline);
33
+ if (Number.isFinite(parsed) && parsed > 0) {
34
+ return Math.floor(parsed);
35
+ }
36
+ }
37
+ return undefined;
38
+ }
39
+ //# sourceMappingURL=uniswap-limit-order-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-limit-order-input.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-limit-order-input.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sCAAsC,GAAG,kCAAkC,CAAC;AACzF,MAAM,CAAC,MAAM,uCAAuC,GAAG,mCAAmC,CAAC;AAC3F,MAAM,CAAC,MAAM,gDAAgD,GAC5D,4CAA4C,CAAC;AAE9C,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IAC1D,OAAO,CACN,QAAQ,KAAK,sCAAsC;QACnD,QAAQ,KAAK,uCAAuC,CACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,QAAgB;IAChE,OAAO,QAAQ,KAAK,gDAAgD,CAAC;AACtE,CAAC;AAED,+EAA+E;AAC/E,OAAO,EAAC,6BAA6B,IAAI,iCAAiC,EAAC,MAAM,uBAAuB,CAAC;AAEzG,2EAA2E;AAC3E,MAAM,UAAU,2BAA2B,CAAC,cAAuB;IAClE,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5F,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,cAAyC,CAAC;IACvD,MAAM,KAAK,GACV,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,IAAI,CAAC,KAAiC;QACzC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,SAAS,GACd,KAAK,CAAC,SAAS;QACf,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAE,KAAK,CAAC,SAAqC;QAC9C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;IACxE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uniswap-quote-input.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-quote-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAGpD,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAwCjE;;;GAGG;AACH,wBAAsB,yBAAyB,CAC9C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAgE7C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D"}
1
+ {"version":3,"file":"uniswap-quote-input.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-quote-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAQpD,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAgGjE;;;GAGG;AACH,wBAAsB,yBAAyB,CAC9C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAgC7C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI5D"}
@@ -1,6 +1,7 @@
1
1
  import { zeroAddress } from 'viem';
2
2
  import { buildManagementUrl } from '../../api/management-api.js';
3
3
  import { enrichMultisignContext } from './input-adapter.js';
4
+ import { isUniswapLimitOrderKeyTool, UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME, UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME, } from './uniswap-limit-order-input.js';
4
5
  export const UNISWAP_V4_QUOTE_TOOL_NAME = 'ctm_uniswap_v4_quote';
5
6
  const MULTISIGN_ENRICHMENT_KEYS = [
6
7
  'keyGenId',
@@ -34,40 +35,31 @@ function normalizeNativeTokenIn(tokenIn) {
34
35
  }
35
36
  return tokenIn;
36
37
  }
37
- /**
38
- * Align MCP quote input with continuumdao-node-app POST /api/uniswap/quote:
39
- * permit2Disabled true, slippage 0.5, keyGenId → swapper, managementNodeUrl from config.
40
- */
41
- export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
42
- if (toolName !== UNISWAP_V4_QUOTE_TOOL_NAME) {
43
- return { ok: true, data: input };
38
+ function resolveKeyGenId(adapted) {
39
+ if (typeof adapted.keyGenId === 'string' && adapted.keyGenId.trim()) {
40
+ return adapted.keyGenId.trim();
44
41
  }
45
- const adapted = { ...input };
46
- adapted.tokenIn = normalizeNativeTokenIn(adapted.tokenIn);
47
- if (adapted.permit2Disabled !== true && adapted.permit2Disabled !== false) {
48
- adapted.permit2Disabled = true;
42
+ if (typeof adapted.keyGen === 'string' && adapted.keyGen.trim()) {
43
+ return adapted.keyGen.trim();
49
44
  }
50
- if ((adapted.slippage === undefined ||
51
- adapted.slippage === null ||
52
- String(adapted.slippage).trim() === '') &&
53
- adapted.permit2Disabled === true) {
54
- adapted.slippage = 0.5;
55
- }
56
- const keyGenId = typeof adapted.keyGenId === 'string' && adapted.keyGenId.trim()
57
- ? adapted.keyGenId.trim()
58
- : undefined;
45
+ return undefined;
46
+ }
47
+ async function resolveUniswapSwapperFromKeyGen(config, adapted, defaultChainId) {
48
+ const keyGenId = resolveKeyGenId(adapted);
59
49
  const swapperProvided = typeof adapted.swapper === 'string' && adapted.swapper.trim();
60
50
  if (keyGenId && !swapperProvided) {
61
51
  const enriched = await enrichMultisignContext(config, {
62
52
  keyGenId,
63
- chainId: adapted.chainId,
53
+ chainId: adapted.chainId ?? defaultChainId,
64
54
  });
65
55
  if (!enriched.ok) {
66
56
  return enriched;
67
57
  }
68
58
  adapted.swapper = enriched.data.executorAddress;
69
59
  adapted.keyGen = keyGenId;
70
- adapted.chainId = enriched.data.chainId;
60
+ if (adapted.chainId == null) {
61
+ adapted.chainId = enriched.data.chainId;
62
+ }
71
63
  }
72
64
  if (typeof adapted.keyGen === 'object' && adapted.keyGen !== null) {
73
65
  delete adapted.keyGen;
@@ -75,9 +67,7 @@ export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
75
67
  if (isBlank(adapted.swapper) && typeof adapted.executorAddress === 'string') {
76
68
  adapted.swapper = adapted.executorAddress.trim();
77
69
  }
78
- const keyGenStr = typeof adapted.keyGen === 'string' && adapted.keyGen.trim()
79
- ? adapted.keyGen.trim()
80
- : undefined;
70
+ const keyGenStr = resolveKeyGenId(adapted);
81
71
  if (keyGenStr && isBlank(adapted.swapper)) {
82
72
  adapted.managementNodeUrl = managementNodeBaseUrl(config);
83
73
  adapted.keyGen = keyGenStr;
@@ -90,7 +80,36 @@ export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
90
80
  }
91
81
  return { ok: true, data: adapted };
92
82
  }
83
+ /**
84
+ * Align MCP quote input with continuumdao-node-app POST /api/uniswap/quote:
85
+ * permit2Disabled true, slippage 0.5, keyGenId → swapper, managementNodeUrl from config.
86
+ */
87
+ export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
88
+ if (toolName === UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME) {
89
+ const adapted = { ...input };
90
+ adapted.tokenIn = normalizeNativeTokenIn(adapted.tokenIn);
91
+ return resolveUniswapSwapperFromKeyGen(config, adapted, 1);
92
+ }
93
+ if (toolName === UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME) {
94
+ return resolveUniswapSwapperFromKeyGen(config, { ...input }, 1);
95
+ }
96
+ if (toolName !== UNISWAP_V4_QUOTE_TOOL_NAME) {
97
+ return { ok: true, data: input };
98
+ }
99
+ const adapted = { ...input };
100
+ adapted.tokenIn = normalizeNativeTokenIn(adapted.tokenIn);
101
+ if (adapted.permit2Disabled !== true && adapted.permit2Disabled !== false) {
102
+ adapted.permit2Disabled = true;
103
+ }
104
+ if ((adapted.slippage === undefined ||
105
+ adapted.slippage === null ||
106
+ String(adapted.slippage).trim() === '') &&
107
+ adapted.permit2Disabled === true) {
108
+ adapted.slippage = 0.5;
109
+ }
110
+ return resolveUniswapSwapperFromKeyGen(config, adapted);
111
+ }
93
112
  export function isUniswapQuoteTool(toolName) {
94
- return toolName === UNISWAP_V4_QUOTE_TOOL_NAME;
113
+ return (toolName === UNISWAP_V4_QUOTE_TOOL_NAME || isUniswapLimitOrderKeyTool(toolName));
95
114
  }
96
115
  //# sourceMappingURL=uniswap-quote-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uniswap-quote-input.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-quote-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uniswap-quote-input.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-quote-input.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ohlcv-session-wrapper.d.ts","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAajD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AA6GjE,iBAAS,uBAAuB,CAC/B,MAAM,EAAE,SAAS,CAAC,kBAAkB,CAAC,EACrC,UAAU,EAAE,MAAM,GAChB,cAAc,CAmBhB;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqDtE;AAED,OAAO,EAAC,uBAAuB,EAAC,CAAC"}
1
+ {"version":3,"file":"ohlcv-session-wrapper.d.ts","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAmBjD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAwKjE,iBAAS,uBAAuB,CAC/B,MAAM,EAAE,SAAS,CAAC,kBAAkB,CAAC,EACrC,UAAU,EAAE,MAAM,GAChB,cAAc,CAmBhB;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwDtE;AAED,OAAO,EAAC,uBAAuB,EAAC,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { bindOhlcvSessionFetch, buildOhlcvSessionBindHint, getBoundOhlcvFetch, resolveOhlcvSessionInput, } from '../core/chart/ohlcv-session-store.js';
2
2
  import { bindChartPatternAnalysis, resolveChartPatternApplyInput, } from '../core/chart/chart-pattern-session-store.js';
3
+ import { attachFetchMetaToPayload, buildFetchLoadMeta, slimFetchOutputForAgent, } from '../core/chart/fetch-agent-view.js';
4
+ import { extractChartMetadataFromFetchPayload } from '../core/chart/fetch-metadata.js';
3
5
  import { extractOhlcvBarsFromUnknown } from '../core/chart/fetch-result.js';
4
6
  import { slimChartOutputForAgent } from '../core/chart/chart-agent-view.js';
5
7
  import { getOhlcvSessionKey } from './ohlcv-session-context.js';
@@ -7,6 +9,7 @@ import { mcpStructuredContent, sdkResultToCallToolResult } from './tool-utils.js
7
9
  const OHLCV_CONSUMER_TOOL_NAMES = new Set([
8
10
  'prepare_chart_from_rows',
9
11
  'analyze_trend_structure',
12
+ 'analyze_elliott_waves',
10
13
  'analyze_key_levels',
11
14
  'analyze_key_level_fibonacci',
12
15
  'analyze_momentum',
@@ -19,8 +22,10 @@ const OHLCV_CONSUMER_TOOL_NAMES = new Set([
19
22
  'calculate_fibonacci_range',
20
23
  'calculate_trend_lines',
21
24
  'calculate_chart_pattern_drawings',
25
+ 'calculate_elliott_wave_drawings',
22
26
  'apply_chart_drawings',
23
27
  'apply_chart_pattern_drawings',
28
+ 'apply_elliott_wave_drawings',
24
29
  'apply_trend_line_drawings',
25
30
  ]);
26
31
  const PATTERN_APPLY_TOOL_NAMES = new Set(['apply_chart_pattern_drawings']);
@@ -49,6 +54,13 @@ function attachSessionBindToStructured(data, hint) {
49
54
  meta.sessionBind = hint;
50
55
  return { ...data, meta };
51
56
  }
57
+ function resolveFetchBindTitle(payload, inputTitle) {
58
+ const explicit = inputTitle?.trim();
59
+ if (explicit) {
60
+ return explicit;
61
+ }
62
+ return extractChartMetadataFromFetchPayload(payload).title;
63
+ }
52
64
  function maybeBindFromPayload(sessionKey, payload, title) {
53
65
  if (payload == null) {
54
66
  return;
@@ -57,7 +69,7 @@ function maybeBindFromPayload(sessionKey, payload, title) {
57
69
  if (!bars?.length) {
58
70
  return;
59
71
  }
60
- bindOhlcvSessionFetch(sessionKey, payload, { title });
72
+ bindOhlcvSessionFetch(sessionKey, payload, { title: resolveFetchBindTitle(payload, title) });
61
73
  }
62
74
  function maybeBindChartPatternAnalysis(sessionKey, toolName, result, inputTitle) {
63
75
  if (result.isError || toolName !== 'analyze_chart_patterns') {
@@ -82,7 +94,46 @@ function maybeBindFromCallToolResult(sessionKey, toolName, result, inputTitle) {
82
94
  if (result.isError || !result.structuredContent || !isFetchOhlcvTool(toolName)) {
83
95
  return;
84
96
  }
85
- maybeBindFromPayload(sessionKey, result.structuredContent, inputTitle);
97
+ const payload = result.structuredContent;
98
+ const record = payload && typeof payload === 'object' && !Array.isArray(payload)
99
+ ? payload
100
+ : undefined;
101
+ const bindPayload = record && record.meta && typeof record.meta === 'object' && !Array.isArray(record.meta)
102
+ ? Object.fromEntries(Object.entries(record).filter(([key]) => key !== 'meta'))
103
+ : payload;
104
+ maybeBindFromPayload(sessionKey, bindPayload, inputTitle);
105
+ }
106
+ function slimFetchCallToolResult(result, sessionKey, inputTitle) {
107
+ if (result.isError || !result.structuredContent) {
108
+ return result;
109
+ }
110
+ const rawPayload = result.structuredContent;
111
+ const record = rawPayload && typeof rawPayload === 'object' && !Array.isArray(rawPayload)
112
+ ? rawPayload
113
+ : undefined;
114
+ const payload = record && record.meta && typeof record.meta === 'object' && !Array.isArray(record.meta)
115
+ ? Object.fromEntries(Object.entries(record).filter(([key]) => key !== 'meta'))
116
+ : rawPayload;
117
+ const bound = getBoundOhlcvFetch(sessionKey);
118
+ const bindHint = bound ? buildOhlcvSessionBindHint(bound) : undefined;
119
+ const meta = buildFetchLoadMeta(payload, {
120
+ title: resolveFetchBindTitle(payload, inputTitle),
121
+ fingerprint: bound?.fingerprint,
122
+ sessionBind: bindHint,
123
+ });
124
+ if (!meta) {
125
+ return result;
126
+ }
127
+ const structuredContent = attachFetchMetaToPayload(payload, meta);
128
+ const slimStructured = slimFetchOutputForAgent(payload, meta);
129
+ const prefixLines = [meta.dataPolicy];
130
+ if (meta.warnings?.length) {
131
+ prefixLines.push(...meta.warnings);
132
+ }
133
+ return {
134
+ content: [{ type: 'text', text: `${prefixLines.join('\n')}\n${JSON.stringify(slimStructured)}` }],
135
+ structuredContent,
136
+ };
86
137
  }
87
138
  function slimChartCallToolResult(result, prefixText) {
88
139
  if (!result.ok) {
@@ -130,6 +181,9 @@ export function installOhlcvSessionToolWrapper(server) {
130
181
  : undefined;
131
182
  maybeBindFromCallToolResult(sessionKey, name, result, inputTitle);
132
183
  maybeBindChartPatternAnalysis(sessionKey, name, result, inputTitle);
184
+ if (isFetchOhlcvTool(name)) {
185
+ return slimFetchCallToolResult(result, sessionKey, inputTitle);
186
+ }
133
187
  return result;
134
188
  };
135
189
  return originalRegister(name, config, wrappedHandler);
@@ -1 +1 @@
1
- {"version":3,"file":"ohlcv-session-wrapper.js","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ohlcv-session-wrapper.js","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"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"}
@@ -83,3 +83,14 @@ For spot Uniswap exits when price crosses analysis TP/SL levels (best-effort age
83
83
  Robinhood Chain (4663) monitors should fetch OHLCV via Bitquery (`BITQUERY_API_KEY`). Disable with **`deactivate_cron_job`** when filled or cancelled.
84
84
 
85
85
  Interactive chat and orchestrator Continue use **`build_trade_from_*`** instead — never `submit_trade_from_consensus` outside `[Cron]` jobs.
86
+
87
+ ## OHLCV prefetch cron (load-only)
88
+
89
+ For scheduled data loads without charting (trade-analysis cron prefetch, monitoring, etc.):
90
+
91
+ 1. **`message`** instructs: fetch OHLCV → summarize **`meta.ohlcvSummary`** + **`meta.sessionBind`** → **STOP** (no `prepare_chart_from_rows`, no `analyze_*` unless the same job message also requests analysis).
92
+ 2. Use DeFi **`fetch_ohlcv`** or CMC/CoinGecko — see **`chart_analysis_docs`** § “Load data only”.
93
+ 3. **`load_defi_protocol`** returns **`ohlcvWorkflow`** (fetch + analysis lanes) and separate **`chartWorkflow`** — follow **`ohlcvWorkflow`** for cron; use **`chartWorkflow`** only when the cron message explicitly asks to plot.
94
+ 4. Follow-up turns in the **same conversation** can chart with **`prepare_chart_from_rows({ title, ohlcvDigest })`** without re-fetching.
95
+
96
+ Trade-analysis crons that need analysis on the same run should chain **`analyze_*`** after fetch and still skip **`prepare_chart_from_rows`** unless the deliverable is visual.