@continuumdao/continuum-node-sdk 1.3.20 → 1.3.21

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.
@@ -0,0 +1,12 @@
1
+ /** Title/label embedded by the fetch step (execute script), not inferred from user chat. */
2
+ export type FetchChartMetadata = {
3
+ title?: string;
4
+ label?: string;
5
+ };
6
+ /**
7
+ * Read explicit chart metadata from a fetch tool payload.
8
+ * Accepts `{ title, label, result }`, `{ result: { title, label, bars } }`,
9
+ * Hyperliquid `{ ohlcv: { coin, interval, candles } }`, or GMX `{ symbol, timeframe, candles }`.
10
+ */
11
+ export declare function extractChartMetadataFromFetchPayload(payload: unknown): FetchChartMetadata;
12
+ //# sourceMappingURL=fetch-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-metadata.d.ts","sourceRoot":"","sources":["../../../src/core/chart/fetch-metadata.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAqDF;;;;GAIG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,CAgCzF"}
@@ -0,0 +1,87 @@
1
+ /** Title/label embedded by the fetch step (execute script), not inferred from user chat. */
2
+ function readMetaField(record, key) {
3
+ const raw = record[key];
4
+ if (typeof raw !== 'string') {
5
+ return undefined;
6
+ }
7
+ const trimmed = raw.trim();
8
+ return trimmed || undefined;
9
+ }
10
+ function metadataFromRecord(record) {
11
+ const title = readMetaField(record, 'title');
12
+ const label = readMetaField(record, 'label');
13
+ if (!title && !label) {
14
+ return {};
15
+ }
16
+ return {
17
+ ...(title ? { title } : {}),
18
+ ...(label ? { label } : {}),
19
+ };
20
+ }
21
+ function metadataFromOhlcvWrapper(ohlcv) {
22
+ const coinRaw = ohlcv.coin ?? ohlcv.symbol;
23
+ const coin = typeof coinRaw === 'string' ? coinRaw.trim() : '';
24
+ const intervalRaw = ohlcv.interval ?? ohlcv.timeframe;
25
+ const interval = typeof intervalRaw === 'string' ? intervalRaw.trim() : '';
26
+ if (!coin) {
27
+ return {};
28
+ }
29
+ const label = coin;
30
+ const title = interval ? `${coin} ${interval.toUpperCase()}` : coin;
31
+ return { title, label };
32
+ }
33
+ /** GMX fetch_ohlcv: `{ symbol, timeframe, candles }` at top level (not nested under ohlcv). */
34
+ function metadataFromFlatDefiOhlcvFetch(record) {
35
+ if (!('candles' in record)) {
36
+ return {};
37
+ }
38
+ const symbolRaw = record.symbol;
39
+ const symbol = typeof symbolRaw === 'string' ? symbolRaw.trim() : '';
40
+ if (!symbol) {
41
+ return {};
42
+ }
43
+ const label = symbol.split('[')[0]?.trim() || symbol;
44
+ const intervalRaw = record.timeframe ?? record.interval;
45
+ const interval = typeof intervalRaw === 'string' ? intervalRaw.trim() : '';
46
+ const title = interval ? `${label} ${interval.toUpperCase()}` : label;
47
+ return { title, label };
48
+ }
49
+ /**
50
+ * Read explicit chart metadata from a fetch tool payload.
51
+ * Accepts `{ title, label, result }`, `{ result: { title, label, bars } }`,
52
+ * Hyperliquid `{ ohlcv: { coin, interval, candles } }`, or GMX `{ symbol, timeframe, candles }`.
53
+ */
54
+ export function extractChartMetadataFromFetchPayload(payload) {
55
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
56
+ return {};
57
+ }
58
+ const record = payload;
59
+ const direct = metadataFromRecord(record);
60
+ if (direct.title || direct.label) {
61
+ return direct;
62
+ }
63
+ const fromFlat = metadataFromFlatDefiOhlcvFetch(record);
64
+ if (fromFlat.title || fromFlat.label) {
65
+ return fromFlat;
66
+ }
67
+ const ohlcv = record.ohlcv;
68
+ if (ohlcv && typeof ohlcv === 'object' && !Array.isArray(ohlcv)) {
69
+ const fromOhlcv = metadataFromOhlcvWrapper(ohlcv);
70
+ if (fromOhlcv.title || fromOhlcv.label) {
71
+ return fromOhlcv;
72
+ }
73
+ }
74
+ const result = record.result;
75
+ if (result && typeof result === 'object' && !Array.isArray(result)) {
76
+ const fromResult = metadataFromRecord(result);
77
+ if (fromResult.title || fromResult.label) {
78
+ return fromResult;
79
+ }
80
+ const nestedOhlcv = result.ohlcv;
81
+ if (nestedOhlcv && typeof nestedOhlcv === 'object' && !Array.isArray(nestedOhlcv)) {
82
+ return metadataFromOhlcvWrapper(nestedOhlcv);
83
+ }
84
+ }
85
+ return {};
86
+ }
87
+ //# sourceMappingURL=fetch-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-metadata.js","sourceRoot":"","sources":["../../../src/core/chart/fetch-metadata.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  import { type BuildOhlcvBarsFromPriceVolumeOptions } from './price-volume-bars.js';
3
3
  export type ExtractOhlcvBarsOptions = BuildOhlcvBarsFromPriceVolumeOptions;
