@sharpe-terminal/mcp-server 1.2.0

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,520 @@
1
+ /**
2
+ * Composite tools that call multiple API endpoints concurrently
3
+ * and return formatted markdown. Mirrors the Python server's
4
+ * analyze_coin, market_briefing, and find_opportunities.
5
+ */
6
+ // ── Formatting helpers ────────────────────────────────────────────────
7
+ export function fmtUsd(value) {
8
+ if (value == null)
9
+ return "N/A";
10
+ const abs = Math.abs(value);
11
+ const sign = value < 0 ? "-" : "";
12
+ if (abs >= 1_000_000_000_000)
13
+ return `${sign}$${(abs / 1_000_000_000_000).toFixed(2)}T`;
14
+ if (abs >= 1_000_000_000)
15
+ return `${sign}$${(abs / 1_000_000_000).toFixed(2)}B`;
16
+ if (abs >= 1_000_000)
17
+ return `${sign}$${(abs / 1_000_000).toFixed(2)}M`;
18
+ if (abs >= 1_000)
19
+ return `${sign}$${(abs / 1_000).toFixed(1)}K`;
20
+ return `${sign}$${abs.toFixed(2)}`;
21
+ }
22
+ export function fmtPct(value) {
23
+ if (value == null)
24
+ return "N/A";
25
+ return `${value >= 0 ? "+" : ""}${value.toFixed(2)}%`;
26
+ }
27
+ export function fmtRate(value) {
28
+ if (value == null)
29
+ return "N/A";
30
+ return `${(value * 100).toFixed(4)}%`;
31
+ }
32
+ function safeGet(obj, ...keys) {
33
+ let current = obj;
34
+ for (const k of keys) {
35
+ if (current != null && typeof current === "object" && k in current) {
36
+ current = current[k];
37
+ }
38
+ else {
39
+ return undefined;
40
+ }
41
+ }
42
+ return current;
43
+ }
44
+ async function safeCall(callApi, apiPath, fallbackPath, args, label) {
45
+ try {
46
+ const data = await callApi(apiPath, fallbackPath, args);
47
+ return { data, error: null };
48
+ }
49
+ catch (err) {
50
+ const msg = err instanceof Error ? err.message : String(err);
51
+ return { data: null, error: `[${label}] ${msg}` };
52
+ }
53
+ }
54
+ // ── CoinGecko slug map ────────────────────────────────────────────────
55
+ const CG_SLUGS = {
56
+ BTC: "bitcoin",
57
+ ETH: "ethereum",
58
+ SOL: "solana",
59
+ DOGE: "dogecoin",
60
+ XRP: "ripple",
61
+ ADA: "cardano",
62
+ AVAX: "avalanche-2",
63
+ DOT: "polkadot",
64
+ LINK: "chainlink",
65
+ MATIC: "matic-network",
66
+ SUI: "sui",
67
+ APT: "aptos",
68
+ };
69
+ // ── analyze_coin ──────────────────────────────────────────────────────
70
+ export async function analyzeCoin(callApi, coin) {
71
+ const coinUpper = coin.toUpperCase();
72
+ const cgSlug = CG_SLUGS[coinUpper] ?? coin.toLowerCase();
73
+ const tasks = [
74
+ safeCall(callApi, "/api/v1/funding/rates", "/api/funding/rates", { type: "accumulated" }, "funding"),
75
+ safeCall(callApi, "/api/v1/futures/data", "/api/futures/data", { chart: "oi-snapshot", coin: coinUpper, timeframe: "3M" }, "oi"),
76
+ safeCall(callApi, "/api/v1/price-prediction/data", "/api/price-prediction/data", { coin: cgSlug }, "prediction"),
77
+ ];
78
+ const results = await Promise.allSettled(tasks);
79
+ const settled = results.map((r) => r.status === "fulfilled"
80
+ ? r.value
81
+ : { data: null, error: "Promise rejected" });
82
+ const [funding, oi, prediction] = settled;
83
+ const errors = settled
84
+ .filter((s) => s.error)
85
+ .map((s) => s.error);
86
+ const lines = [`## ${coinUpper} Analysis`];
87
+ // Price prediction
88
+ if (prediction.data) {
89
+ let pred = prediction.data;
90
+ if (Array.isArray(pred) && pred.length > 0)
91
+ pred = pred[0];
92
+ if (typeof pred === "object" && pred !== null) {
93
+ const coinObj = (pred.coin ?? pred);
94
+ if (typeof coinObj === "object" && coinObj !== null) {
95
+ const finalPred = coinObj;
96
+ const bias = (safeGet(finalPred, "direction") ??
97
+ safeGet(finalPred, "bias") ??
98
+ "unknown");
99
+ const score = (safeGet(finalPred, "consensusScore") ??
100
+ safeGet(finalPred, "score"));
101
+ const price = (safeGet(finalPred, "spotPrice") ??
102
+ safeGet(finalPred, "price"));
103
+ const change24h = (safeGet(finalPred, "priceChange24h") ??
104
+ safeGet(finalPred, "price_change_24h"));
105
+ lines.push("");
106
+ lines.push(`**Price:** ${price != null ? fmtUsd(price) : "N/A"} | **24h:** ${change24h != null ? fmtPct(change24h) : ""}`);
107
+ lines.push(`**Prediction:** ${String(bias).charAt(0).toUpperCase() + String(bias).slice(1)} (score: ${score != null ? `${score}/100` : "N/A"})`);
108
+ const signals = (safeGet(finalPred, "signals") ??
109
+ safeGet(finalPred, "technical"));
110
+ if (Array.isArray(signals) && signals.length > 0) {
111
+ const parts = signals
112
+ .filter((s) => typeof s === "object" && s !== null)
113
+ .map((s) => {
114
+ const label = (s.label ?? s.name ?? "");
115
+ const sigBias = (s.bias ?? "");
116
+ return label && sigBias ? `${label}: ${sigBias}` : null;
117
+ })
118
+ .filter(Boolean)
119
+ .slice(0, 6);
120
+ if (parts.length > 0)
121
+ lines.push(`**Signals:** ${parts.join(", ")}`);
122
+ }
123
+ else if (typeof signals === "object" && signals !== null) {
124
+ const sigObj = signals;
125
+ const parts = [];
126
+ if (sigObj.rsi != null)
127
+ parts.push(`RSI ${Number(sigObj.rsi).toFixed(0)}`);
128
+ if (sigObj.ema_trend)
129
+ parts.push(`EMA ${sigObj.ema_trend}`);
130
+ if (parts.length > 0)
131
+ lines.push(`**Technicals:** ${parts.join(", ")}`);
132
+ }
133
+ }
134
+ }
135
+ }
136
+ else {
137
+ lines.push("\n*Price prediction data unavailable*");
138
+ }
139
+ // Funding rates
140
+ if (funding.data) {
141
+ let ratesList = funding.data;
142
+ if (typeof ratesList === "object" &&
143
+ ratesList !== null &&
144
+ !Array.isArray(ratesList) &&
145
+ "items" in ratesList) {
146
+ ratesList = ratesList.items;
147
+ }
148
+ if (Array.isArray(ratesList)) {
149
+ const coinRates = ratesList.filter((r) => {
150
+ if (typeof r !== "object" || r === null)
151
+ return false;
152
+ const rec = r;
153
+ const baseCoin = String(rec.base_coin ?? rec.coin ?? "").toUpperCase();
154
+ const symbol = String(rec.symbol ?? "").toUpperCase();
155
+ return baseCoin === coinUpper || symbol.startsWith(coinUpper);
156
+ });
157
+ if (coinRates.length > 0) {
158
+ lines.push("");
159
+ lines.push("**Funding Rates:**");
160
+ const rateValues = [];
161
+ for (const r of coinRates.slice(0, 10)) {
162
+ const rec = r;
163
+ const exchange = String(rec.exchange ?? "Unknown");
164
+ const rate = (rec.rate ?? rec.acc_1d ?? rec.funding_rate);
165
+ const acc7d = rec.acc_7d;
166
+ if (rate != null) {
167
+ rateValues.push(rate);
168
+ let label = ` ${exchange}: ${fmtRate(rate)}`;
169
+ if (acc7d != null)
170
+ label += ` (7d: ${fmtRate(acc7d)})`;
171
+ lines.push(label);
172
+ }
173
+ }
174
+ if (rateValues.length > 0) {
175
+ const avg = rateValues.reduce((a, b) => a + b, 0) / rateValues.length;
176
+ lines.push(` **Avg:** ${fmtRate(avg)} across ${rateValues.length} exchanges`);
177
+ }
178
+ }
179
+ else {
180
+ lines.push("\n*No funding rates found for this coin*");
181
+ }
182
+ }
183
+ }
184
+ else {
185
+ lines.push("\n*Funding rate data unavailable*");
186
+ }
187
+ // Open interest
188
+ if (oi.data) {
189
+ let oiData = oi.data;
190
+ if (typeof oiData === "object" &&
191
+ oiData !== null &&
192
+ !Array.isArray(oiData) &&
193
+ "data" in oiData) {
194
+ oiData = oiData.data;
195
+ }
196
+ lines.push("");
197
+ lines.push("**Open Interest:**");
198
+ if (Array.isArray(oiData)) {
199
+ const latestByExchange = new Map();
200
+ const latestTsByExchange = new Map();
201
+ for (const item of oiData) {
202
+ if (typeof item !== "object" || item === null)
203
+ continue;
204
+ const rec = item;
205
+ const exchange = String(rec.exchange ?? "Unknown");
206
+ const oiVal = Number(rec.open_interest_value ??
207
+ rec.value ??
208
+ rec.oi ??
209
+ rec.open_interest ??
210
+ 0);
211
+ const ts = String(rec.timestamp ?? rec.snapshot_at ?? "");
212
+ if (oiVal > 0 && ts >= (latestTsByExchange.get(exchange) ?? "")) {
213
+ latestByExchange.set(exchange, oiVal);
214
+ latestTsByExchange.set(exchange, ts);
215
+ }
216
+ }
217
+ let totalOi = 0;
218
+ const sorted = [...latestByExchange.entries()]
219
+ .sort((a, b) => b[1] - a[1])
220
+ .slice(0, 10);
221
+ for (const [exchange, oiVal] of sorted) {
222
+ totalOi += oiVal;
223
+ lines.push(` ${exchange}: ${fmtUsd(oiVal)}`);
224
+ }
225
+ if (latestByExchange.size > 0) {
226
+ lines.push(` **Total:** ${fmtUsd(totalOi)} across ${latestByExchange.size} exchanges`);
227
+ }
228
+ }
229
+ }
230
+ else {
231
+ lines.push("\n*Open interest data unavailable*");
232
+ }
233
+ if (errors.length > 0) {
234
+ lines.push("");
235
+ lines.push(`**Data gaps:** ${errors.join("; ")}`);
236
+ }
237
+ return lines.join("\n");
238
+ }
239
+ // ── market_briefing ───────────────────────────────────────────────────
240
+ export async function marketBriefing(callApi) {
241
+ const results = await Promise.allSettled([
242
+ safeCall(callApi, "/api/v1/tracker/market-overview", "/api/tracker/market-overview", {}, "market-overview"),
243
+ safeCall(callApi, "/api/v1/narratives/data", "/api/narratives/data", {}, "narratives"),
244
+ safeCall(callApi, "/api/v1/funding/rates", "/api/funding/rates", { type: "current" }, "funding"),
245
+ ]);
246
+ const settled = results.map((r) => r.status === "fulfilled"
247
+ ? r.value
248
+ : { data: null, error: "Promise rejected" });
249
+ const [overview, narratives, funding] = settled;
250
+ const errors = settled
251
+ .filter((s) => s.error)
252
+ .map((s) => s.error);
253
+ const lines = ["## Market Briefing"];
254
+ // Market overview
255
+ if (overview.data && typeof overview.data === "object") {
256
+ const d = overview.data;
257
+ const mcap = d.total_market_cap;
258
+ const vol = (d.total_volume_24h ?? d.total_volume);
259
+ const btcDom = d.btc_dominance;
260
+ const fg = (d.fgi ?? d.fear_greed_index ?? d.fear_greed);
261
+ lines.push("");
262
+ lines.push("### Market Stats");
263
+ if (mcap != null)
264
+ lines.push(`**Total Market Cap:** ${fmtUsd(mcap)}`);
265
+ if (vol != null)
266
+ lines.push(`**24h Volume:** ${fmtUsd(vol)}`);
267
+ if (btcDom != null) {
268
+ const pct = btcDom > 1 ? btcDom : btcDom * 100;
269
+ lines.push(`**BTC Dominance:** ${pct.toFixed(1)}%`);
270
+ }
271
+ if (fg != null) {
272
+ const fgVal = typeof fg === "object" ? fg.value : fg;
273
+ let fgLabel = typeof fg === "object" ? (fg.label ?? "") : "";
274
+ if (!fgLabel)
275
+ fgLabel = (d.fgi_classification ?? "");
276
+ lines.push(`**Fear & Greed:** ${fgVal} ${fgLabel}`);
277
+ }
278
+ // Top gainers
279
+ const gainers = (d.top_gainers ?? []);
280
+ if (Array.isArray(gainers) && gainers.length > 0) {
281
+ lines.push("");
282
+ lines.push("### Top Gainers (24h)");
283
+ for (const g of gainers.slice(0, 5)) {
284
+ const sym = (g.symbol ?? g.name ?? "?");
285
+ const chg = (g.price_change_24h ?? g.change);
286
+ lines.push(` ${sym}: ${fmtPct(chg)}`);
287
+ }
288
+ }
289
+ // Top losers
290
+ const losers = (d.top_losers ?? []);
291
+ if (Array.isArray(losers) && losers.length > 0) {
292
+ lines.push("");
293
+ lines.push("### Top Losers (24h)");
294
+ for (const l of losers.slice(0, 5)) {
295
+ const sym = (l.symbol ?? l.name ?? "?");
296
+ const chg = (l.price_change_24h ?? l.change);
297
+ lines.push(` ${sym}: ${fmtPct(chg)}`);
298
+ }
299
+ }
300
+ }
301
+ else {
302
+ lines.push("\n*Market overview data unavailable*");
303
+ }
304
+ // Narratives
305
+ if (narratives.data) {
306
+ let narrList = narratives.data;
307
+ if (typeof narrList === "object" &&
308
+ narrList !== null &&
309
+ !Array.isArray(narrList)) {
310
+ const obj = narrList;
311
+ narrList = obj.narratives ?? obj.items ?? narrList;
312
+ }
313
+ if (Array.isArray(narrList) && narrList.length > 0) {
314
+ const typed = narrList.filter((n) => typeof n === "object" && n !== null);
315
+ const sortedNarr = [...typed].sort((a, b) => {
316
+ const aChg = Number(a.change24h ?? a.price_change_24h ?? a.change_24h ?? 0);
317
+ const bChg = Number(b.change24h ?? b.price_change_24h ?? b.change_24h ?? 0);
318
+ return bChg - aChg;
319
+ });
320
+ lines.push("");
321
+ lines.push("### Top Narratives (24h)");
322
+ for (const n of sortedNarr.slice(0, 5)) {
323
+ const name = (n.name ?? n.narrative ?? "?");
324
+ const chg = (n.change24h ?? n.price_change_24h ?? n.change_24h);
325
+ const mcapN = (n.marketCap ?? n.market_cap);
326
+ lines.push(` **${name}:** ${fmtPct(chg)} (mcap: ${fmtUsd(mcapN)})`);
327
+ }
328
+ lines.push("");
329
+ lines.push("### Worst Narratives (24h)");
330
+ for (const n of sortedNarr.slice(-3)) {
331
+ const name = (n.name ?? n.narrative ?? "?");
332
+ const chg = (n.change24h ?? n.price_change_24h ?? n.change_24h);
333
+ lines.push(` **${name}:** ${fmtPct(chg)}`);
334
+ }
335
+ }
336
+ }
337
+ else {
338
+ lines.push("\n*Narrative data unavailable*");
339
+ }
340
+ // Funding highlights
341
+ if (funding.data) {
342
+ let ratesList = funding.data;
343
+ if (typeof ratesList === "object" &&
344
+ ratesList !== null &&
345
+ !Array.isArray(ratesList) &&
346
+ "items" in ratesList) {
347
+ ratesList = ratesList.items;
348
+ }
349
+ if (Array.isArray(ratesList) && ratesList.length > 0) {
350
+ const valid = ratesList.filter((r) => {
351
+ if (typeof r !== "object" || r === null)
352
+ return false;
353
+ const rec = r;
354
+ return (rec.rate ?? rec.funding_rate) != null;
355
+ });
356
+ if (valid.length > 0) {
357
+ const rateVal = (r) => Number(r.rate ?? r.funding_rate ?? 0);
358
+ const sorted = [...valid].sort((a, b) => rateVal(b) - rateVal(a));
359
+ lines.push("");
360
+ lines.push("### Funding Rate Highlights");
361
+ lines.push("**Highest (longs paying most):**");
362
+ for (const r of sorted.slice(0, 3)) {
363
+ const coinName = (r.base_coin ?? r.coin ?? r.symbol ?? "?");
364
+ const exchange = (r.exchange ?? "?");
365
+ lines.push(` ${coinName} on ${exchange}: ${fmtRate(rateVal(r))}`);
366
+ }
367
+ lines.push("**Lowest (shorts paying most):**");
368
+ for (const r of sorted.slice(-3)) {
369
+ const coinName = (r.base_coin ?? r.coin ?? r.symbol ?? "?");
370
+ const exchange = (r.exchange ?? "?");
371
+ lines.push(` ${coinName} on ${exchange}: ${fmtRate(rateVal(r))}`);
372
+ }
373
+ }
374
+ }
375
+ }
376
+ else {
377
+ lines.push("\n*Funding rate data unavailable*");
378
+ }
379
+ if (errors.length > 0) {
380
+ lines.push("");
381
+ lines.push(`**Data gaps:** ${errors.join("; ")}`);
382
+ }
383
+ return lines.join("\n");
384
+ }
385
+ // ── find_opportunities ────────────────────────────────────────────────
386
+ export async function findOpportunities(callApi) {
387
+ const results = await Promise.allSettled([
388
+ safeCall(callApi, "/api/v1/arbitrage/spot-perp", "/api/arbitrage/spot-perp", { exchange: "all", direction: "all" }, "spot-perp-arb"),
389
+ safeCall(callApi, "/api/v1/arbitrage/cross-exchange", "/api/arbitrage/cross-exchange", {}, "cross-exchange-arb"),
390
+ safeCall(callApi, "/api/v1/funding/rates", "/api/funding/rates", { type: "current" }, "funding"),
391
+ ]);
392
+ const settled = results.map((r) => r.status === "fulfilled"
393
+ ? r.value
394
+ : { data: null, error: "Promise rejected" });
395
+ const [spotPerp, crossEx, funding] = settled;
396
+ const errors = settled
397
+ .filter((s) => s.error)
398
+ .map((s) => s.error);
399
+ const lines = ["## Arbitrage Opportunities"];
400
+ // Spot-perp basis trades
401
+ if (spotPerp.data) {
402
+ let arbList = spotPerp.data;
403
+ if (typeof arbList === "object" &&
404
+ arbList !== null &&
405
+ !Array.isArray(arbList) &&
406
+ "items" in arbList) {
407
+ arbList = arbList.items;
408
+ }
409
+ if (Array.isArray(arbList) && arbList.length > 0) {
410
+ const typed = arbList.filter((a) => typeof a === "object" && a !== null);
411
+ const sorted = [...typed].sort((a, b) => {
412
+ return (Math.abs(Number(b.apr ?? b.annualized_apr ?? 0)) -
413
+ Math.abs(Number(a.apr ?? a.annualized_apr ?? 0)));
414
+ });
415
+ lines.push("");
416
+ lines.push("### Spot-Perp Basis Trades (Top 10 by APR)");
417
+ lines.push("*Long spot + short perp (or vice versa) to capture funding*");
418
+ lines.push("");
419
+ for (const a of sorted.slice(0, 10)) {
420
+ const symbol = (a.symbol ?? a.coin ?? "?");
421
+ const exchange = (a.exchange ?? "?");
422
+ const apr = (a.apr ?? a.annualized_apr ?? 0);
423
+ const rate = (a.fundingRate ?? a.rate ?? a.funding_rate);
424
+ const direction = (a.direction ?? "?");
425
+ const aprStr = apr != null ? `${apr.toFixed(1)}%` : "N/A";
426
+ const rateStr = rate != null ? fmtRate(rate) : "";
427
+ lines.push(` **${symbol}** on ${exchange} | APR: ${aprStr} | Rate: ${rateStr} | Dir: ${direction}`);
428
+ }
429
+ }
430
+ else {
431
+ lines.push("\n*No spot-perp opportunities found*");
432
+ }
433
+ }
434
+ else {
435
+ lines.push("\n*Spot-perp arbitrage data unavailable*");
436
+ }
437
+ // Cross-exchange funding arb
438
+ if (crossEx.data) {
439
+ let cxList = crossEx.data;
440
+ if (typeof cxList === "object" &&
441
+ cxList !== null &&
442
+ !Array.isArray(cxList) &&
443
+ "items" in cxList) {
444
+ cxList = cxList.items;
445
+ }
446
+ if (Array.isArray(cxList) && cxList.length > 0) {
447
+ const typed = cxList.filter((a) => typeof a === "object" && a !== null);
448
+ const sorted = [...typed].sort((a, b) => {
449
+ return (Math.abs(Number(b.apr ?? b.spread_apr ?? b.annualized_apr ?? 0)) -
450
+ Math.abs(Number(a.apr ?? a.spread_apr ?? a.annualized_apr ?? 0)));
451
+ });
452
+ lines.push("");
453
+ lines.push("### Cross-Exchange Funding Arb (Top 10 by APR)");
454
+ lines.push("*Long on low-rate exchange, short on high-rate exchange*");
455
+ lines.push("");
456
+ for (const a of sorted.slice(0, 10)) {
457
+ const symbol = (a.symbol ?? a.coin ?? "?");
458
+ const longEx = (a.longExchange ??
459
+ a.long_exchange ??
460
+ a.exchange_long ??
461
+ "?");
462
+ const shortEx = (a.shortExchange ??
463
+ a.short_exchange ??
464
+ a.exchange_short ??
465
+ "?");
466
+ const apr = (a.apr ?? a.spread_apr ?? a.annualized_apr ?? 0);
467
+ const spread = (a.spreadRate ?? a.spread ?? a.spread_rate);
468
+ const aprStr = apr != null ? `${apr.toFixed(1)}%` : "N/A";
469
+ const spreadStr = spread != null ? fmtRate(spread) : "";
470
+ lines.push(` **${symbol}** | Long ${longEx} / Short ${shortEx} | APR: ${aprStr} | Spread: ${spreadStr}`);
471
+ }
472
+ }
473
+ else {
474
+ lines.push("\n*No cross-exchange opportunities found*");
475
+ }
476
+ }
477
+ else {
478
+ lines.push("\n*Cross-exchange arbitrage data unavailable*");
479
+ }
480
+ // Funding rate summary
481
+ if (funding.data) {
482
+ let ratesList = funding.data;
483
+ if (typeof ratesList === "object" &&
484
+ ratesList !== null &&
485
+ !Array.isArray(ratesList) &&
486
+ "items" in ratesList) {
487
+ ratesList = ratesList.items;
488
+ }
489
+ if (Array.isArray(ratesList) && ratesList.length > 0) {
490
+ const valid = ratesList.filter((r) => {
491
+ if (typeof r !== "object" || r === null)
492
+ return false;
493
+ const rec = r;
494
+ return (rec.rate ?? rec.funding_rate) != null;
495
+ });
496
+ if (valid.length > 0) {
497
+ const allRates = valid.map((r) => Number(r.rate ?? r.funding_rate ?? 0));
498
+ const avg = allRates.reduce((a, b) => a + b, 0) / allRates.length;
499
+ const positive = allRates.filter((r) => r > 0).length;
500
+ const negative = allRates.filter((r) => r < 0).length;
501
+ lines.push("");
502
+ lines.push("### Funding Rate Summary");
503
+ lines.push(`**Avg Rate:** ${fmtRate(avg)}`);
504
+ lines.push(`**Positive (longs pay):** ${positive} | **Negative (shorts pay):** ${negative}`);
505
+ const sentiment = positive > negative * 1.5
506
+ ? "bullish"
507
+ : negative > positive * 1.5
508
+ ? "bearish"
509
+ : "neutral";
510
+ lines.push(`**Market Sentiment:** ${sentiment} (based on funding rate skew)`);
511
+ }
512
+ }
513
+ }
514
+ if (errors.length > 0) {
515
+ lines.push("");
516
+ lines.push(`**Data gaps:** ${errors.join("; ")}`);
517
+ }
518
+ return lines.join("\n");
519
+ }
520
+ //# sourceMappingURL=composite-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-tools.js","sourceRoot":"","sources":["../src/composite-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}