@cryptoquant_official/mcp 0.0.4 → 0.0.6-alpha

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 (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +330 -37
  3. package/dist/ai-sdk/anthropic.d.ts +125 -0
  4. package/dist/ai-sdk/anthropic.d.ts.map +1 -0
  5. package/dist/ai-sdk/anthropic.js +278 -0
  6. package/dist/ai-sdk/anthropic.js.map +1 -0
  7. package/dist/ai-sdk/execute.d.ts +35 -0
  8. package/dist/ai-sdk/execute.d.ts.map +1 -0
  9. package/dist/ai-sdk/execute.js +531 -0
  10. package/dist/ai-sdk/execute.js.map +1 -0
  11. package/dist/ai-sdk/index.d.ts +53 -0
  12. package/dist/ai-sdk/index.d.ts.map +1 -0
  13. package/dist/ai-sdk/index.js +56 -0
  14. package/dist/ai-sdk/index.js.map +1 -0
  15. package/dist/ai-sdk/prompts.d.ts +34 -0
  16. package/dist/ai-sdk/prompts.d.ts.map +1 -0
  17. package/dist/ai-sdk/prompts.js +74 -0
  18. package/dist/ai-sdk/prompts.js.map +1 -0
  19. package/dist/ai-sdk/schemas.d.ts +66 -0
  20. package/dist/ai-sdk/schemas.d.ts.map +1 -0
  21. package/dist/ai-sdk/schemas.js +136 -0
  22. package/dist/ai-sdk/schemas.js.map +1 -0
  23. package/dist/ai-sdk/tools.d.ts +165 -0
  24. package/dist/ai-sdk/tools.d.ts.map +1 -0
  25. package/dist/ai-sdk/tools.js +152 -0
  26. package/dist/ai-sdk/tools.js.map +1 -0
  27. package/dist/ai-sdk/types.d.ts +149 -0
  28. package/dist/ai-sdk/types.d.ts.map +1 -0
  29. package/dist/ai-sdk/types.js +5 -0
  30. package/dist/ai-sdk/types.js.map +1 -0
  31. package/dist/core/auth/storage.d.ts.map +1 -0
  32. package/dist/core/auth/storage.js.map +1 -0
  33. package/dist/core/cache/storage.d.ts +110 -0
  34. package/dist/core/cache/storage.d.ts.map +1 -0
  35. package/dist/core/cache/storage.js +356 -0
  36. package/dist/core/cache/storage.js.map +1 -0
  37. package/dist/core/cache/summary.d.ts.map +1 -0
  38. package/dist/core/cache/summary.js.map +1 -0
  39. package/dist/{cache → core/cache}/types.d.ts +25 -0
  40. package/dist/{cache → core/cache}/types.d.ts.map +1 -1
  41. package/dist/core/cache/types.js.map +1 -0
  42. package/dist/core/config.d.ts.map +1 -0
  43. package/dist/core/config.js.map +1 -0
  44. package/dist/core/discovery.d.ts.map +1 -0
  45. package/dist/{discovery.js → core/discovery.js} +14 -2
  46. package/dist/core/discovery.js.map +1 -0
  47. package/dist/core/index.d.ts +16 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +19 -0
  50. package/dist/core/index.js.map +1 -0
  51. package/dist/{permissions.d.ts → core/permissions.d.ts} +2 -2
  52. package/dist/core/permissions.d.ts.map +1 -0
  53. package/dist/{permissions.js → core/permissions.js} +38 -14
  54. package/dist/core/permissions.js.map +1 -0
  55. package/dist/core/plan-limits.d.ts.map +1 -0
  56. package/dist/core/plan-limits.js.map +1 -0
  57. package/dist/{utils.d.ts → core/utils.d.ts} +13 -0
  58. package/dist/core/utils.d.ts.map +1 -0
  59. package/dist/{utils.js → core/utils.js} +34 -0
  60. package/dist/core/utils.js.map +1 -0
  61. package/dist/data/metrics.toon +8 -5
  62. package/dist/http/chat-proxy.d.ts +32 -0
  63. package/dist/http/chat-proxy.d.ts.map +1 -0
  64. package/dist/http/chat-proxy.js +310 -0
  65. package/dist/http/chat-proxy.js.map +1 -0
  66. package/dist/http/index.d.ts +12 -0
  67. package/dist/http/index.d.ts.map +1 -0
  68. package/dist/http/index.js +30 -0
  69. package/dist/http/index.js.map +1 -0
  70. package/dist/http/server.d.ts +20 -0
  71. package/dist/http/server.d.ts.map +1 -0
  72. package/dist/http/server.js +231 -0
  73. package/dist/http/server.js.map +1 -0
  74. package/dist/shared/metrics-data.generated.d.ts +176 -0
  75. package/dist/shared/metrics-data.generated.d.ts.map +1 -0
  76. package/dist/shared/metrics-data.generated.js +3077 -0
  77. package/dist/shared/metrics-data.generated.js.map +1 -0
  78. package/dist/stdio/index.d.ts +10 -0
  79. package/dist/stdio/index.d.ts.map +1 -0
  80. package/dist/stdio/index.js +30 -0
  81. package/dist/stdio/index.js.map +1 -0
  82. package/dist/stdio/tools/auth.d.ts +3 -0
  83. package/dist/stdio/tools/auth.d.ts.map +1 -0
  84. package/dist/{tools → stdio/tools}/auth.js +38 -12
  85. package/dist/stdio/tools/auth.js.map +1 -0
  86. package/dist/stdio/tools/core.d.ts +3 -0
  87. package/dist/stdio/tools/core.d.ts.map +1 -0
  88. package/dist/{tools → stdio/tools}/core.js +122 -162
  89. package/dist/stdio/tools/core.js.map +1 -0
  90. package/package.json +55 -14
  91. package/dist/auth/storage.d.ts.map +0 -1
  92. package/dist/auth/storage.js.map +0 -1
  93. package/dist/cache/storage.d.ts +0 -47
  94. package/dist/cache/storage.d.ts.map +0 -1
  95. package/dist/cache/storage.js +0 -140
  96. package/dist/cache/storage.js.map +0 -1
  97. package/dist/cache/summary.d.ts.map +0 -1
  98. package/dist/cache/summary.js.map +0 -1
  99. package/dist/cache/types.js.map +0 -1
  100. package/dist/config.d.ts.map +0 -1
  101. package/dist/config.js.map +0 -1
  102. package/dist/discovery.d.ts.map +0 -1
  103. package/dist/discovery.js.map +0 -1
  104. package/dist/index.d.ts +0 -18
  105. package/dist/index.d.ts.map +0 -1
  106. package/dist/index.js +0 -46
  107. package/dist/index.js.map +0 -1
  108. package/dist/permissions.d.ts.map +0 -1
  109. package/dist/permissions.js.map +0 -1
  110. package/dist/plan-limits.d.ts.map +0 -1
  111. package/dist/plan-limits.js.map +0 -1
  112. package/dist/tools/auth.d.ts +0 -3
  113. package/dist/tools/auth.d.ts.map +0 -1
  114. package/dist/tools/auth.js.map +0 -1
  115. package/dist/tools/core.d.ts +0 -3
  116. package/dist/tools/core.d.ts.map +0 -1
  117. package/dist/tools/core.js.map +0 -1
  118. package/dist/utils.d.ts.map +0 -1
  119. package/dist/utils.js.map +0 -1
  120. /package/dist/{auth → core/auth}/storage.d.ts +0 -0
  121. /package/dist/{auth → core/auth}/storage.js +0 -0
  122. /package/dist/{cache → core/cache}/summary.d.ts +0 -0
  123. /package/dist/{cache → core/cache}/summary.js +0 -0
  124. /package/dist/{cache → core/cache}/types.js +0 -0
  125. /package/dist/{config.d.ts → core/config.d.ts} +0 -0
  126. /package/dist/{config.js → core/config.js} +0 -0
  127. /package/dist/{discovery.d.ts → core/discovery.d.ts} +0 -0
  128. /package/dist/{plan-limits.d.ts → core/plan-limits.d.ts} +0 -0
  129. /package/dist/{plan-limits.js → core/plan-limits.js} +0 -0
@@ -0,0 +1,531 @@
1
+ /**
2
+ * Tool execution logic for CryptoQuant tools
3
+ * Shared between AI SDK integration and chat-proxy
4
+ */
5
+ import { getApiBaseUrl, getApiUrl } from "../core/config.js";
6
+ import { getEndpointByPath, getParameterOptions, isDiscoveryLoaded, searchEndpoints, validateEndpointParams, } from "../core/discovery.js";
7
+ import { getPermissionState, initializePermissions, resetPermissions, } from "../core/permissions.js";
8
+ import { getPlanLimitsState, getRequiredPlan, hasEndpointAccess, validateDateRange, } from "../core/plan-limits.js";
9
+ import { logger } from "../core/utils.js";
10
+ import { METRIC_DEFINITIONS, SCORING_RULES, calculateScore, calculateTradingSignal, getAvailableMetrics, } from "../shared/metrics-data.generated.js";
11
+ /**
12
+ * Execute initialize tool
13
+ */
14
+ export async function executeInitialize(params, context) {
15
+ const apiKey = params.api_key || context.cryptoquantApiKey;
16
+ if (!apiKey) {
17
+ return {
18
+ success: false,
19
+ error: "API key required. Provide cryptoquant_api_key in the config.",
20
+ };
21
+ }
22
+ // Skip re-initialization if already authenticated with the same API key
23
+ const currentState = getPermissionState();
24
+ if (currentState.authenticated &&
25
+ currentState.api_key === apiKey &&
26
+ isDiscoveryLoaded()) {
27
+ logger.debug("[executeInitialize] already initialized, skipping");
28
+ const planState = getPlanLimitsState();
29
+ return {
30
+ success: true,
31
+ plan: planState.plan,
32
+ message: "Already initialized (cached)",
33
+ from_cache: true,
34
+ };
35
+ }
36
+ const apiUrl = getApiUrl();
37
+ resetPermissions();
38
+ const result = await initializePermissions(apiKey, apiUrl);
39
+ if (!result.success) {
40
+ return {
41
+ success: false,
42
+ error: result.error || "Failed to initialize",
43
+ };
44
+ }
45
+ // Note: fetchDiscoveryEndpoints is already called inside initializePermissions
46
+ const planState = getPlanLimitsState();
47
+ return {
48
+ success: true,
49
+ plan: planState.plan,
50
+ message: "CryptoQuant session initialized successfully",
51
+ };
52
+ }
53
+ /**
54
+ * Execute discover_endpoints tool
55
+ */
56
+ export async function executeDiscoverEndpoints(params) {
57
+ const state = getPermissionState();
58
+ if (!state.authenticated) {
59
+ return {
60
+ success: false,
61
+ error: "Not authenticated. Call initialize first.",
62
+ };
63
+ }
64
+ if (!isDiscoveryLoaded()) {
65
+ return {
66
+ success: false,
67
+ error: "Discovery data not loaded. Try initializing again.",
68
+ };
69
+ }
70
+ const endpoints = searchEndpoints({
71
+ asset: params.asset,
72
+ category: params.category,
73
+ query: params.query,
74
+ });
75
+ // Group by category for cleaner output
76
+ const grouped = {};
77
+ for (const ep of endpoints.slice(0, 50)) {
78
+ // Limit to 50 for readability
79
+ grouped[ep.category] ??= [];
80
+ grouped[ep.category].push({ path: ep.path, metric: ep.metric });
81
+ }
82
+ return {
83
+ success: true,
84
+ total_found: endpoints.length,
85
+ showing: Math.min(endpoints.length, 50),
86
+ endpoints: grouped,
87
+ };
88
+ }
89
+ /**
90
+ * Execute query_data tool
91
+ */
92
+ export async function executeQueryData(params, _context) {
93
+ const state = getPermissionState();
94
+ if (!state.authenticated || !state.api_key) {
95
+ return {
96
+ success: false,
97
+ error: "Not authenticated. Call initialize first.",
98
+ };
99
+ }
100
+ const endpointPath = params.endpoint;
101
+ const endpoint = getEndpointByPath(endpointPath);
102
+ if (!endpoint) {
103
+ // Try to suggest similar endpoints
104
+ const suggestions = searchEndpoints({
105
+ query: endpointPath.split("/").pop() || "",
106
+ })
107
+ .slice(0, 3)
108
+ .map((e) => e.path);
109
+ return {
110
+ success: false,
111
+ error: `Unknown endpoint: ${endpointPath}`,
112
+ suggestions,
113
+ };
114
+ }
115
+ // Build query params
116
+ const queryParams = {};
117
+ if (params.window)
118
+ queryParams.window = params.window;
119
+ if (params.limit)
120
+ queryParams.limit = params.limit;
121
+ if (params.from)
122
+ queryParams.from = params.from;
123
+ if (params.to)
124
+ queryParams.to = params.to;
125
+ // Validate params
126
+ const validation = validateEndpointParams(endpoint, queryParams);
127
+ if (!validation.valid) {
128
+ const paramOptions = getParameterOptions(endpointPath);
129
+ return {
130
+ success: false,
131
+ error: "Invalid parameters",
132
+ details: validation.errors?.join(", "),
133
+ available_parameters: paramOptions?.parameters,
134
+ };
135
+ }
136
+ // Check plan access
137
+ const planState = getPlanLimitsState();
138
+ if (planState.loaded && !hasEndpointAccess(endpointPath)) {
139
+ const requiredPlan = getRequiredPlan(endpointPath);
140
+ return {
141
+ success: false,
142
+ error: "Endpoint not accessible on your plan",
143
+ your_plan: planState.plan,
144
+ required_plan: requiredPlan,
145
+ };
146
+ }
147
+ // Validate date range
148
+ if (planState.loaded && queryParams.from) {
149
+ const dateValidation = validateDateRange(endpointPath, queryParams.from, queryParams.window);
150
+ if (!dateValidation.valid) {
151
+ return {
152
+ success: false,
153
+ error: dateValidation.error || "Date range exceeds plan limit",
154
+ earliest_allowed: dateValidation.earliest_allowed,
155
+ };
156
+ }
157
+ }
158
+ // Make API request
159
+ try {
160
+ const urlParams = new URLSearchParams();
161
+ for (const [key, value] of Object.entries(queryParams)) {
162
+ if (value !== undefined && value !== null) {
163
+ urlParams.set(key, String(value));
164
+ }
165
+ }
166
+ if (!urlParams.has("limit")) {
167
+ urlParams.set("limit", "30");
168
+ }
169
+ const apiUrl = getApiBaseUrl();
170
+ const fullUrl = `${apiUrl}${endpointPath}?${urlParams.toString()}`;
171
+ logger.debug(`[execute] querying: ${fullUrl}`);
172
+ const response = await fetch(fullUrl, {
173
+ method: "GET",
174
+ headers: { Authorization: `Bearer ${state.api_key}` },
175
+ });
176
+ if (!response.ok) {
177
+ const errorBody = await response.text();
178
+ return {
179
+ success: false,
180
+ error: `API request failed: ${response.status}`,
181
+ details: errorBody,
182
+ };
183
+ }
184
+ const data = await response.json();
185
+ return {
186
+ success: true,
187
+ endpoint: endpointPath,
188
+ ...data,
189
+ };
190
+ }
191
+ catch (error) {
192
+ return {
193
+ success: false,
194
+ error: `Network error: ${error}`,
195
+ };
196
+ }
197
+ }
198
+ /**
199
+ * Execute describe_metric tool
200
+ */
201
+ export async function executeDescribeMetric(params) {
202
+ const metricId = params.metric_id?.toLowerCase();
203
+ const definition = METRIC_DEFINITIONS[metricId];
204
+ if (definition) {
205
+ return {
206
+ success: true,
207
+ metric: definition,
208
+ };
209
+ }
210
+ return {
211
+ success: false,
212
+ error: `Unknown metric: ${metricId}`,
213
+ available: getAvailableMetrics(),
214
+ };
215
+ }
216
+ /**
217
+ * Execute market_summary tool
218
+ */
219
+ export async function executeMarketSummary(params, _context) {
220
+ const state = getPermissionState();
221
+ if (!state.authenticated || !state.api_key) {
222
+ return {
223
+ success: false,
224
+ error: "Not authenticated. Call initialize first.",
225
+ };
226
+ }
227
+ const asset = params.asset || "btc";
228
+ const apiUrl = getApiBaseUrl();
229
+ // Query metrics in parallel
230
+ const endpoints = {
231
+ mvrv: `/v1/${asset}/market-indicator/mvrv`,
232
+ sopr: `/v1/${asset}/market-indicator/sopr`,
233
+ netflow: `/v1/${asset}/exchange-flows/netflow`,
234
+ };
235
+ try {
236
+ const results = await Promise.all(Object.entries(endpoints).map(async ([key, endpoint]) => {
237
+ const url = `${apiUrl}${endpoint}?window=day&limit=1`;
238
+ const response = await fetch(url, {
239
+ headers: { Authorization: `Bearer ${state.api_key}` },
240
+ });
241
+ if (!response.ok)
242
+ return { key, value: null };
243
+ const data = await response.json();
244
+ const value = data.result?.[0]?.value ?? data.result?.[0]?.netflow ?? null;
245
+ return { key, value };
246
+ }));
247
+ const metrics = [];
248
+ let bullishCount = 0;
249
+ let bearishCount = 0;
250
+ for (const { key, value } of results) {
251
+ if (value === null)
252
+ continue;
253
+ const score = calculateScore(key, value);
254
+ let signal;
255
+ let emoji;
256
+ if (score >= 70) {
257
+ signal = "bullish";
258
+ emoji = "🟢";
259
+ bullishCount++;
260
+ }
261
+ else if (score >= 45) {
262
+ signal = "neutral";
263
+ emoji = "🟡";
264
+ }
265
+ else if (score >= 30) {
266
+ signal = "caution";
267
+ emoji = "🟠";
268
+ }
269
+ else {
270
+ signal = "bearish";
271
+ emoji = "🔴";
272
+ bearishCount++;
273
+ }
274
+ metrics.push({
275
+ metric: key.toUpperCase(),
276
+ value: typeof value === "number" ? Number(value.toFixed(4)) : value,
277
+ signal,
278
+ emoji,
279
+ });
280
+ }
281
+ // Determine overall signal
282
+ let overallSignal;
283
+ if (bullishCount >= 3)
284
+ overallSignal = "Bullish";
285
+ else if (bullishCount >= 2)
286
+ overallSignal = "Slightly Bullish";
287
+ else if (bearishCount >= 3)
288
+ overallSignal = "Bearish";
289
+ else if (bearishCount >= 2)
290
+ overallSignal = "Slightly Bearish";
291
+ else
292
+ overallSignal = "Neutral";
293
+ return {
294
+ success: true,
295
+ asset: asset.toUpperCase(),
296
+ metrics,
297
+ overall: {
298
+ signal: overallSignal,
299
+ bullishCount,
300
+ bearishCount,
301
+ },
302
+ insight: generateMarketInsight(metrics),
303
+ };
304
+ }
305
+ catch (error) {
306
+ return {
307
+ success: false,
308
+ error: `Failed to fetch market data: ${error}`,
309
+ };
310
+ }
311
+ }
312
+ /**
313
+ * Execute trading_signal tool
314
+ */
315
+ export async function executeTradingSignal(params, _context) {
316
+ const state = getPermissionState();
317
+ if (!state.authenticated || !state.api_key) {
318
+ return {
319
+ success: false,
320
+ error: "Not authenticated. Call initialize first.",
321
+ };
322
+ }
323
+ const asset = params.asset || "btc";
324
+ const apiUrl = getApiBaseUrl();
325
+ // Query metrics for signal calculation
326
+ const endpoints = {
327
+ mvrv: `/v1/${asset}/market-indicator/mvrv`,
328
+ sopr: `/v1/${asset}/market-indicator/sopr`,
329
+ netflow: `/v1/${asset}/exchange-flows/netflow`,
330
+ "funding-rates": `/v1/${asset}/market-data/funding-rates`,
331
+ };
332
+ try {
333
+ const metricValues = {};
334
+ const metricScores = [];
335
+ const results = await Promise.all(Object.entries(endpoints).map(async ([key, endpoint]) => {
336
+ const url = `${apiUrl}${endpoint}?window=day&limit=1`;
337
+ const response = await fetch(url, {
338
+ headers: { Authorization: `Bearer ${state.api_key}` },
339
+ });
340
+ if (!response.ok)
341
+ return { key, value: null };
342
+ const data = await response.json();
343
+ const value = data.result?.[0]?.value ?? data.result?.[0]?.netflow ?? data.result?.[0]?.rate ?? null;
344
+ return { key, value };
345
+ }));
346
+ for (const { key, value } of results) {
347
+ if (value === null)
348
+ continue;
349
+ metricValues[key] = value;
350
+ const score = calculateScore(key, value);
351
+ const scoring = SCORING_RULES[key];
352
+ const weight = scoring ? `${Math.round(scoring.weight * 100)}%` : "N/A";
353
+ metricScores.push({
354
+ metric: key.toUpperCase(),
355
+ value: typeof value === "number" ? Number(value.toFixed(6)) : value,
356
+ score,
357
+ weight,
358
+ });
359
+ }
360
+ const { signal, confidence } = calculateTradingSignal(metricValues);
361
+ // Generate analysis
362
+ const analysis = {
363
+ bullish: [],
364
+ neutral: [],
365
+ bearish: [],
366
+ };
367
+ for (const ms of metricScores) {
368
+ if (ms.score >= 70) {
369
+ analysis.bullish.push(`${ms.metric} indicates buying opportunity`);
370
+ }
371
+ else if (ms.score >= 40) {
372
+ analysis.neutral.push(`${ms.metric} is neutral`);
373
+ }
374
+ else {
375
+ analysis.bearish.push(`${ms.metric} shows caution`);
376
+ }
377
+ }
378
+ return {
379
+ success: true,
380
+ asset: asset.toUpperCase(),
381
+ signal,
382
+ confidence,
383
+ metrics: metricScores,
384
+ analysis,
385
+ disclaimer: "This is not financial advice. Always do your own research.",
386
+ };
387
+ }
388
+ catch (error) {
389
+ return {
390
+ success: false,
391
+ error: `Failed to calculate trading signal: ${error}`,
392
+ };
393
+ }
394
+ }
395
+ /**
396
+ * Execute whale_activity tool
397
+ */
398
+ export async function executeWhaleActivity(params, _context) {
399
+ const state = getPermissionState();
400
+ if (!state.authenticated || !state.api_key) {
401
+ return {
402
+ success: false,
403
+ error: "Not authenticated. Call initialize first.",
404
+ };
405
+ }
406
+ const asset = params.asset || "btc";
407
+ const timeframe = params.timeframe || "24h";
408
+ const apiUrl = getApiBaseUrl();
409
+ // Determine limit based on timeframe
410
+ const limitMap = { "24h": 1, "7d": 7, "30d": 30 };
411
+ const limit = limitMap[timeframe] || 1;
412
+ try {
413
+ // Query flow data (available on free plan)
414
+ const flowEndpoints = {
415
+ inflow: `/v1/${asset}/exchange-flows/inflow`,
416
+ outflow: `/v1/${asset}/exchange-flows/outflow`,
417
+ netflow: `/v1/${asset}/exchange-flows/netflow`,
418
+ };
419
+ const flowResults = await Promise.all(Object.entries(flowEndpoints).map(async ([key, endpoint]) => {
420
+ const url = `${apiUrl}${endpoint}?window=day&limit=${limit}&exchange=all_exchange`;
421
+ const response = await fetch(url, {
422
+ headers: { Authorization: `Bearer ${state.api_key}` },
423
+ });
424
+ if (!response.ok)
425
+ return { key, value: null };
426
+ const data = await response.json();
427
+ // Sum values for timeframe
428
+ const values = data.result?.map((r) => r.value ?? r[key] ?? 0) || [];
429
+ const total = values.reduce((a, b) => a + b, 0);
430
+ return { key, value: total };
431
+ }));
432
+ const flows = {
433
+ inflow: 0,
434
+ outflow: 0,
435
+ netflow: 0,
436
+ };
437
+ for (const { key, value } of flowResults) {
438
+ if (value !== null && key in flows) {
439
+ flows[key] = Math.round(value);
440
+ }
441
+ }
442
+ // Try to get whale ratio (may require professional plan)
443
+ let whaleRatio;
444
+ let whaleStatus;
445
+ try {
446
+ const whaleUrl = `${apiUrl}/v1/${asset}/flow-indicator/exchange-whale-ratio?window=day&limit=1`;
447
+ const whaleResponse = await fetch(whaleUrl, {
448
+ headers: { Authorization: `Bearer ${state.api_key}` },
449
+ });
450
+ if (whaleResponse.ok) {
451
+ const whaleData = await whaleResponse.json();
452
+ whaleRatio = whaleData.result?.[0]?.value;
453
+ if (whaleRatio !== undefined) {
454
+ if (whaleRatio < 0.3)
455
+ whaleStatus = "Retail dominated";
456
+ else if (whaleRatio < 0.5)
457
+ whaleStatus = "Mixed";
458
+ else if (whaleRatio < 0.7)
459
+ whaleStatus = "Whale heavy";
460
+ else if (whaleRatio < 0.85)
461
+ whaleStatus = "Whale dominated";
462
+ else
463
+ whaleStatus = "Extreme whale activity";
464
+ }
465
+ }
466
+ }
467
+ catch {
468
+ // Whale ratio not available on current plan
469
+ }
470
+ // Determine behavior and signal
471
+ let behavior;
472
+ let signal;
473
+ if (flows.netflow < -1000) {
474
+ behavior = "Accumulation (outflow dominant)";
475
+ signal = whaleRatio && whaleRatio > 0.5 ? "Whale accumulation - Bullish" : "Accumulation - Bullish";
476
+ }
477
+ else if (flows.netflow > 1000) {
478
+ behavior = "Distribution (inflow dominant)";
479
+ signal = whaleRatio && whaleRatio > 0.5 ? "Whale distribution - Bearish" : "Distribution - Bearish";
480
+ }
481
+ else {
482
+ behavior = "Balanced flow";
483
+ signal = "Neutral";
484
+ }
485
+ return {
486
+ success: true,
487
+ asset: asset.toUpperCase(),
488
+ timeframe,
489
+ whaleRatio: whaleRatio ? Number(whaleRatio.toFixed(4)) : undefined,
490
+ whaleStatus,
491
+ flows,
492
+ behavior,
493
+ signal,
494
+ note: whaleRatio === undefined ? "Whale ratio requires Professional plan. Showing flow data only." : undefined,
495
+ };
496
+ }
497
+ catch (error) {
498
+ return {
499
+ success: false,
500
+ error: `Failed to fetch whale activity: ${error}`,
501
+ };
502
+ }
503
+ }
504
+ /**
505
+ * Generate market insight from metrics
506
+ */
507
+ function generateMarketInsight(metrics) {
508
+ if (!metrics || metrics.length === 0)
509
+ return "Insufficient data for insight.";
510
+ const insights = [];
511
+ for (const m of metrics) {
512
+ if (m.signal === "bullish") {
513
+ if (m.metric === "MVRV")
514
+ insights.push("MVRV suggests undervaluation");
515
+ else if (m.metric === "SOPR")
516
+ insights.push("SOPR indicates capitulation");
517
+ else if (m.metric === "NETFLOW")
518
+ insights.push("Exchange outflows suggest accumulation");
519
+ }
520
+ else if (m.signal === "bearish") {
521
+ if (m.metric === "MVRV")
522
+ insights.push("MVRV shows overheated conditions");
523
+ else if (m.metric === "SOPR")
524
+ insights.push("SOPR shows heavy profit taking");
525
+ else if (m.metric === "NETFLOW")
526
+ insights.push("Exchange inflows suggest distribution");
527
+ }
528
+ }
529
+ return insights.length > 0 ? insights.join(". ") + "." : "Mixed signals across metrics.";
530
+ }
531
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/ai-sdk/execute.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAqB1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAwB,EACxB,OAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAE3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,8DAA8D;SACtE,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,IACE,YAAY,CAAC,aAAa;QAC1B,YAAY,CAAC,OAAO,KAAK,MAAM;QAC/B,iBAAiB,EAAE,EACnB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,8BAA8B;YACvC,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,gBAAgB,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,sBAAsB;SAC9C,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EAAE,8CAA8C;KACxD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAA+B;IAE/B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2CAA2C;SACnD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,oDAAoD;SAC5D,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,OAAO,GAA4D,EAAE,CAAC;IAC5E,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACxC,8BAA8B;QAC9B,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,SAAS,CAAC,MAAM;QAC7B,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,SAAS,EAAE,OAAO;KACnB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAuB,EACvB,QAA8B;IAE9B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2CAA2C;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;IACrC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,mCAAmC;QACnC,MAAM,WAAW,GAAG,eAAe,CAAC;YAClC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;SAC3C,CAAC;aACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qBAAqB,YAAY,EAAE;YAC1C,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM;QAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACtD,IAAI,MAAM,CAAC,KAAK;QAAE,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI;QAAE,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAChD,IAAI,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IAE1C,kBAAkB;IAClB,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YACtC,oBAAoB,EAAE,YAAY,EAAE,UAAU;SAC/C,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,sCAAsC;YAC7C,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,aAAa,EAAE,YAAY;SAC5B,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,SAAS,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,iBAAiB,CACtC,YAAY,EACZ,WAAW,CAAC,IAAc,EAC1B,WAAW,CAAC,MAA4B,CACzC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,+BAA+B;gBAC9D,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;aAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,YAAY,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;QAEnE,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACpC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,uBAAuB,QAAQ,CAAC,MAAM,EAAE;gBAC/C,OAAO,EAAE,SAAS;aACnB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,YAAY;YACtB,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kBAAkB,KAAK,EAAE;SACjC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAA4B;IAE5B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,mBAAmB,QAAQ,EAAE;QACpC,SAAS,EAAE,mBAAmB,EAAE;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA2B,EAC3B,QAA8B;IAE9B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2CAA2C;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,4BAA4B;IAC5B,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO,KAAK,wBAAwB;QAC1C,IAAI,EAAE,OAAO,KAAK,wBAAwB;QAC1C,OAAO,EAAE,OAAO,KAAK,yBAAyB;KAC/C,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,qBAAqB,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;YAC3E,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,GAAmC,EAAE,CAAC;QACnD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;YACrC,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAE7B,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,MAAqD,CAAC;YAC1D,IAAI,KAAa,CAAC;YAElB,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBAChB,MAAM,GAAG,SAAS,CAAC;gBACnB,KAAK,GAAG,IAAI,CAAC;gBACb,YAAY,EAAE,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBACvB,MAAM,GAAG,SAAS,CAAC;gBACnB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBACvB,MAAM,GAAG,SAAS,CAAC;gBACnB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,SAAS,CAAC;gBACnB,KAAK,GAAG,IAAI,CAAC;gBACb,YAAY,EAAE,CAAC;YACjB,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE;gBACzB,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;gBACnE,MAAM;gBACN,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,IAAI,aAAqB,CAAC;QAC1B,IAAI,YAAY,IAAI,CAAC;YAAE,aAAa,GAAG,SAAS,CAAC;aAC5C,IAAI,YAAY,IAAI,CAAC;YAAE,aAAa,GAAG,kBAAkB,CAAC;aAC1D,IAAI,YAAY,IAAI,CAAC;YAAE,aAAa,GAAG,SAAS,CAAC;aACjD,IAAI,YAAY,IAAI,CAAC;YAAE,aAAa,GAAG,kBAAkB,CAAC;;YAC1D,aAAa,GAAG,SAAS,CAAC;QAE/B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;YAC1B,OAAO;YACP,OAAO,EAAE;gBACP,MAAM,EAAE,aAAa;gBACrB,YAAY;gBACZ,YAAY;aACb;YACD,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gCAAgC,KAAK,EAAE;SAC/C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA2B,EAC3B,QAA8B;IAE9B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2CAA2C;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,uCAAuC;IACvC,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO,KAAK,wBAAwB;QAC1C,IAAI,EAAE,OAAO,KAAK,wBAAwB;QAC1C,OAAO,EAAE,OAAO,KAAK,yBAAyB;QAC9C,eAAe,EAAE,OAAO,KAAK,4BAA4B;KAC1D,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,MAAM,YAAY,GAAmC,EAAE,CAAC;QAExD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtD,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,qBAAqB,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;YACrG,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;YACrC,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAE1B,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAExE,YAAY,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE;gBACzB,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;gBACnE,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,EAAc;YACvB,OAAO,EAAE,EAAc;YACvB,OAAO,EAAE,EAAc;SACxB,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACnB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,+BAA+B,CAAC,CAAC;YACrE,CAAC;iBAAM,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBAC1B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,aAAa,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,gBAAgB,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;YAC1B,MAAM;YACN,UAAU;YACV,OAAO,EAAE,YAAY;YACrB,QAAQ;YACR,UAAU,EAAE,4DAA4D;SACzE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,uCAAuC,KAAK,EAAE;SACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA2B,EAC3B,QAA8B;IAE9B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2CAA2C;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,qCAAqC;IACrC,MAAM,QAAQ,GAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,aAAa,GAAG;YACpB,MAAM,EAAE,OAAO,KAAK,wBAAwB;YAC5C,OAAO,EAAE,OAAO,KAAK,yBAAyB;YAC9C,OAAO,EAAE,OAAO,KAAK,yBAAyB;SAC/C,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC1D,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,qBAAqB,KAAK,wBAAwB,CAAC;YACnF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,2BAA2B;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,KAAK,GAAiC;YAC1C,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACX,CAAC;QAEF,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;YACzC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;gBACnC,KAAK,CAAC,GAAyB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,IAAI,UAA8B,CAAC;QACnC,IAAI,WAA+B,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,GAAG,MAAM,OAAO,KAAK,yDAAyD,CAAC;YAChG,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;gBAC1C,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;YAEH,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC7C,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;gBAE1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,IAAI,UAAU,GAAG,GAAG;wBAAE,WAAW,GAAG,kBAAkB,CAAC;yBAClD,IAAI,UAAU,GAAG,GAAG;wBAAE,WAAW,GAAG,OAAO,CAAC;yBAC5C,IAAI,UAAU,GAAG,GAAG;wBAAE,WAAW,GAAG,aAAa,CAAC;yBAClD,IAAI,UAAU,GAAG,IAAI;wBAAE,WAAW,GAAG,iBAAiB,CAAC;;wBACvD,WAAW,GAAG,wBAAwB,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;QAED,gCAAgC;QAChC,IAAI,QAAgB,CAAC;QACrB,IAAI,MAAc,CAAC;QAEnB,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1B,QAAQ,GAAG,iCAAiC,CAAC;YAC7C,MAAM,GAAG,UAAU,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,wBAAwB,CAAC;QACtG,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;YAChC,QAAQ,GAAG,gCAAgC,CAAC;YAC5C,MAAM,GAAG,UAAU,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,wBAAwB,CAAC;QACtG,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,eAAe,CAAC;YAC3B,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;YAC1B,SAAS;YACT,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAClE,WAAW;YACX,KAAK;YACL,QAAQ;YACR,MAAM;YACN,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,SAAS;SAC/G,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mCAAmC,KAAK,EAAE;SAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAuC;IACpE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,gCAAgC,CAAC;IAE9E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;iBAClE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;iBACtE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC3F,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;iBACtE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;iBACzE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,+BAA+B,CAAC;AAC3F,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * CryptoQuant AI SDK Integration
3
+ *
4
+ * Provides CryptoQuant on-chain analytics tools for use with Vercel AI SDK.
5
+ *
6
+ * @packageDocumentation
7
+ *
8
+ * @example Quick Start
9
+ * ```typescript
10
+ * // 1. Install dependencies
11
+ * // npm install @cryptoquant_official/mcp ai @ai-sdk/react @ai-sdk/anthropic
12
+ *
13
+ * // 2. Create API route (app/api/chat/route.ts)
14
+ * import { streamText } from 'ai'
15
+ * import { anthropic } from '@ai-sdk/anthropic'
16
+ * import { createCryptoQuantTools } from '@cryptoquant_official/mcp/ai-sdk'
17
+ *
18
+ * export async function POST(req: Request) {
19
+ * const { messages } = await req.json()
20
+ *
21
+ * const result = streamText({
22
+ * model: anthropic('claude-sonnet-4-20250514'),
23
+ * messages,
24
+ * tools: createCryptoQuantTools({
25
+ * cryptoquantApiKey: process.env.CRYPTOQUANT_API_KEY!,
26
+ * }),
27
+ * maxSteps: 5,
28
+ * })
29
+ *
30
+ * return result.toDataStreamResponse()
31
+ * }
32
+ *
33
+ * // 3. Use in client component
34
+ * 'use client'
35
+ * import { useChat } from '@ai-sdk/react'
36
+ *
37
+ * export function Chat() {
38
+ * const { messages, input, handleSubmit, handleInputChange } = useChat()
39
+ * // ... render chat UI
40
+ * }
41
+ * ```
42
+ */
43
+ export { createCryptoQuantTools, cryptoQuantTools } from "./tools.js";
44
+ export { createAnthropicTools, createToolExecutor, getToolNames, isValidToolName, toolCacheTTL, } from "./anthropic.js";
45
+ export type { AnthropicTool, CryptoQuantToolName, ToolExecutorFn, } from "./anthropic.js";
46
+ export { CRYPTOQUANT_SYSTEM_PROMPT, CRYPTOQUANT_MINIMAL_PROMPT, } from "./prompts.js";
47
+ export { describeMetricSchema, discoverEndpointsSchema, initializeSchema, marketSummarySchema, queryDataSchema, tradingSignalSchema, whaleActivitySchema, } from "./schemas.js";
48
+ export type { DescribeMetricParams, DiscoverEndpointsParams, InitializeParams, MarketSummaryParams, QueryDataParams, TradingSignalParams, WhaleActivityParams, } from "./schemas.js";
49
+ export type { CryptoQuantToolsConfig, DescribeResult, DiscoverResult, InitializeResult, MarketSummaryResult, MetricScore, MetricSignal, QueryResult, ToolExecutionContext, TradingSignalResult, WhaleActivityResult, } from "./types.js";
50
+ export { executeDescribeMetric, executeDiscoverEndpoints, executeInitialize, executeMarketSummary, executeQueryData, executeTradingSignal, executeWhaleActivity, } from "./execute.js";
51
+ export { METRIC_DEFINITIONS, SCORING_RULES, MARKET_THRESHOLDS, WHALE_THRESHOLDS, CYCLE_PHASES, SIGNAL_LEGEND, INTERPRETATION_SYSTEM_PROMPT, calculateScore, calculateTradingSignal, getMetricSignal, getMetricDefinition, getAvailableMetrics, } from "../shared/metrics-data.generated.js";
52
+ export type { MetricDefinition, MetricThreshold, MetricScoring, ScoringRule, } from "../shared/metrics-data.generated.js";
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * CryptoQuant AI SDK Integration
3
+ *
4
+ * Provides CryptoQuant on-chain analytics tools for use with Vercel AI SDK.
5
+ *
6
+ * @packageDocumentation
7
+ *
8
+ * @example Quick Start
9
+ * ```typescript
10
+ * // 1. Install dependencies
11
+ * // npm install @cryptoquant_official/mcp ai @ai-sdk/react @ai-sdk/anthropic
12
+ *
13
+ * // 2. Create API route (app/api/chat/route.ts)
14
+ * import { streamText } from 'ai'
15
+ * import { anthropic } from '@ai-sdk/anthropic'
16
+ * import { createCryptoQuantTools } from '@cryptoquant_official/mcp/ai-sdk'
17
+ *
18
+ * export async function POST(req: Request) {
19
+ * const { messages } = await req.json()
20
+ *
21
+ * const result = streamText({
22
+ * model: anthropic('claude-sonnet-4-20250514'),
23
+ * messages,
24
+ * tools: createCryptoQuantTools({
25
+ * cryptoquantApiKey: process.env.CRYPTOQUANT_API_KEY!,
26
+ * }),
27
+ * maxSteps: 5,
28
+ * })
29
+ *
30
+ * return result.toDataStreamResponse()
31
+ * }
32
+ *
33
+ * // 3. Use in client component
34
+ * 'use client'
35
+ * import { useChat } from '@ai-sdk/react'
36
+ *
37
+ * export function Chat() {
38
+ * const { messages, input, handleSubmit, handleInputChange } = useChat()
39
+ * // ... render chat UI
40
+ * }
41
+ * ```
42
+ */
43
+ // Main exports - tools
44
+ export { createCryptoQuantTools, cryptoQuantTools } from "./tools.js";
45
+ // Anthropic SDK exports - for direct use with @anthropic-ai/sdk
46
+ export { createAnthropicTools, createToolExecutor, getToolNames, isValidToolName, toolCacheTTL, } from "./anthropic.js";
47
+ // System prompts - ready-to-use prompts for AI assistants
48
+ export { CRYPTOQUANT_SYSTEM_PROMPT, CRYPTOQUANT_MINIMAL_PROMPT, } from "./prompts.js";
49
+ // Schema exports - for advanced users who want to customize
50
+ export { describeMetricSchema, discoverEndpointsSchema, initializeSchema, marketSummarySchema, queryDataSchema, tradingSignalSchema, whaleActivitySchema, } from "./schemas.js";
51
+ // Execute functions - for direct tool execution without AI SDK
52
+ export { executeDescribeMetric, executeDiscoverEndpoints, executeInitialize, executeMarketSummary, executeQueryData, executeTradingSignal, executeWhaleActivity, } from "./execute.js";
53
+ // Interpretation data and helpers - for custom analysis
54
+ // Re-exported from shared module (single source of truth)
55
+ export { METRIC_DEFINITIONS, SCORING_RULES, MARKET_THRESHOLDS, WHALE_THRESHOLDS, CYCLE_PHASES, SIGNAL_LEGEND, INTERPRETATION_SYSTEM_PROMPT, calculateScore, calculateTradingSignal, getMetricSignal, getMetricDefinition, getAvailableMetrics, } from "../shared/metrics-data.generated.js";
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai-sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,uBAAuB;AACvB,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtE,gEAAgE;AAChE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,gBAAgB,CAAC;AAOxB,0DAA0D;AAC1D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAEtB,4DAA4D;AAC5D,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AA0BtB,+DAA+D;AAC/D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,wDAAwD;AACxD,0DAA0D;AAC1D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC"}