4
4
  export declare function parseJsonIfString(raw: unknown): unknown;
5
+ /** True when a row normalizes to a candle (same rules as prepareChart). */
5
6
  export declare function looksLikeOhlcvBar(row: unknown): boolean;
6
7
  /** True when at least one row carries a usable volume field (including zero). */
7
8
  export declare function barRowsHaveVolume(rows: unknown[]): boolean;
@@ -10,5 +11,5 @@ export declare function barRowsHaveVolume(rows: unknown[]): boolean;
10
11
  * Accepts bar objects, OHLC tuples, `{ result: [...] }`, spot `{ prices, total_volumes }` (marketChart),
11
12
  * stringified JSON, or common API wrappers.
12
13
  */
13
- export declare function extractOhlcvBarsFromUnknown(payload: unknown, options?: ExtractOhlcvBarsOptions): unknown[] | null;
14
+ export declare function extractOhlcvBarsFromUnknown(payload: unknown, options?: ExtractOhlcvBarsOptions, depth?: number): unknown[] | null;
14
15
  //# sourceMappingURL=fetch-result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-result.d.ts","sourceRoot":"","sources":["../../../src/core/chart/fetch-result.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAE9F,OAAO,EAEN,KAAK,oCAAoC,EACzC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,uBAAuB,GAAG,oCAAoC,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgBvD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAsBvD;AAuDD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAwB1D;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,uBAA4B,GACnC,OAAO,EAAE,GAAG,IAAI,CAkClB"}
1
+ {"version":3,"file":"fetch-result.d.ts","sourceRoot":"","sources":["../../../src/core/chart/fetch-result.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAE9F,OAAO,EAEN,KAAK,oCAAoC,EACzC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,uBAAuB,GAAG,oCAAoC,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgBvD;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQvD;AAoGD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAwB1D;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,uBAA4B,EACrC,KAAK,SAAI,GACP,OAAO,EAAE,GAAG,IAAI,CAUlB"}
@@ -1,6 +1,6 @@
1
1
  /** Vendor-agnostic OHLCV bar extraction from MCP tool results (any fetch/execute payload). */
2
2
  import { buildOhlcvBarsFromPriceVolumeSeries, } from './price-volume-bars.js';
3
- import { coerceFiniteNumber, ohlcvTupleToRow } from './point-normalize.js';
3
+ import { coerceFiniteNumber, normalizeCandleRow, ohlcvTupleToRow } from './point-normalize.js';
4
4
  export function parseJsonIfString(raw) {
5
5
  if (typeof raw !== 'string') {
6
6
  return raw;
@@ -19,26 +19,15 @@ export function parseJsonIfString(raw) {
19
19
  }
20
20
  return raw;
21
21
  }
22
+ /** True when a row normalizes to a candle (same rules as prepareChart). */
22
23
  export function looksLikeOhlcvBar(row) {
24
+ if (looksLikeOhlcvTuple(row)) {
25
+ return true;
26
+ }
23
27
  if (!row || typeof row !== 'object' || Array.isArray(row)) {
24
28
  return false;
25
29
  }
26
- const r = row;
27
- const hasPrice = 'open' in r ||
28
- 'high' in r ||
29
- 'low' in r ||
30
- 'close' in r ||
31
- 'o' in r ||
32
- 'h' in r ||
33
- 'l' in r ||
34
- 'c' in r;
35
- const hasTime = 'time' in r ||
36
- 't' in r ||
37
- 'timestampMs' in r ||
38
- 'openTime' in r ||
39
- 'startTime' in r ||
40
- 'periodStartUnix' in r;
41
- return hasPrice && hasTime;
30
+ return normalizeCandleRow(row) != null;
42
31
  }
43
32
  function looksLikeOhlcvTuple(row) {
44
33
  if (!Array.isArray(row) || row.length < 5) {
@@ -66,6 +55,41 @@ const NESTED_BAR_KEYS = [
66
55
  'klines',
67
56
  'candlesticks',
68
57
  ];
58
+ const MAX_OHLCV_WRAPPER_DEPTH = 6;
59
+ function extractOhlcvBarsFromRecord(record, options, depth) {
60
+ if (depth > MAX_OHLCV_WRAPPER_DEPTH) {
61
+ return null;
62
+ }
63
+ const fromMarketChart = extractMarketChartBars(record, options);
64
+ if (fromMarketChart?.length) {
65
+ return fromMarketChart;
66
+ }
67
+ for (const key of NESTED_BAR_KEYS) {
68
+ if (!(key in record)) {
69
+ continue;
70
+ }
71
+ const nested = extractOhlcvBarsFromUnknown(record[key], options, depth + 1);
72
+ if (nested?.length) {
73
+ return nested;
74
+ }
75
+ }
76
+ for (const value of Object.values(record)) {
77
+ if (Array.isArray(value)) {
78
+ const direct = barArrayFromParsed(value);
79
+ if (direct?.length) {
80
+ return direct;
81
+ }
82
+ continue;
83
+ }
84
+ if (value && typeof value === 'object') {
85
+ const nested = extractOhlcvBarsFromRecord(value, options, depth + 1);
86
+ if (nested?.length) {
87
+ return nested;
88
+ }
89
+ }
90
+ }
91
+ return null;
92
+ }
69
93
  function looksLikePriceVolumePoint(row) {
70
94
  return Array.isArray(row) && row.length >= 2 && coerceFiniteNumber(row[1]) != null;
71
95
  }
@@ -108,7 +132,7 @@ export function barRowsHaveVolume(rows) {
108
132
  * Accepts bar objects, OHLC tuples, `{ result: [...] }`, spot `{ prices, total_volumes }` (marketChart),
109
133
  * stringified JSON, or common API wrappers.
110
134
  */
111
- export function extractOhlcvBarsFromUnknown(payload, options = {}) {
135
+ export function extractOhlcvBarsFromUnknown(payload, options = {}, depth = 0) {
112
136
  const parsed = parseJsonIfString(payload);
113
137
  const direct = barArrayFromParsed(parsed);
114
138
  if (direct) {
@@ -117,27 +141,6 @@ export function extractOhlcvBarsFromUnknown(payload, options = {}) {
117
141
  if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
118
142
  return null;
119
143
  }
120
- const record = parsed;
121
- const fromMarketChart = extractMarketChartBars(record, options);
122
- if (fromMarketChart?.length) {
123
- return fromMarketChart;
124
- }
125
- for (const key of NESTED_BAR_KEYS) {
126
- if (!(key in record)) {
127
- continue;
128
- }
129
- const child = record[key];
130
- if (child && typeof child === 'object' && !Array.isArray(child)) {
131
- const fromNestedMarketChart = extractMarketChartBars(child, options);
132
- if (fromNestedMarketChart?.length) {
133
- return fromNestedMarketChart;
134
- }
135
- }
136
- const nested = extractOhlcvBarsFromUnknown(child, options);
137
- if (nested?.length) {
138
- return nested;
139
- }
140
- }
141
- return null;
144
+ return extractOhlcvBarsFromRecord(parsed, options, depth);
142
145
  }
143
146
  //# sourceMappingURL=fetch-result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-result.js","sourceRoot":"","sources":["../../../src/core/chart/fetch-result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-result.js","sourceRoot":"","sources":["../../../src/core/chart/fetch-result.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export { prepareChartCore, isChartV1Payload } from './prepare-core.js';
2
2
  export { prepareChart } from './prepare.js';
3
3
  export { prepareChartFromRows, PrepareChartFromRowsInputSchema } from './prepare-from-rows.js';
4
+ export { extractChartMetadataFromFetchPayload } from './fetch-metadata.js';
4
5
  export { barRowsHaveVolume, extractOhlcvBarsFromUnknown, looksLikeOhlcvBar, type ExtractOhlcvBarsOptions, } from './fetch-result.js';
5
6
  export { DEFAULT_CHART_EMA_PERIOD, DEFAULT_CHART_RSI_PERIOD, buildDefaultCandlestickOverlays, ensureVolumeHistogramSeries, } from './chart-defaults.js';
6
7
  export { expandChartOverlays } from './overlays.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,uBAAuB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,KAAK,kBAAkB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,+BAA+B,EAAC,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,EACnC,KAAK,aAAa,EAClB,KAAK,oCAAoC,GACzC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACd,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAC,oCAAoC,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,uBAAuB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,KAAK,kBAAkB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,+BAA+B,EAAC,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,EACnC,KAAK,aAAa,EAClB,KAAK,oCAAoC,GACzC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACd,MAAM,cAAc,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { prepareChartCore, isChartV1Payload } from './prepare-core.js';
2
2
  export { prepareChart } from './prepare.js';
3
3
  export { prepareChartFromRows, PrepareChartFromRowsInputSchema } from './prepare-from-rows.js';
4
+ export { extractChartMetadataFromFetchPayload } from './fetch-metadata.js';
4
5
  export { barRowsHaveVolume, extractOhlcvBarsFromUnknown, looksLikeOhlcvBar, } from './fetch-result.js';
5
6
  export { DEFAULT_CHART_EMA_PERIOD, DEFAULT_CHART_RSI_PERIOD, buildDefaultCandlestickOverlays, ensureVolumeHistogramSeries, } from './chart-defaults.js';
6
7
  export { expandChartOverlays } from './overlays.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAsD,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,GAGnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GAMpB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAE,+BAA+B,EAAC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAC,oCAAoC,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAsD,MAAM,YAAY,CAAC;AAC5H,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACN,mCAAmC,GAGnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GAMpB,MAAM,cAAc,CAAC"}
@@ -4,7 +4,7 @@ import type { PrepareChartOutput } from './schemas.js';
4
4
  export declare const PrepareChartFromRowsInputSchema: z.ZodPreprocess<z.ZodObject<{
5
5
  rows: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
6
6
  toolResult: z.ZodOptional<z.ZodUnknown>;
7
- title: z.ZodOptional<z.ZodString>;
7
+ title: z.ZodString;
8
8
  label: z.ZodOptional<z.ZodString>;
9
9
  height: z.ZodOptional<z.ZodNumber>;
10
10
  options: z.ZodOptional<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-from-rows.d.ts","sourceRoot":"","sources":["../../../src/core/chart/prepare-from-rows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAsErD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;mBAG3C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA2B,CAAC;AAEzE,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,yBAAyB,GAC9B,SAAS,CAAC,kBAAkB,CAAC,CA6D/B"}
1
+ {"version":3,"file":"prepare-from-rows.d.ts","sourceRoot":"","sources":["../../../src/core/chart/prepare-from-rows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AA0FrD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;mBAG3C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA2B,CAAC;AAEzE,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,yBAAyB,GAC9B,SAAS,CAAC,kBAAkB,CAAC,CAmE/B"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { extractChartMetadataFromFetchPayload } from './fetch-metadata.js';
2
3
  import { extractOhlcvBarsFromUnknown, barRowsHaveVolume, parseJsonIfString } from './fetch-result.js';
3
4
  import { prepareChart } from './prepare.js';
4
5
  import { PrepareChartInputSchema, PrepareChartOutputSchema } from './schemas.js';
@@ -12,6 +13,26 @@ const PrepareChartFromRowsOptionsSchema = z
12
13
  })
13
14
  .strict()
14
15
  .optional();
16
+ function applyFetchMetadata(input) {
17
+ const sources = [
18
+ input.toolResult,
19
+ input.executeResult,
20
+ input.fetchResult,
21
+ input.result,
22
+ ].filter(v => v != null);
23
+ for (const source of sources) {
24
+ const meta = extractChartMetadataFromFetchPayload(source);
25
+ if (!input.title && meta.title) {
26
+ input.title = meta.title;
27
+ }
28
+ if (!input.label && meta.label) {
29
+ input.label = meta.label;
30
+ }
31
+ if (input.title && input.label) {
32
+ break;
33
+ }
34
+ }
35
+ }
15
36
  function preprocessPrepareChartFromRowsInput(raw) {
16
37
  if (!raw || typeof raw !== 'object') {
17
38
  return raw;
@@ -32,22 +53,21 @@ function preprocessPrepareChartFromRowsInput(raw) {
32
53
  !Array.isArray(input.options)) {
33
54
  const options = { ...input.options };
34
55
  const hasRows = Array.isArray(input.rows) && input.rows.length > 0;
35
- // bucketSec only applies when extracting from toolResult (raw marketChart).
36
56
  if (hasRows && 'bucketSec' in options) {
37
57
  delete options.bucketSec;
38
58
  }
39
59
  input.options = options;
40
60
  }
61
+ applyFetchMetadata(input);
41
62
  return input;
42
63
  }
43
64
  const PrepareChartFromRowsInputInnerSchema = z
44
65
  .object({
45
- /** OHLCV rows from any fetch tool (preferred). */
46
66
  rows: z.array(z.unknown()).min(1).optional(),
47
- /** Full JSON from a prior MCP tool call; bars are extracted automatically. */
48
67
  toolResult: z.unknown().optional(),
49
- title: z.string().max(256).optional(),
50
- label: z.string().max(128).optional(),
68
+ /** Required — must describe the fetched series (asset, interval, window), not the user chat verbatim. */
69
+ title: z.string().trim().min(1).max(256),
70
+ label: z.string().trim().min(1).max(128).optional(),
51
71
  height: z.number().int().min(120).max(800).optional(),
52
72
  options: PrepareChartFromRowsOptionsSchema,
53
73
  })
@@ -90,9 +110,11 @@ export function prepareChartFromRows(input) {
90
110
  reason: 'No OHLCV bars found. Pass `rows` from your fetch tool or `toolResult` (e.g. `{ result: [...] }`, `{ prices, total_volumes }`, or `{ ohlcv: { candles: [...] } }`).',
91
111
  };
92
112
  }
113
+ const title = data.title.trim();
114
+ const label = data.label?.trim() || title;
93
115
  const prepareInput = PrepareChartInputSchema.parse({
94
- ...(data.title?.trim() ? { title: data.title.trim() } : {}),
95
- ...(data.label?.trim() ? { label: data.label.trim() } : {}),
116
+ title,
117
+ label,
96
118
  ...(data.height != null ? { height: data.height } : {}),
97
119
  bars,
98
120
  options: {
@@ -104,18 +126,18 @@ export function prepareChartFromRows(input) {
104
126
  if (!chartResult.ok) {
105
127
  return chartResult;
106
128
  }
107
- if (barRowsHaveVolume(bars)) {
129
+ const warnings = [];
130
+ if (!barRowsHaveVolume(bars)) {
131
+ warnings.push('No volume in OHLCV rows — volume pane omitted. For CoinGecko spot charts use `coins.marketChart.get` (prices + total_volumes), not `coins.ohlc.get`.');
132
+ }
133
+ if (warnings.length === 0) {
108
134
  return chartResult;
109
135
  }
110
136
  return {
111
137
  ok: true,
112
138
  data: {
113
139
  ...chartResult.data,
114
- meta: {
115
- warnings: [
116
- 'No volume in OHLCV rows — volume pane omitted. For CoinGecko spot charts use `coins.marketChart.get` (prices + total_volumes), not `coins.ohlc.get`.',
117
- ],
118
- },
140
+ meta: { warnings },
119
141
  },
120
142
  };
121
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-from-rows.js","sourceRoot":"","sources":["../../../src/core/chart/prepare-from-rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare-from-rows.js","sourceRoot":"","sources":["../../../src/core/chart/prepare-from-rows.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/mcp/chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAiCvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8B1D"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/mcp/chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAiCvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6B1D"}
package/dist/mcp/chart.js CHANGED
@@ -21,10 +21,9 @@ export function registerChartTools(server) {
21
21
  server.registerTool(camelToSnake('prepareChartFromRows'), {
22
22
  description: 'Build a continuum/chart/v1 payload from OHLCV rows returned by any price fetch tool ' +
23
23
  '(CoinGecko execute, ctm_*_fetch_ohlcv, exchange APIs, etc.). ' +
24
- 'REQUIRED: pass `rows` (bar array) OR `toolResult` (full prior MCP JSON with a `result`/`data` array or `{ prices, total_volumes }`). ' +
25
- 'CoinGecko spot: use `coins.marketChart.get` (not `coins.ohlc.get` no volume). ' +
26
- 'Never call with `{}`. Preferred after a successful OHLCV fetch in the same turn. ' +
27
- 'Adds default EMA(50), RSI(14), and volume pane when rows include volume.',
24
+ 'REQUIRED: `title` (what you fetched asset, interval, window) plus `rows` OR `toolResult`. ' +
25
+ 'Fetch may return `{ title, label, result }`; chart metadata must match the data, not the user chat. ' +
26
+ 'Never `{}`. Adds default EMA(50), RSI(14), and volume pane when rows include volume.',
28
27
  inputSchema: PrepareChartFromRowsInputSchema,
29
28
  outputSchema: PrepareChartFromRowsOutputSchema,
30
29
  }, async (input) => chartToolResult(prepareChartFromRows(input)));
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sourceRoot":"","sources":["../../src/mcp/chart.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACN,+BAA+B,EAC/B,gCAAgC,EAChC,oBAAoB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACN,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAC,YAAY,EAAE,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AAExE,SAAS,eAAe,CACvB,MAAoB;IAEpB,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO;YACN,GAAG,UAAU;YACb,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,KAAK,KAAK,CAAC,IAAI,EAAE,EAAC,CAAC;SAChE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,sBAAsB,CAAC,EACpC;QACC,WAAW,EACV,sFAAsF;YACtF,+DAA+D;YAC/D,uIAAuI;YACvI,kFAAkF;YAClF,mFAAmF;YACnF,0EAA0E;QAC3E,WAAW,EAAE,+BAA+B;QAC5C,YAAY,EAAE,gCAAgC;KAC9C,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAC7D,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,cAAc,CAAC,EAC5B;QACC,WAAW,EACV,2GAA2G;YAC3G,6FAA6F;YAC7F,yDAAyD;YACzD,yFAAyF;QAC1F,WAAW,EAAE,uBAAuB;QACpC,YAAY,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"chart.js","sourceRoot":"","sources":["../../src/mcp/chart.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACN,+BAA+B,EAC/B,gCAAgC,EAChC,oBAAoB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACN,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAC,YAAY,EAAE,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AAExE,SAAS,eAAe,CACvB,MAAoB;IAEpB,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO;YACN,GAAG,UAAU;YACb,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,KAAK,KAAK,CAAC,IAAI,EAAE,EAAC,CAAC;SAChE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,sBAAsB,CAAC,EACpC;QACC,WAAW,EACV,sFAAsF;YACtF,+DAA+D;YAC/D,8FAA8F;YAC9F,sGAAsG;YACtG,sFAAsF;QACvF,WAAW,EAAE,+BAA+B;QAC5C,YAAY,EAAE,gCAAgC;KAC9C,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAC7D,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,YAAY,CAAC,cAAc,CAAC,EAC5B;QACC,WAAW,EACV,2GAA2G;YAC3G,6FAA6F;YAC7F,yDAAyD;YACzD,yFAAyF;QAC1F,WAAW,EAAE,uBAAuB;QACpC,YAAY,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAQvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAkBtD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,mBAAmB,GAC9B,IAAI,CA6RN"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAQvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAsBtD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,mBAAmB,GAC9B,IAAI,CAsRN"}
@@ -3,6 +3,7 @@ import { getProtocolModules } from '@continuumdao/ctm-mpc-defi/agent';
3
3
  import { z } from 'zod';
4
4
  import { resolveChainRegistryEntry } from '../../core/registry/networks.js';
5
5
  import { markProtocolLoaded } from './register-protocol-tools.js';
6
+ import { defiOhlcvChartWorkflowReminder, defiProtocolFetchOhlcvToolName, } from './ohlcv-chart-workflow.js';
6
7
  import { isUniswapApiKeyConfigured, UNISWAP_API_KEY_ENV, UNISWAP_API_KEY_SIGNUP_URL, } from './uniswap-api-key.js';
7
8
  const protocolIdSchema = z.object({
8
9
  protocolId: z.string().min(1),
@@ -52,6 +53,7 @@ export function registerDefiDiscoveryTools(server, config, defiContext) {
52
53
  advisoryTools: z.array(z.string()),
53
54
  skillPreview: z.string().optional(),
54
55
  skillHint: z.string().optional(),
56
+ chartWorkflow: z.string().optional(),
55
57
  uniswapApiKeyConfigured: z.boolean().optional(),
56
58
  uniswapApiKeyEnvVar: z.string().optional(),
57
59
  uniswapApiKeySignupUrl: z.string().optional(),
@@ -72,13 +74,17 @@ export function registerDefiDiscoveryTools(server, config, defiContext) {
72
74
  uniswapApiKeySignupUrl: UNISWAP_API_KEY_SIGNUP_URL,
73
75
  }
74
76
  : {};
75
- if (defiContext.isLoaded(protocolId)) {
77
+ const fetchOhlcvTool = defiProtocolFetchOhlcvToolName(protocolId);
78
+ const chartWorkflow = fetchOhlcvTool
79
+ ? defiOhlcvChartWorkflowReminder(protocolId, fetchOhlcvTool)
80
+ : undefined;
81
+ const buildPayload = (toolNames) => {
76
82
  const advisor = getProtocolSupportAdvisor(protocolId);
77
83
  const skill = getProtocolSkill(protocolId);
78
- const payload = {
84
+ return {
79
85
  loaded: true,
80
86
  protocolId,
81
- toolNames: defiContext.getToolNames(protocolId),
87
+ toolNames,
82
88
  tokenFilter: advisor?.tokenFilter,
83
89
  advisoryTools: [
84
90
  'get_defi_protocol_supported_chains',
@@ -89,32 +95,19 @@ export function registerDefiDiscoveryTools(server, config, defiContext) {
89
95
  skillHint: skill
90
96
  ? 'Call get_defi_protocol_skill for full SKILL.md workflow guidance.'
91
97
  : undefined,
98
+ ...(chartWorkflow ? { chartWorkflow } : {}),
92
99
  ...uniswapExtras,
93
100
  };
101
+ };
102
+ if (defiContext.isLoaded(protocolId)) {
103
+ const payload = buildPayload(defiContext.getToolNames(protocolId));
94
104
  return {
95
105
  content: [{ type: 'text', text: JSON.stringify(payload) }],
96
106
  structuredContent: payload,
97
107
  };
98
108
  }
99
109
  const toolNames = markProtocolLoaded(defiContext, protocolId);
100
- const advisor = getProtocolSupportAdvisor(protocolId);
101
- const skill = getProtocolSkill(protocolId);
102
- const payload = {
103
- loaded: true,
104
- protocolId,
105
- toolNames,
106
- tokenFilter: advisor?.tokenFilter,
107
- advisoryTools: [
108
- 'get_defi_protocol_supported_chains',
109
- 'get_defi_protocol_supported_tokens',
110
- 'get_defi_protocol_skill',
111
- ],
112
- skillPreview: skill?.slice(0, 500),
113
- skillHint: skill
114
- ? 'Call get_defi_protocol_skill for full SKILL.md workflow guidance.'
115
- : undefined,
116
- ...uniswapExtras,
117
- };
110
+ const payload = buildPayload(toolNames);
118
111
  void server.server.sendToolListChanged?.().catch(() => undefined);
119
112
  return {
120
113
  content: [{ type: 'text', text: JSON.stringify(payload) }],
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/mcp/defi/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/mcp/defi/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** First fetch_ohlcv tool for a protocol, if any. */
2
+ export declare function defiProtocolFetchOhlcvToolName(protocolId: string): string | undefined;
3
+ /** Injected on load_defi_protocol so dynamic protocol load carries chart rules in the same tool result. */
4
+ export declare function defiOhlcvChartWorkflowReminder(protocolId: string, fetchTool: string): string;
5
+ //# sourceMappingURL=ohlcv-chart-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-chart-workflow.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/ohlcv-chart-workflow.ts"],"names":[],"mappings":"AAEA,qDAAqD;AACrD,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErF;AAED,2GAA2G;AAC3G,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ5F"}
@@ -0,0 +1,16 @@
1
+ import { getToolsForProtocol } from './catalog-adapter.js';
2
+ /** First fetch_ohlcv tool for a protocol, if any. */
3
+ export function defiProtocolFetchOhlcvToolName(protocolId) {
4
+ return getToolsForProtocol(protocolId).find(t => t.name.includes('fetch_ohlcv'))?.name;
5
+ }
6
+ /** Injected on load_defi_protocol so dynamic protocol load carries chart rules in the same tool result. */
7
+ export function defiOhlcvChartWorkflowReminder(protocolId, fetchTool) {
8
+ return [
9
+ `Charting ${protocolId} OHLCV (required when the operator asks to chart/graph/plot):`,
10
+ `1. Call ${fetchTool} for candle rows.`,
11
+ '2. Same agent turn — call continuum__prepare_chart_from_rows with the full fetch JSON as toolResult and a descriptive title (asset + interval + window).',
12
+ 'Fetching candles does not render a chart. The UI only draws continuum/chart/v1 from the prepare_chart_from_rows MCP result — not assistant markdown.',
13
+ 'Also see node skills chart-defaults and chart-periods (initialLoad). Full protocol detail: get_defi_protocol_skill.',
14
+ ].join('\n');
15
+ }
16
+ //# sourceMappingURL=ohlcv-chart-workflow.js.map
@@ -0,0 +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,2GAA2G;AAC3G,MAAM,UAAU,8BAA8B,CAAC,UAAkB,EAAE,SAAiB;IACnF,OAAO;QACN,YAAY,UAAU,+DAA+D;QACrF,WAAW,SAAS,mBAAmB;QACvC,0JAA0J;QAC1J,sJAAsJ;QACtJ,qHAAqH;KACrH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC"}
@@ -20,13 +20,30 @@ Each object in **`series[].data`** is normalized before charting. **`prepare_cha
20
20
  |--------|------------|---------------------|
21
21
  | CoinGecko / agent | `time` (Unix **seconds**) | numbers |
22
22
  | Hyperliquid `fetch_ohlcv` | `timestampMs` | strings → coerced |
23
- | GMX `fetch_ohlcv` | `timestampMs` | strings (no volume on row) |
23
+ | GMX `fetch_ohlcv` | `timestampMs` | strings (no volume on row); top-level `{ symbol, timeframe, candles }` |
24
24
  | Binance `get_klines` (JSON) | `openTime` (ms) | strings → coerced |
25
25
  | Bybit `getMarketKline` | tuple `[startTime, …]` or `{ startTime, open, … }` | strings → coerced |
26
26
  | Bitget REST / MCP | tuple `[ts, o,h,l,c,vol,…]` or `{ timestamp, … }` | strings → coerced |
27
27
  | CoinMarketCap OHLCV API | `{ time_open, quote: { USD: { … } } }` | numbers; nested `quote` flattened |
28
28
  | Uniswap subgraph (`PoolHourData` / `PoolDayData`) | `periodStartUnix` | `open`/`high`/`low`/`close`, optional `volumeUSD` |
29
29
 
30
+ ### Generic OHLCV engine (adding a new source)
31
+
32
+ SDK charting is **vendor-agnostic** after fetch:
33
+
34
+ 1. **`extractOhlcvBarsFromUnknown`** — pulls a bar array from any MCP/tool JSON (nested wrappers, stringified JSON, `{ prices, total_volumes }` spot series). Walks unknown wrapper keys up to depth 6; prefers known keys (`result`, `candles`, `ohlcv`, `klines`, …).
35
+ 2. **`normalizeCandleRow`** (`point-normalize.ts`) — single source of truth per bar: time fields (`time`, `timestampMs`, `timestamp`, `openTime`, `t`, `periodStartUnix`, …), OHLC aliases (`o`/`h`/`l`/`c`, `price_*`), nested CMC `quote.USD`, numeric strings → numbers, ms → sec.
36
+ 3. **`prepare_chart_from_rows`** / **`prepareChart`** — sort, dedupe, trim, optional volume histogram (only when volume present), default EMA/RSI overlays.
37
+
38
+ **Volume optional:** rows without `volume` / `v` / tuple index 5 chart as **candles only** (warning in `meta.warnings`; volume pane omitted). GMX is an example.
39
+
40
+ **New fetch tool checklist:**
41
+
42
+ - Return bars as an array of objects or OHLC tuples, anywhere in the JSON tree (or add a known wrapper key to `NESTED_BAR_KEYS` in `fetch-result.ts` if you want it prioritized).
43
+ - Prefer `{ title, label, …bars… }` on the fetch payload for chart titles; otherwise `extractChartMetadataFromFetchPayload` infers from common DeFi shapes.
44
+ - Add one **`extractOhlcvBarsFromUnknown` + `prepareChartFromRows`** test with a sample row from your API.
45
+ - Optional: extend **`mapOhlcFieldAliases`** / **`flattenVendorCandleRow`** in `point-normalize.ts` only when the row shape is genuinely new (not covered by existing time/OHLC fields).
46
+
30
47
  - **`ctm_uniswap_v4_*`** MCP tools do **not** return candles — only quotes, swaps, and LP. Pool OHLCV comes from a **subgraph** or third-party indexer; map `poolHourDatas` into **`series[0].data`**.
31
48
  - Times in **milliseconds** (>1e12) are converted to **seconds** automatically.
32
49
  - **`open` / `high` / `low` / `close` / `volume`** may be numbers or numeric strings.
@@ -261,7 +278,11 @@ First bar: close ≥ open → green volume. Second: close < open → red volume.
261
278
  - **`priceScaleId`**: `"left"` | `"right"` — use different scales for unlike units.
262
279
  - **`overlay`**: `true` — draw line/area on the main price pane.
263
280
 
264
- When the user asks to graph, plot, or chart data, call **`prepare_chart`** after assembling series — do not rely on markdown tables alone.
281
+ When the user asks to graph, plot, or chart data, call **`prepare_chart_from_rows`** (or **`prepare_chart`**) after assembling series — do not rely on markdown tables alone.
282
+
283
+ **Where charts appear:** the node app renders charts under the **MCP result** row for `prepare_chart` / `prepare_chart_from_rows`, not inside the assistant text bubble. A prose reply like “chart prepared” without a successful chart tool result means nothing was rendered.
284
+
285
+ **Hyperliquid / DeFi `fetch_ohlcv`:** returns `{ ohlcv: { coin, interval, candles: [...] } }`. After `fetch_ohlcv`, call `prepare_chart_from_rows` with the **full fetch JSON** as `toolResult` and a descriptive `title`. The node auto-binds the last OHLCV fetch when `prepare_chart_from_rows` is called with only a title.
265
286
 
266
287
  ## KeyGen orchestration (sub-agents)
267
288
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@continuumdao/continuum-node-sdk",
3
- "version": "1.3.20",
3
+ "version": "1.3.21",
4
4
  "description": "JSON SDK for the Continuum node client management API",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/ContinuumDAO/continuum-node-sdk#readme",
@@ -40,7 +40,7 @@
40
40
  "sync-vendor-defi": "bash scripts/sync-vendor-defi.sh"
41
41
  },
42
42
  "dependencies": {
43
- "@continuumdao/ctm-mpc-defi": "^0.2.17",
43
+ "@continuumdao/ctm-mpc-defi": "^0.2.18",
44
44
  "@curvefi/api": "^2.69.2",
45
45
  "@modelcontextprotocol/sdk": "^1.29.0",
46
46
  "express": "^5.2.1",