@general-liquidity/gordon-cli 0.75.14 → 0.75.15

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 (2) hide show
  1. package/dist/index.js +500 -116
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -14425,6 +14425,7 @@ function buildEnvStatus(keys, fileExists) {
14425
14425
  hasChainlinkCCIPKey: !!keys.EVM_PRIVATE_KEY,
14426
14426
  hasCDPKeys: !!(keys.CDP_API_KEY_ID && keys.CDP_API_KEY_SECRET && keys.CDP_WALLET_SECRET),
14427
14427
  hasBasescanKey: !!keys.BASESCAN_API_KEY,
14428
+ hasSynthDataKey: !!keys.SYNTHDATA_API_KEY,
14428
14429
  keys
14429
14430
  };
14430
14431
  }
@@ -14719,6 +14720,15 @@ async function createEnvFile(keys) {
14719
14720
  lines.push("# BASESCAN_API_KEY=");
14720
14721
  }
14721
14722
  lines.push("");
14723
+ lines.push("# ---- Data Providers ----");
14724
+ lines.push("");
14725
+ lines.push("# SynthData (AI probabilistic predictions, volatility, LP optimization)");
14726
+ if (keys.SYNTHDATA_API_KEY) {
14727
+ lines.push(formatEnvLine("SYNTHDATA_API_KEY", keys.SYNTHDATA_API_KEY));
14728
+ } else {
14729
+ lines.push("# SYNTHDATA_API_KEY=");
14730
+ }
14731
+ lines.push("");
14722
14732
  lines.push("# ---- Gordon LLM Provider ----");
14723
14733
  if (keys.GORDON_PROVIDER) {
14724
14734
  lines.push(formatEnvLine("GORDON_PROVIDER", keys.GORDON_PROVIDER));
@@ -14807,7 +14817,8 @@ var init_env = __esm(() => {
14807
14817
  "CDP_API_KEY_SECRET",
14808
14818
  "CDP_WALLET_SECRET",
14809
14819
  "CDP_NETWORK_ID",
14810
- "BASESCAN_API_KEY"
14820
+ "BASESCAN_API_KEY",
14821
+ "SYNTHDATA_API_KEY"
14811
14822
  ];
14812
14823
  });
14813
14824
 
@@ -2787186,6 +2787197,261 @@ var init_chainlink_ccip = __esm(() => {
2787186
2787197
  };
2787187
2787198
  });
2787188
2787199
 
2787200
+ // src/infra/synthdata/types.ts
2787201
+ var SYNTHDATA_ENV_KEYS, SYNTHDATA_BASE_URL = "https://api.synthdata.co", SYNTHDATA_TIMEOUT = 15000, SYNTHDATA_CACHE_TTL = 300000, SYNTHDATA_ASSETS;
2787202
+ var init_types55 = __esm(() => {
2787203
+ SYNTHDATA_ENV_KEYS = {
2787204
+ API_KEY: "SYNTHDATA_API_KEY"
2787205
+ };
2787206
+ SYNTHDATA_ASSETS = [
2787207
+ "BTC",
2787208
+ "ETH",
2787209
+ "SOL",
2787210
+ "XAU",
2787211
+ "SPYX",
2787212
+ "NVDAX",
2787213
+ "TSLAX",
2787214
+ "AAPLX",
2787215
+ "GOOGLX"
2787216
+ ];
2787217
+ });
2787218
+
2787219
+ // src/infra/synthdata/client.ts
2787220
+ function isSynthDataConfigured() {
2787221
+ return Boolean(process.env[SYNTHDATA_ENV_KEYS.API_KEY]);
2787222
+ }
2787223
+ function getHeaders() {
2787224
+ const apiKey = process.env[SYNTHDATA_ENV_KEYS.API_KEY];
2787225
+ if (!apiKey)
2787226
+ throw new Error("SYNTHDATA_API_KEY not configured");
2787227
+ return {
2787228
+ Authorization: `Apikey ${apiKey}`,
2787229
+ Accept: "application/json"
2787230
+ };
2787231
+ }
2787232
+ async function synthGet(path7, params2 = {}, cacheKey4) {
2787233
+ if (cacheKey4) {
2787234
+ const cached3 = cache5.get(cacheKey4);
2787235
+ if (cached3 !== undefined)
2787236
+ return cached3;
2787237
+ }
2787238
+ const url3 = new URL(path7, SYNTHDATA_BASE_URL);
2787239
+ for (const [k2, v18] of Object.entries(params2)) {
2787240
+ if (v18 !== undefined)
2787241
+ url3.searchParams.set(k2, String(v18));
2787242
+ }
2787243
+ const result = await withRetry(async () => {
2787244
+ const resp = await fetch(url3.toString(), {
2787245
+ method: "GET",
2787246
+ headers: getHeaders(),
2787247
+ signal: AbortSignal.timeout(SYNTHDATA_TIMEOUT)
2787248
+ });
2787249
+ if (!resp.ok) {
2787250
+ const body = await resp.text().catch(() => "");
2787251
+ const err2 = new Error(`SynthData API ${resp.status}: ${resp.statusText}${body ? ` \u2014 ${body}` : ""}`);
2787252
+ err2.status = resp.status;
2787253
+ throw err2;
2787254
+ }
2787255
+ return resp.json();
2787256
+ }, { maxRetries: 2, baseDelayMs: 500, maxDelayMs: 5000 });
2787257
+ if (cacheKey4) {
2787258
+ cache5.set(cacheKey4, result);
2787259
+ }
2787260
+ return result;
2787261
+ }
2787262
+ async function getPredictionPercentiles(asset, days = 14, limit2 = 10) {
2787263
+ return synthGet("/insights/prediction-percentiles", { asset, days, limit: limit2 }, `percentiles:${asset}:${days}:${limit2}`);
2787264
+ }
2787265
+ async function getVolatility(asset, days = 14, limit2 = 10) {
2787266
+ return synthGet("/insights/volatility", { asset, days, limit: limit2 }, `volatility:${asset}:${days}:${limit2}`);
2787267
+ }
2787268
+ async function getOptionPricing(asset) {
2787269
+ return synthGet("/insights/option-pricing", { asset }, `options:${asset}`);
2787270
+ }
2787271
+ async function getLiquidation(asset) {
2787272
+ return synthGet("/insights/liquidation", { asset }, `liquidation:${asset}`);
2787273
+ }
2787274
+ async function getLPBounds(asset) {
2787275
+ return synthGet("/insights/lp-bounds", { asset }, `lp-bounds:${asset}`);
2787276
+ }
2787277
+ async function getLPProbabilities(asset) {
2787278
+ return synthGet("/insights/lp-probabilities", { asset }, `lp-probs:${asset}`);
2787279
+ }
2787280
+ async function getLeaderboard(asset, days = 14, limit2 = 10) {
2787281
+ return synthGet("/v2/leaderboard/latest", { asset, days, limit: limit2 }, `leaderboard:${asset}:${days}:${limit2}`);
2787282
+ }
2787283
+ var cache5;
2787284
+ var init_client17 = __esm(() => {
2787285
+ init_retry();
2787286
+ init_types55();
2787287
+ cache5 = new Cache({
2787288
+ defaultTtl: SYNTHDATA_CACHE_TTL,
2787289
+ maxEntries: 200,
2787290
+ updateTtlOnAccess: false
2787291
+ });
2787292
+ });
2787293
+
2787294
+ // src/infra/synthdata/index.ts
2787295
+ var init_synthdata = __esm(() => {
2787296
+ init_types55();
2787297
+ init_client17();
2787298
+ });
2787299
+
2787300
+ // src/infra/agents/tools/synthdata.ts
2787301
+ var ASSET_DESC, NOT_CONFIGURED = "SynthData not configured. Set SYNTHDATA_API_KEY environment variable.", outputSchema7, synthDataPredictionPercentilesTool, synthDataVolatilityTool, synthDataOptionPricingTool, synthDataLiquidationTool, synthDataLPBoundsTool, synthDataLPProbabilitiesTool, synthDataLeaderboardTool, synthDataTools;
2787302
+ var init_synthdata2 = __esm(() => {
2787303
+ init_tools();
2787304
+ init_zod();
2787305
+ init_synthdata();
2787306
+ ASSET_DESC = `Asset symbol. Supported: ${SYNTHDATA_ASSETS.join(", ")}`;
2787307
+ outputSchema7 = exports_external.object({
2787308
+ success: exports_external.boolean(),
2787309
+ data: exports_external.unknown().optional(),
2787310
+ error: exports_external.string().optional()
2787311
+ });
2787312
+ synthDataPredictionPercentilesTool = createTool({
2787313
+ id: "synthdata_prediction_percentiles",
2787314
+ description: "Get SynthData AI probabilistic price predictions \u2014 the cone of likely future prices. " + "Returns 5th, 25th, 50th (median), 75th, and 95th percentile price paths at 5-minute intervals. " + "Use this to understand the probability-weighted range of where price could go. " + "Supports BTC, ETH, SOL, XAU (gold), and tokenized equities (SPYX, NVDAX, TSLAX, AAPLX, GOOGLX).",
2787315
+ inputSchema: exports_external.object({
2787316
+ asset: exports_external.string().describe(ASSET_DESC),
2787317
+ days: exports_external.number().default(14).describe("Lookback window for miner ranking (default 14)"),
2787318
+ limit: exports_external.number().default(10).describe("Number of top miners to aggregate (default 10)")
2787319
+ }),
2787320
+ outputSchema: outputSchema7,
2787321
+ execute: async ({ asset, days, limit: limit2 }) => {
2787322
+ if (!isSynthDataConfigured())
2787323
+ return { success: false, error: NOT_CONFIGURED };
2787324
+ try {
2787325
+ const data7 = await getPredictionPercentiles(asset, days, limit2);
2787326
+ return { success: true, data: data7 };
2787327
+ } catch (error56) {
2787328
+ return { success: false, error: error56.message };
2787329
+ }
2787330
+ }
2787331
+ });
2787332
+ synthDataVolatilityTool = createTool({
2787333
+ id: "synthdata_volatility",
2787334
+ description: "Get SynthData volatility analysis \u2014 forecast vs realized volatility comparison. " + "Shows if current volatility is above or below AI predictions, useful for regime detection, " + "options valuation, and risk adjustment. Returns forecast mean, realized mean, and time series.",
2787335
+ inputSchema: exports_external.object({
2787336
+ asset: exports_external.string().describe(ASSET_DESC),
2787337
+ days: exports_external.number().default(14).describe("Lookback window (default 14)"),
2787338
+ limit: exports_external.number().default(10).describe("Top miners to aggregate (default 10)")
2787339
+ }),
2787340
+ outputSchema: outputSchema7,
2787341
+ execute: async ({ asset, days, limit: limit2 }) => {
2787342
+ if (!isSynthDataConfigured())
2787343
+ return { success: false, error: NOT_CONFIGURED };
2787344
+ try {
2787345
+ const data7 = await getVolatility(asset, days, limit2);
2787346
+ return { success: true, data: data7 };
2787347
+ } catch (error56) {
2787348
+ return { success: false, error: error56.message };
2787349
+ }
2787350
+ }
2787351
+ });
2787352
+ synthDataOptionPricingTool = createTool({
2787353
+ id: "synthdata_option_pricing",
2787354
+ description: "Get SynthData theoretical option prices \u2014 call and put valuations by strike from Monte Carlo simulations. " + "Use for options strategy construction, mispricing detection (compare vs market), and implied sentiment analysis.",
2787355
+ inputSchema: exports_external.object({
2787356
+ asset: exports_external.string().describe(ASSET_DESC)
2787357
+ }),
2787358
+ outputSchema: outputSchema7,
2787359
+ execute: async ({ asset }) => {
2787360
+ if (!isSynthDataConfigured())
2787361
+ return { success: false, error: NOT_CONFIGURED };
2787362
+ try {
2787363
+ const data7 = await getOptionPricing(asset);
2787364
+ return { success: true, data: data7 };
2787365
+ } catch (error56) {
2787366
+ return { success: false, error: error56.message };
2787367
+ }
2787368
+ }
2787369
+ });
2787370
+ synthDataLiquidationTool = createTool({
2787371
+ id: "synthdata_liquidation",
2787372
+ description: "Get SynthData liquidation probability analysis \u2014 probability of long and short liquidations at 24h horizon. " + "Critical for risk assessment of leveraged positions. Shows liquidation probability under various price scenarios.",
2787373
+ inputSchema: exports_external.object({
2787374
+ asset: exports_external.string().describe(ASSET_DESC)
2787375
+ }),
2787376
+ outputSchema: outputSchema7,
2787377
+ execute: async ({ asset }) => {
2787378
+ if (!isSynthDataConfigured())
2787379
+ return { success: false, error: NOT_CONFIGURED };
2787380
+ try {
2787381
+ const data7 = await getLiquidation(asset);
2787382
+ return { success: true, data: data7 };
2787383
+ } catch (error56) {
2787384
+ return { success: false, error: error56.message };
2787385
+ }
2787386
+ }
2787387
+ });
2787388
+ synthDataLPBoundsTool = createTool({
2787389
+ id: "synthdata_lp_bounds",
2787390
+ description: "Get SynthData optimal Uniswap V3 LP ranges \u2014 AI-recommended price bounds with impermanent loss estimates. " + "Shows optimal lower/upper bounds, probability of staying in range, expected duration, and projected IL. " + "Use for DeFi liquidity provision planning and range-setting.",
2787391
+ inputSchema: exports_external.object({
2787392
+ asset: exports_external.string().describe(ASSET_DESC)
2787393
+ }),
2787394
+ outputSchema: outputSchema7,
2787395
+ execute: async ({ asset }) => {
2787396
+ if (!isSynthDataConfigured())
2787397
+ return { success: false, error: NOT_CONFIGURED };
2787398
+ try {
2787399
+ const data7 = await getLPBounds(asset);
2787400
+ return { success: true, data: data7 };
2787401
+ } catch (error56) {
2787402
+ return { success: false, error: error56.message };
2787403
+ }
2787404
+ }
2787405
+ });
2787406
+ synthDataLPProbabilitiesTool = createTool({
2787407
+ id: "synthdata_lp_probabilities",
2787408
+ description: "Get SynthData price level probabilities \u2014 cumulative probability of price being above or below each level within 24h. " + "Use for setting LP range bounds, stop-loss levels, and take-profit targets based on probabilistic analysis.",
2787409
+ inputSchema: exports_external.object({
2787410
+ asset: exports_external.string().describe(ASSET_DESC)
2787411
+ }),
2787412
+ outputSchema: outputSchema7,
2787413
+ execute: async ({ asset }) => {
2787414
+ if (!isSynthDataConfigured())
2787415
+ return { success: false, error: NOT_CONFIGURED };
2787416
+ try {
2787417
+ const data7 = await getLPProbabilities(asset);
2787418
+ return { success: true, data: data7 };
2787419
+ } catch (error56) {
2787420
+ return { success: false, error: error56.message };
2787421
+ }
2787422
+ }
2787423
+ });
2787424
+ synthDataLeaderboardTool = createTool({
2787425
+ id: "synthdata_leaderboard",
2787426
+ description: "Get SynthData AI miner leaderboard \u2014 top-performing prediction models ranked by accuracy (CRPS score). " + "Shows which AI forecasters are currently most accurate for a given asset.",
2787427
+ inputSchema: exports_external.object({
2787428
+ asset: exports_external.string().describe(ASSET_DESC),
2787429
+ days: exports_external.number().default(14).describe("Ranking period in days (default 14)"),
2787430
+ limit: exports_external.number().default(10).describe("Number of top miners to return (default 10)")
2787431
+ }),
2787432
+ outputSchema: outputSchema7,
2787433
+ execute: async ({ asset, days, limit: limit2 }) => {
2787434
+ if (!isSynthDataConfigured())
2787435
+ return { success: false, error: NOT_CONFIGURED };
2787436
+ try {
2787437
+ const data7 = await getLeaderboard(asset, days, limit2);
2787438
+ return { success: true, data: data7 };
2787439
+ } catch (error56) {
2787440
+ return { success: false, error: error56.message };
2787441
+ }
2787442
+ }
2787443
+ });
2787444
+ synthDataTools = {
2787445
+ synthdata_prediction_percentiles: synthDataPredictionPercentilesTool,
2787446
+ synthdata_volatility: synthDataVolatilityTool,
2787447
+ synthdata_option_pricing: synthDataOptionPricingTool,
2787448
+ synthdata_liquidation: synthDataLiquidationTool,
2787449
+ synthdata_lp_bounds: synthDataLPBoundsTool,
2787450
+ synthdata_lp_probabilities: synthDataLPProbabilitiesTool,
2787451
+ synthdata_leaderboard: synthDataLeaderboardTool
2787452
+ };
2787453
+ });
2787454
+
2787189
2787455
  // src/infra/agents/tools/position-tracking.ts
2787190
2787456
  async function getManager() {
2787191
2787457
  return getPositionManager(getEventBus());
@@ -2788594,7 +2788860,7 @@ var init_runtime_tools = __esm(() => {
2788594
2788860
 
2788595
2788861
  // src/core/regime/types.ts
2788596
2788862
  var MarketRegimeSchema, RegimeMetricsSchema, RegimeSignalSchema, RegimeSpanSchema, RegimeHistorySchema, MultiTimeframeRegimeSchema;
2788597
- var init_types55 = __esm(() => {
2788863
+ var init_types56 = __esm(() => {
2788598
2788864
  init_zod();
2788599
2788865
  MarketRegimeSchema = exports_external.enum([
2788600
2788866
  "trending_up",
@@ -2788822,7 +2789088,7 @@ var init_watcher = __esm(() => {
2788822
2789088
 
2788823
2789089
  // src/core/regime/index.ts
2788824
2789090
  var init_regime = __esm(() => {
2788825
- init_types55();
2789091
+ init_types56();
2788826
2789092
  init_classifier();
2788827
2789093
  init_detector();
2788828
2789094
  init_watcher();
@@ -2788834,7 +2789100,7 @@ var init_regime_tools = __esm(() => {
2788834
2789100
  init_tools();
2788835
2789101
  init_zod();
2788836
2789102
  init_regime();
2788837
- init_types55();
2789103
+ init_types56();
2788838
2789104
  init_types9();
2788839
2789105
  init_logger2();
2788840
2789106
  logger112 = createModuleLogger("regime-tools");
@@ -2789511,7 +2789777,7 @@ var init_advanced_tools = __esm(() => {
2789511
2789777
 
2789512
2789778
  // src/core/genome/types.ts
2789513
2789779
  var MutationSchema2, GenomeSchema, ExperimentSchema, MutationSuggestionSchema;
2789514
- var init_types56 = __esm(() => {
2789780
+ var init_types57 = __esm(() => {
2789515
2789781
  init_zod();
2789516
2789782
  MutationSchema2 = exports_external.object({
2789517
2789783
  mutation_id: exports_external.string().uuid(),
@@ -2790038,7 +2790304,7 @@ __export(exports_genome, {
2790038
2790304
  EvolutionLoop: () => EvolutionLoop
2790039
2790305
  });
2790040
2790306
  var init_genome = __esm(() => {
2790041
- init_types56();
2790307
+ init_types57();
2790042
2790308
  init_manager3();
2790043
2790309
  init_mutator();
2790044
2790310
  init_fitness();
@@ -2793560,6 +2793826,7 @@ var init_tools7 = __esm(async () => {
2793560
2793826
  init_chainlink_streams();
2793561
2793827
  init_chainlink_feeds();
2793562
2793828
  init_chainlink_ccip();
2793829
+ init_synthdata2();
2793563
2793830
  init_position_tracking();
2793564
2793831
  init_risk_gate();
2793565
2793832
  init_memory_tools();
@@ -2793626,6 +2793893,7 @@ var init_tools7 = __esm(async () => {
2793626
2793893
  init_chainlink_streams();
2793627
2793894
  init_chainlink_feeds();
2793628
2793895
  init_chainlink_ccip();
2793896
+ init_synthdata2();
2793629
2793897
  init_position_tracking();
2793630
2793898
  init_risk_gate();
2793631
2793899
  init_memory_tools();
@@ -2793696,6 +2793964,7 @@ var init_tools7 = __esm(async () => {
2793696
2793964
  ...chainlinkStreamsTools,
2793697
2793965
  ...chainlinkFeedsTools,
2793698
2793966
  ...chainlinkCCIPTools,
2793967
+ ...synthDataTools,
2793699
2793968
  ...multiModalChartTools,
2793700
2793969
  ...evalTools,
2793701
2793970
  ...positionTrackingTools,
@@ -2793757,6 +2794026,7 @@ var init_tools7 = __esm(async () => {
2793757
2794026
  chainlinkStreams: Object.keys(chainlinkStreamsTools).length,
2793758
2794027
  chainlinkFeeds: Object.keys(chainlinkFeedsTools).length,
2793759
2794028
  chainlinkCCIP: Object.keys(chainlinkCCIPTools).length,
2794029
+ synthData: Object.keys(synthDataTools).length,
2793760
2794030
  multiModalCharts: Object.keys(multiModalChartTools).length,
2793761
2794031
  evals: Object.keys(evalTools).length,
2793762
2794032
  positionTracking: Object.keys(positionTrackingTools).length,
@@ -2795937,30 +2796207,30 @@ var require_dereference = __commonJS((exports6) => {
2795937
2796207
  const isExternalRef = ref_js_1.default.isExternal$Ref($ref);
2795938
2796208
  const shouldResolveOnCwd = isExternalRef && options4?.dereference?.externalReferenceResolution === "root";
2795939
2796209
  const $refPath = url3.resolve(shouldResolveOnCwd ? url3.cwd() : path8, $ref.$ref);
2795940
- const cache5 = dereferencedCache.get($refPath);
2795941
- if (cache5) {
2795942
- if (!cache5.circular) {
2796210
+ const cache6 = dereferencedCache.get($refPath);
2796211
+ if (cache6) {
2796212
+ if (!cache6.circular) {
2795943
2796213
  const refKeys = Object.keys($ref);
2795944
2796214
  if (refKeys.length > 1) {
2795945
2796215
  const extraKeys = {};
2795946
2796216
  for (const key5 of refKeys) {
2795947
- if (key5 !== "$ref" && !(key5 in cache5.value)) {
2796217
+ if (key5 !== "$ref" && !(key5 in cache6.value)) {
2795948
2796218
  extraKeys[key5] = $ref[key5];
2795949
2796219
  }
2795950
2796220
  }
2795951
2796221
  return {
2795952
- circular: cache5.circular,
2795953
- value: Object.assign({}, cache5.value, extraKeys)
2796222
+ circular: cache6.circular,
2796223
+ value: Object.assign({}, cache6.value, extraKeys)
2795954
2796224
  };
2795955
2796225
  }
2795956
- return cache5;
2796226
+ return cache6;
2795957
2796227
  }
2795958
- if (typeof cache5.value === "object" && "$ref" in cache5.value && "$ref" in $ref) {
2795959
- if (cache5.value.$ref === $ref.$ref) {
2795960
- return cache5;
2796228
+ if (typeof cache6.value === "object" && "$ref" in cache6.value && "$ref" in $ref) {
2796229
+ if (cache6.value.$ref === $ref.$ref) {
2796230
+ return cache6;
2795961
2796231
  } else {}
2795962
2796232
  } else {
2795963
- return cache5;
2796233
+ return cache6;
2795964
2796234
  }
2795965
2796235
  }
2795966
2796236
  const pointer2 = $refs._resolve($refPath, path8, options4);
@@ -2796372,7 +2796642,7 @@ var init_zod_compat = __esm(() => {
2796372
2796642
 
2796373
2796643
  // node_modules/@modelcontextprotocol/sdk/dist/esm/types.js
2796374
2796644
  var LATEST_PROTOCOL_VERSION = "2025-11-25", SUPPORTED_PROTOCOL_VERSIONS, RELATED_TASK_META_KEY = "io.modelcontextprotocol/related-task", JSONRPC_VERSION4 = "2.0", AssertObjectSchema, ProgressTokenSchema, CursorSchema, TaskCreationParamsSchema, TaskMetadataSchema, RelatedTaskMetadataSchema, RequestMetaSchema, BaseRequestParamsSchema, TaskAugmentedRequestParamsSchema, isTaskAugmentedRequestParams = (value2) => TaskAugmentedRequestParamsSchema.safeParse(value2).success, RequestSchema4, NotificationsParamsSchema, NotificationSchema, ResultSchema4, RequestIdSchema, JSONRPCRequestSchema4, isJSONRPCRequest = (value2) => JSONRPCRequestSchema4.safeParse(value2).success, JSONRPCNotificationSchema4, isJSONRPCNotification = (value2) => JSONRPCNotificationSchema4.safeParse(value2).success, JSONRPCResultResponseSchema, isJSONRPCResultResponse = (value2) => JSONRPCResultResponseSchema.safeParse(value2).success, ErrorCode, JSONRPCErrorResponseSchema, isJSONRPCErrorResponse = (value2) => JSONRPCErrorResponseSchema.safeParse(value2).success, JSONRPCMessageSchema, JSONRPCResponseSchema4, EmptyResultSchema, CancelledNotificationParamsSchema, CancelledNotificationSchema, IconSchema, IconsSchema, BaseMetadataSchema, ImplementationSchema, FormElicitationCapabilitySchema, ElicitationCapabilitySchema, ClientTasksCapabilitySchema, ServerTasksCapabilitySchema, ClientCapabilitiesSchema, InitializeRequestParamsSchema, InitializeRequestSchema, ServerCapabilitiesSchema4, InitializeResultSchema, InitializedNotificationSchema, isInitializedNotification = (value2) => InitializedNotificationSchema.safeParse(value2).success, PingRequestSchema, ProgressSchema, ProgressNotificationParamsSchema, ProgressNotificationSchema, PaginatedRequestParamsSchema, PaginatedRequestSchema, PaginatedResultSchema4, TaskStatusSchema, TaskSchema, CreateTaskResultSchema, TaskStatusNotificationParamsSchema, TaskStatusNotificationSchema, GetTaskRequestSchema, GetTaskResultSchema, GetTaskPayloadRequestSchema, GetTaskPayloadResultSchema, ListTasksRequestSchema, ListTasksResultSchema, CancelTaskRequestSchema, CancelTaskResultSchema, ResourceContentsSchema4, TextResourceContentsSchema4, Base64Schema, BlobResourceContentsSchema4, RoleSchema, AnnotationsSchema, ResourceSchema, ResourceTemplateSchema, ListResourcesRequestSchema, ListResourcesResultSchema, ListResourceTemplatesRequestSchema, ListResourceTemplatesResultSchema, ResourceRequestParamsSchema, ReadResourceRequestParamsSchema, ReadResourceRequestSchema, ReadResourceResultSchema, ResourceListChangedNotificationSchema, SubscribeRequestParamsSchema, SubscribeRequestSchema, UnsubscribeRequestParamsSchema, UnsubscribeRequestSchema, ResourceUpdatedNotificationParamsSchema, ResourceUpdatedNotificationSchema, PromptArgumentSchema, PromptSchema, ListPromptsRequestSchema, ListPromptsResultSchema, GetPromptRequestParamsSchema, GetPromptRequestSchema, TextContentSchema4, ImageContentSchema4, AudioContentSchema, ToolUseContentSchema, EmbeddedResourceSchema4, ResourceLinkSchema, ContentBlockSchema, PromptMessageSchema, GetPromptResultSchema, PromptListChangedNotificationSchema, ToolAnnotationsSchema, ToolExecutionSchema, ToolSchema4, ListToolsRequestSchema, ListToolsResultSchema, CallToolResultSchema, CompatibilityCallToolResultSchema, CallToolRequestParamsSchema, CallToolRequestSchema, ToolListChangedNotificationSchema, ListChangedOptionsBaseSchema, LoggingLevelSchema, SetLevelRequestParamsSchema, SetLevelRequestSchema, LoggingMessageNotificationParamsSchema, LoggingMessageNotificationSchema, ModelHintSchema, ModelPreferencesSchema, ToolChoiceSchema, ToolResultContentSchema, SamplingContentSchema, SamplingMessageContentBlockSchema, SamplingMessageSchema, CreateMessageRequestParamsSchema, CreateMessageRequestSchema, CreateMessageResultSchema, CreateMessageResultWithToolsSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema, UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema, LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema, EnumSchemaSchema, PrimitiveSchemaDefinitionSchema, ElicitRequestFormParamsSchema, ElicitRequestURLParamsSchema, ElicitRequestParamsSchema, ElicitRequestSchema, ElicitationCompleteNotificationParamsSchema, ElicitationCompleteNotificationSchema, ElicitResultSchema, ResourceTemplateReferenceSchema, PromptReferenceSchema, CompleteRequestParamsSchema, CompleteRequestSchema, CompleteResultSchema, RootSchema, ListRootsRequestSchema, ListRootsResultSchema, RootsListChangedNotificationSchema, ClientRequestSchema, ClientNotificationSchema, ClientResultSchema, ServerRequestSchema, ServerNotificationSchema, ServerResultSchema, McpError, UrlElicitationRequiredError;
2796375
- var init_types57 = __esm(() => {
2796645
+ var init_types58 = __esm(() => {
2796376
2796646
  init_v42();
2796377
2796647
  SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"];
2796378
2796648
  AssertObjectSchema = custom((v18) => v18 !== null && (typeof v18 === "object" || typeof v18 === "function"));
@@ -2798048,7 +2798318,7 @@ function mergeCapabilities(base10, additional) {
2798048
2798318
  var DEFAULT_REQUEST_TIMEOUT_MSEC = 60000;
2798049
2798319
  var init_protocol4 = __esm(() => {
2798050
2798320
  init_zod_compat();
2798051
- init_types57();
2798321
+ init_types58();
2798052
2798322
  init_zod_json_schema_compat();
2798053
2798323
  });
2798054
2798324
 
@@ -2804623,8 +2804893,8 @@ class ExperimentalClientTasks {
2804623
2804893
  return this._client.requestStream(request7, resultSchema, options4);
2804624
2804894
  }
2804625
2804895
  }
2804626
- var init_client17 = __esm(() => {
2804627
- init_types57();
2804896
+ var init_client18 = __esm(() => {
2804897
+ init_types58();
2804628
2804898
  });
2804629
2804899
 
2804630
2804900
  // node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js
@@ -2804705,12 +2804975,12 @@ function getSupportedElicitationModes(capabilities) {
2804705
2804975
  return { supportsFormMode, supportsUrlMode };
2804706
2804976
  }
2804707
2804977
  var Client3;
2804708
- var init_client18 = __esm(() => {
2804978
+ var init_client19 = __esm(() => {
2804709
2804979
  init_protocol4();
2804710
- init_types57();
2804980
+ init_types58();
2804711
2804981
  init_ajv_provider();
2804712
2804982
  init_zod_compat();
2804713
- init_client17();
2804983
+ init_client18();
2804714
2804984
  Client3 = class Client3 extends Protocol {
2804715
2804985
  constructor(_clientInfo, options4) {
2804716
2804986
  super(options4);
@@ -2805954,7 +2806224,7 @@ async function registerClient(authorizationServerUrl, { metadata: metadata4, cli
2805954
2806224
  var UnauthorizedError2, AUTHORIZATION_CODE_RESPONSE_TYPE = "code", AUTHORIZATION_CODE_CHALLENGE_METHOD = "S256";
2805955
2806225
  var init_auth2 = __esm(() => {
2805956
2806226
  init_index_node10();
2805957
- init_types57();
2806227
+ init_types58();
2805958
2806228
  init_auth();
2805959
2806229
  init_auth();
2805960
2806230
  init_errors43();
@@ -2806147,7 +2806417,7 @@ class SSEClientTransport {
2806147
2806417
  var SseError;
2806148
2806418
  var init_sse = __esm(() => {
2806149
2806419
  init_dist43();
2806150
- init_types57();
2806420
+ init_types58();
2806151
2806421
  init_auth2();
2806152
2806422
  SseError = class SseError extends Error {
2806153
2806423
  constructor(code, message5, event9) {
@@ -2806644,7 +2806914,7 @@ function serializeMessage2(message5) {
2806644
2806914
  `;
2806645
2806915
  }
2806646
2806916
  var init_stdio = __esm(() => {
2806647
- init_types57();
2806917
+ init_types58();
2806648
2806918
  });
2806649
2806919
 
2806650
2806920
  // node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js
@@ -2807153,7 +2807423,7 @@ class StreamableHTTPClientTransport {
2807153
2807423
  }
2807154
2807424
  var DEFAULT_STREAMABLE_HTTP_RECONNECTION_OPTIONS, StreamableHTTPError;
2807155
2807425
  var init_streamableHttp = __esm(() => {
2807156
- init_types57();
2807426
+ init_types58();
2807157
2807427
  init_auth2();
2807158
2807428
  init_stream();
2807159
2807429
  DEFAULT_STREAMABLE_HTTP_RECONNECTION_OPTIONS = {
@@ -2807302,7 +2807572,7 @@ var init_exit_hook = __esm(() => {
2807302
2807572
  // node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js
2807303
2807573
  var init_server = __esm(() => {
2807304
2807574
  init_protocol4();
2807305
- init_types57();
2807575
+ init_types58();
2807306
2807576
  init_ajv_provider();
2807307
2807577
  init_zod_compat();
2807308
2807578
  });
@@ -2812055,7 +2812325,7 @@ var require_content_type = __commonJS((exports6) => {
2812055
2812325
  // node_modules/@modelcontextprotocol/sdk/dist/esm/server/sse.js
2812056
2812326
  var import_raw_body, import_content_type;
2812057
2812327
  var init_sse2 = __esm(() => {
2812058
- init_types57();
2812328
+ init_types58();
2812059
2812329
  import_raw_body = __toESM(require_raw_body(), 1);
2812060
2812330
  import_content_type = __toESM(require_content_type(), 1);
2812061
2812331
  });
@@ -2812226,12 +2812496,12 @@ var init_dist47 = __esm(() => {
2812226
2812496
  }
2812227
2812497
  }
2812228
2812498
  get headers() {
2812229
- const cache5 = this[cacheKey4];
2812230
- if (cache5) {
2812231
- if (!(cache5[2] instanceof Headers)) {
2812232
- cache5[2] = new Headers(cache5[2]);
2812499
+ const cache6 = this[cacheKey4];
2812500
+ if (cache6) {
2812501
+ if (!(cache6[2] instanceof Headers)) {
2812502
+ cache6[2] = new Headers(cache6[2]);
2812233
2812503
  }
2812234
- return cache5[2];
2812504
+ return cache6[2];
2812235
2812505
  }
2812236
2812506
  return this[getResponseCache]().headers;
2812237
2812507
  }
@@ -2812267,7 +2812537,7 @@ var init_dist47 = __esm(() => {
2812267
2812537
 
2812268
2812538
  // node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js
2812269
2812539
  var init_webStandardStreamableHttp = __esm(() => {
2812270
- init_types57();
2812540
+ init_types58();
2812271
2812541
  });
2812272
2812542
 
2812273
2812543
  // node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js
@@ -2812421,12 +2812691,12 @@ var init_dist48 = __esm(() => {
2812421
2812691
  init_error();
2812422
2812692
  init_tools();
2812423
2812693
  init_utils();
2812424
- init_client18();
2812694
+ init_client19();
2812425
2812695
  init_sse();
2812426
2812696
  init_stdio2();
2812427
2812697
  init_streamableHttp();
2812428
2812698
  init_protocol4();
2812429
- init_types57();
2812699
+ init_types58();
2812430
2812700
  init_exit_hook();
2812431
2812701
  init_zod();
2812432
2812702
  init_dist6();
@@ -2812813,15 +2813083,15 @@ var init_dist48 = __esm(() => {
2812813
2813083
  });
2812814
2813084
  }
2812815
2813085
  }
2812816
- async convertOutputSchema(outputSchema7) {
2812817
- if (!outputSchema7)
2813086
+ async convertOutputSchema(outputSchema8) {
2813087
+ if (!outputSchema8)
2812818
2813088
  return;
2812819
- if (isZodType3(outputSchema7)) {
2812820
- return outputSchema7;
2813089
+ if (isZodType3(outputSchema8)) {
2813090
+ return outputSchema8;
2812821
2813091
  }
2812822
2813092
  try {
2812823
- await import_json_schema_ref_parser.default.dereference(outputSchema7);
2812824
- const jsonSchemaToConvert = "jsonSchema" in outputSchema7 ? outputSchema7.jsonSchema : outputSchema7;
2813093
+ await import_json_schema_ref_parser.default.dereference(outputSchema8);
2813094
+ const jsonSchemaToConvert = "jsonSchema" in outputSchema8 ? outputSchema8.jsonSchema : outputSchema8;
2812825
2813095
  if ("toJSONSchema" in exports_external) {
2812826
2813096
  return convertJsonSchemaToZod(jsonSchemaToConvert);
2812827
2813097
  } else {
@@ -2812840,7 +2813110,7 @@ var init_dist48 = __esm(() => {
2812840
2813110
  }
2812841
2813111
  this.log("error", "Failed to convert JSON schema to Zod schema using zodFromJsonSchema", {
2812842
2813112
  error: errorDetails,
2812843
- originalJsonSchema: outputSchema7
2813113
+ originalJsonSchema: outputSchema8
2812844
2813114
  });
2812845
2813115
  throw new MastraError({
2812846
2813116
  id: "MCP_TOOL_OUTPUT_SCHEMA_CONVERSION_FAILED",
@@ -2813891,7 +2814161,7 @@ var _resolvedRoutings, _dynamicToolAgentMap, _toolsByAgent, _initialized2 = fals
2813891
2814161
  var init_manager5 = __esm(async () => {
2813892
2814162
  init_installer();
2813893
2814163
  await __promiseAll([
2813894
- init_client19(),
2814164
+ init_client20(),
2813895
2814165
  init_agents()
2813896
2814166
  ]);
2813897
2814167
  _resolvedRoutings = [];
@@ -2814137,7 +2814407,7 @@ function disableMCPHotReload() {
2814137
2814407
  }
2814138
2814408
  }
2814139
2814409
  var _mcpClient = null, _mcpTools = null, _initPromise = null, _hotReloadTimer = null, _lastPluginFingerprint = null;
2814140
- var init_client19 = __esm(async () => {
2814410
+ var init_client20 = __esm(async () => {
2814141
2814411
  init_dist48();
2814142
2814412
  init_installer();
2814143
2814413
  init_credentials();
@@ -2814267,6 +2814537,7 @@ function getScannerAgent() {
2814267
2814537
  solana_rugcheck: instrumentedSolanaKitWalletTools.solana_rugcheck,
2814268
2814538
  chainlink_bulk_prices: instrumentedChainlinkStreamsTools.chainlink_bulk_prices,
2814269
2814539
  chainlink_list_feeds: instrumentedChainlinkStreamsTools.chainlink_list_feeds,
2814540
+ synthdata_leaderboard: instrumentedSynthDataTools.synthdata_leaderboard,
2814270
2814541
  ...getRoutingToolsForAgent("Scanner")
2814271
2814542
  },
2814272
2814543
  memory: createSubAgentMemory(),
@@ -2814359,6 +2814630,9 @@ function getAnalystAgent() {
2814359
2814630
  chainlink_compare_prices: instrumentedChainlinkFeedsTools.chainlink_compare_prices,
2814360
2814631
  chainlink_ccip_supported_chains: instrumentedChainlinkCCIPTools.chainlink_ccip_supported_chains,
2814361
2814632
  chainlink_ccip_get_fee: instrumentedChainlinkCCIPTools.chainlink_ccip_get_fee,
2814633
+ synthdata_prediction_percentiles: instrumentedSynthDataTools.synthdata_prediction_percentiles,
2814634
+ synthdata_volatility: instrumentedSynthDataTools.synthdata_volatility,
2814635
+ synthdata_option_pricing: instrumentedSynthDataTools.synthdata_option_pricing,
2814362
2814636
  ...getRoutingToolsForAgent("Analyst")
2814363
2814637
  },
2814364
2814638
  memory: createSubAgentMemory(),
@@ -2814408,6 +2814682,8 @@ function getPlannerAgent() {
2814408
2814682
  rebalance_portfolio: instrumentedRuntimeTools.rebalance_portfolio,
2814409
2814683
  simulate_order_bundle: instrumentedAdvancedTools.simulate_order_bundle,
2814410
2814684
  generate_circuit_breaker_proof: instrumentedAdvancedTools.generate_circuit_breaker_proof,
2814685
+ synthdata_lp_bounds: instrumentedSynthDataTools.synthdata_lp_bounds,
2814686
+ synthdata_lp_probabilities: instrumentedSynthDataTools.synthdata_lp_probabilities,
2814411
2814687
  ...getRoutingToolsForAgent("Planner")
2814412
2814688
  },
2814413
2814689
  memory: createSubAgentMemory(),
@@ -2814583,6 +2814859,7 @@ function getMonitorAgent() {
2814583
2814859
  solana_sanctum_owned_lst: instrumentedSolanaKitDefiLendingTools.solana_sanctum_owned_lst,
2814584
2814860
  solana_voltr_positions: instrumentedSolanaKitDefiLendingTools.solana_voltr_positions,
2814585
2814861
  chainlink_ccip_status: instrumentedChainlinkCCIPTools.chainlink_ccip_status,
2814862
+ synthdata_liquidation: instrumentedSynthDataTools.synthdata_liquidation,
2814586
2814863
  ...getRoutingToolsForAgent("Monitor")
2814587
2814864
  },
2814588
2814865
  memory: createSubAgentMemory(),
@@ -2814693,7 +2814970,7 @@ function resetAgents() {
2814693
2814970
  _agents = {};
2814694
2814971
  _subAgentMemory = null;
2814695
2814972
  }
2814696
- var gordonInputGuard, gordonOutputSanitizer, DEFAULT_MEMORY_CONFIG, _memoryConfig, instrumentedIndicatorTools, instrumentedExplainTools, instrumentedMarketTools, instrumentedPositionTools, instrumentedSchedulerTools, instrumentedSystemTools, instrumentedEarnTools, instrumentedChartTools, instrumentedOrderbookTools, instrumentedWalletTools, instrumentedDiscoveryTools, instrumentedHistoryTools, instrumentedAccountTools, instrumentedTradingTools, instrumentedMarketAnalysisTools, instrumentedLiquidationIntelligenceTools, instrumentedRiskManagementTools, instrumentedStrategyTools, instrumentedMetricsTools, instrumentedCompositionTools, instrumentedBacktestTools, instrumentedSharedContextTools, instrumentedParallelAnalysisTools, instrumentedStrategyGenerationTools, instrumentedMultiModalChartTools, instrumentedMarketDataTools, instrumentedPairAnalysisTools, instrumentedAutonomousTools, instrumentedBaseOnchainTools, instrumentedAgentKitOnchainTools, instrumentedAgentKitDefiTools, instrumentedPolkadotKitAssetTools, instrumentedPolkadotKitStakingTools, instrumentedPolkadotKitDefiTools, instrumentedSolanaKitWalletTools, instrumentedSolanaKitTradingTools, instrumentedSolanaKitDefiPerpsTools, instrumentedSolanaKitDefiLendingTools, instrumentedSolanaKitDefiPoolsTools, instrumentedSolanaKitDefiBridgeTools, instrumentedChainlinkStreamsTools, instrumentedChainlinkFeedsTools, instrumentedChainlinkCCIPTools, instrumentedBaseSignalTools, instrumentedBaseIndexerTools, instrumentedUniswapDataTools, instrumentedDexSearchTools, instrumentedDefillamaYieldTools, instrumentedEvalTools, instrumentedPositionTrackingTools, instrumentedMemoryTools, instrumentedPlaybookTools, instrumentedPlaybookBacktestTools, instrumentedAuditTools, instrumentedProtocolTools, instrumentedRegimeTools, instrumentedRuntimeTools, instrumentedAdvancedTools, instrumentedCheckRiskTool, WORKING_MEMORY_TEMPLATE = `
2814973
+ var gordonInputGuard, gordonOutputSanitizer, DEFAULT_MEMORY_CONFIG, _memoryConfig, instrumentedIndicatorTools, instrumentedExplainTools, instrumentedMarketTools, instrumentedPositionTools, instrumentedSchedulerTools, instrumentedSystemTools, instrumentedEarnTools, instrumentedChartTools, instrumentedOrderbookTools, instrumentedWalletTools, instrumentedDiscoveryTools, instrumentedHistoryTools, instrumentedAccountTools, instrumentedTradingTools, instrumentedMarketAnalysisTools, instrumentedLiquidationIntelligenceTools, instrumentedRiskManagementTools, instrumentedStrategyTools, instrumentedMetricsTools, instrumentedCompositionTools, instrumentedBacktestTools, instrumentedSharedContextTools, instrumentedParallelAnalysisTools, instrumentedStrategyGenerationTools, instrumentedMultiModalChartTools, instrumentedMarketDataTools, instrumentedPairAnalysisTools, instrumentedAutonomousTools, instrumentedBaseOnchainTools, instrumentedAgentKitOnchainTools, instrumentedAgentKitDefiTools, instrumentedPolkadotKitAssetTools, instrumentedPolkadotKitStakingTools, instrumentedPolkadotKitDefiTools, instrumentedSolanaKitWalletTools, instrumentedSolanaKitTradingTools, instrumentedSolanaKitDefiPerpsTools, instrumentedSolanaKitDefiLendingTools, instrumentedSolanaKitDefiPoolsTools, instrumentedSolanaKitDefiBridgeTools, instrumentedChainlinkStreamsTools, instrumentedChainlinkFeedsTools, instrumentedChainlinkCCIPTools, instrumentedSynthDataTools, instrumentedBaseSignalTools, instrumentedBaseIndexerTools, instrumentedUniswapDataTools, instrumentedDexSearchTools, instrumentedDefillamaYieldTools, instrumentedEvalTools, instrumentedPositionTrackingTools, instrumentedMemoryTools, instrumentedPlaybookTools, instrumentedPlaybookBacktestTools, instrumentedAuditTools, instrumentedProtocolTools, instrumentedRegimeTools, instrumentedRuntimeTools, instrumentedAdvancedTools, instrumentedCheckRiskTool, WORKING_MEMORY_TEMPLATE = `
2814697
2814974
  # Trader Profile
2814698
2814975
 
2814699
2814976
  ## Personal Info
@@ -2815317,7 +2815594,7 @@ var init_agents = __esm(async () => {
2815317
2815594
  init_evals3();
2815318
2815595
  await __promiseAll([
2815319
2815596
  init_tools7(),
2815320
- init_client19(),
2815597
+ init_client20(),
2815321
2815598
  init_manager5()
2815322
2815599
  ]);
2815323
2815600
  gordonInputGuard = new GordonInputGuard;
@@ -2815371,6 +2815648,7 @@ var init_agents = __esm(async () => {
2815371
2815648
  instrumentedChainlinkStreamsTools = withToolsMetrics(chainlinkStreamsTools);
2815372
2815649
  instrumentedChainlinkFeedsTools = withToolsMetrics(chainlinkFeedsTools);
2815373
2815650
  instrumentedChainlinkCCIPTools = withToolsMetrics(chainlinkCCIPTools);
2815651
+ instrumentedSynthDataTools = withToolsMetrics(synthDataTools);
2815374
2815652
  instrumentedBaseSignalTools = withToolsMetrics(baseSignalTools);
2815375
2815653
  instrumentedBaseIndexerTools = withToolsMetrics(baseIndexerTools);
2815376
2815654
  instrumentedUniswapDataTools = withToolsMetrics(uniswapDataTools);
@@ -2817264,7 +2817542,14 @@ var init_orchestrator = __esm(async () => {
2817264
2817542
  chainlink_ccip_supported_chains: "Analyst",
2817265
2817543
  chainlink_ccip_get_fee: "Analyst",
2817266
2817544
  chainlink_ccip_transfer: "Executor",
2817267
- chainlink_ccip_status: "Monitor"
2817545
+ chainlink_ccip_status: "Monitor",
2817546
+ synthdata_prediction_percentiles: "Analyst",
2817547
+ synthdata_volatility: "Analyst",
2817548
+ synthdata_option_pricing: "Analyst",
2817549
+ synthdata_leaderboard: "Scanner",
2817550
+ synthdata_liquidation: "Monitor",
2817551
+ synthdata_lp_bounds: "Planner",
2817552
+ synthdata_lp_probabilities: "Planner"
2817268
2817553
  };
2817269
2817554
  handoffHistory = [];
2817270
2817555
  VALID_HANDOFF_RULES = {
@@ -2820212,7 +2820497,7 @@ async function checkOrphanedOrders(exchange, activeTrades, result) {
2820212
2820497
  }
2820213
2820498
 
2820214
2820499
  // src/gateway/runtime/gateway-runtime.ts
2820215
- await init_client19();
2820500
+ await init_client20();
2820216
2820501
 
2820217
2820502
  // src/gateway/scheduler/local-cron.ts
2820218
2820503
  init_logger2();
@@ -2821077,7 +2821362,7 @@ class ReconciliationLoop {
2821077
2821362
  }
2821078
2821363
  // src/gateway/daemon/process.ts
2821079
2821364
  init_engine();
2821080
- await init_client19();
2821365
+ await init_client20();
2821081
2821366
  var logger135 = createModuleLogger("gateway-daemon");
2821082
2821367
  async function startGatewayDaemonProcess() {
2821083
2821368
  await bootstrapV07();
@@ -2825457,6 +2825742,30 @@ var SLASH_COMMANDS = [
2825457
2825742
  executionTime: "~2-5s",
2825458
2825743
  whenToUse: "Explore Base L2 ecosystem: trending dApps, whale movements, DEX activity"
2825459
2825744
  },
2825745
+ {
2825746
+ name: "synth",
2825747
+ aliases: ["synthdata", "sd"],
2825748
+ description: "SynthData AI predictions \u2014 price forecasts, volatility, options, LP ranges",
2825749
+ usage: "/synth [predict|volatility|options|lp|liquidation|miners] <asset>",
2825750
+ category: "market",
2825751
+ level: 2,
2825752
+ action: "agent",
2825753
+ target: "analyst",
2825754
+ executionTime: "~2-5s",
2825755
+ whenToUse: "AI probabilistic predictions for BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX"
2825756
+ },
2825757
+ {
2825758
+ name: "predict",
2825759
+ aliases: ["forecast", "cone", "pred"],
2825760
+ description: "AI price prediction \u2014 probability cone from 200+ competing models",
2825761
+ usage: "/predict <asset> [days]",
2825762
+ category: "market",
2825763
+ level: 2,
2825764
+ action: "agent",
2825765
+ target: "analyst",
2825766
+ executionTime: "~2-3s",
2825767
+ whenToUse: "Forward-looking price forecast (BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX)"
2825768
+ },
2825460
2825769
  {
2825461
2825770
  name: "liquidation",
2825462
2825771
  aliases: ["liq", "cascade"],
@@ -2826223,6 +2826532,44 @@ function commandToPrompt(command, args2) {
2826223
2826532
  return `Explore Base L2: ${args2}`;
2826224
2826533
  return "Show me an overview of the Base L2 ecosystem: trending apps, recent signals, and DEX activity";
2826225
2826534
  }
2826535
+ case "synth": {
2826536
+ if (!args2)
2826537
+ return "Show me SynthData AI prediction capabilities. Supported assets: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826538
+ const synthParts = args2.split(/\s+/);
2826539
+ const synthSub = synthParts[0]?.toLowerCase();
2826540
+ const synthAsset = synthParts[1]?.toUpperCase();
2826541
+ switch (synthSub) {
2826542
+ case "predict":
2826543
+ case "prediction":
2826544
+ case "forecast":
2826545
+ return synthAsset ? `Get the AI price prediction percentiles for ${synthAsset} from SynthData. Show the probability cone with 5th to 95th percentile bands.` : "Which asset to predict? Supported: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826546
+ case "volatility":
2826547
+ case "vol":
2826548
+ return synthAsset ? `Get the AI volatility forecast for ${synthAsset} from SynthData. Compare predicted vs realized volatility.` : "Which asset? Supported: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826549
+ case "options":
2826550
+ case "option":
2826551
+ return synthAsset ? `Get AI-based option pricing for ${synthAsset} from SynthData. Show theoretical call/put values by strike.` : "Which asset? Supported: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826552
+ case "lp":
2826553
+ case "lp-range":
2826554
+ return synthAsset ? `Get optimal LP range for ${synthAsset} from SynthData. Show Uniswap V3 bounds, IL estimates, and probability distribution.` : "Which asset? Supported: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826555
+ case "liquidation":
2826556
+ case "liq":
2826557
+ return synthAsset ? `Get AI liquidation probability forecast for ${synthAsset} from SynthData. Show long/short liquidation risk over 24h.` : "Which asset? Supported: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826558
+ case "miners":
2826559
+ case "leaderboard":
2826560
+ return synthAsset ? `Show the top AI prediction miners for ${synthAsset} from SynthData.` : "Show the top AI prediction miners from SynthData.";
2826561
+ default:
2826562
+ return `Get the AI price prediction percentiles for ${(synthSub ?? "BTC").toUpperCase()} from SynthData. Show the probability cone.`;
2826563
+ }
2826564
+ }
2826565
+ case "predict": {
2826566
+ if (!args2)
2826567
+ return "Which asset to predict? Supported: BTC, ETH, SOL, XAU, SPYX, NVDAX, TSLAX, AAPLX, GOOGLX";
2826568
+ const predParts = args2.split(/\s+/);
2826569
+ const predAsset = predParts[0]?.toUpperCase();
2826570
+ const predDays = predParts[1];
2826571
+ return `Get the AI price prediction cone for ${predAsset} from SynthData${predDays ? ` over ${predDays} days` : ""}. Show the 5th to 95th percentile probability bands.`;
2826572
+ }
2826226
2826573
  case "liquidation": {
2826227
2826574
  if (!args2)
2826228
2826575
  return "Analyze liquidation risks across my open positions. Show cascade risk, liquidation pressure, and any squeeze candidates.";
@@ -2827523,7 +2827870,7 @@ var import_react64 = __toESM(require_react(), 1);
2827523
2827870
  // package.json
2827524
2827871
  var package_default2 = {
2827525
2827872
  name: "@general-liquidity/gordon-cli",
2827526
- version: "0.75.14",
2827873
+ version: "0.75.15",
2827527
2827874
  description: "The Frontier Trading Agent",
2827528
2827875
  author: "General Liquidity, Inc.",
2827529
2827876
  license: "MIT",
@@ -2828016,88 +2828363,82 @@ var MarkdownText = ({
2828016
2828363
  }, undefined, false, undefined, this);
2828017
2828364
  };
2828018
2828365
  function renderInlineMarkdown(text6, baseColor) {
2828366
+ const TOKEN_RE = /\*\*\*(.+?)\*\*\*|\*\*(.+?)\*\*|\*(.+?)\*|_(.+?)_|`([^`]+)`|\[([^\]]+)\]\([^)]+\)|(\$[\d,]+\.?\d*)|([+-]?\d+\.?\d*%)/g;
2828019
2828367
  const parts = [];
2828020
- let remaining = text6;
2828368
+ let lastIndex = 0;
2828021
2828369
  let keyIndex = 0;
2828022
- while (remaining.length > 0) {
2828023
- const boldMatch = remaining.match(/^\*\*(.+?)\*\*/);
2828024
- if (boldMatch) {
2828370
+ let match;
2828371
+ while ((match = TOKEN_RE.exec(text6)) !== null) {
2828372
+ if (match.index > lastIndex) {
2828373
+ const plain = text6.slice(lastIndex, match.index).replace(/\*/g, "");
2828374
+ if (plain)
2828375
+ parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828376
+ color: baseColor,
2828377
+ children: plain
2828378
+ }, keyIndex++, false, undefined, this));
2828379
+ }
2828380
+ if (match[1] !== undefined) {
2828025
2828381
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828026
2828382
  bold: true,
2828383
+ italic: true,
2828027
2828384
  color: baseColor,
2828028
- children: boldMatch[1]
2828385
+ children: match[1]
2828029
2828386
  }, keyIndex++, false, undefined, this));
2828030
- remaining = remaining.slice(boldMatch[0].length);
2828031
- continue;
2828032
- }
2828033
- const italicMatch = remaining.match(/^(\*|_)(.+?)\1/);
2828034
- if (italicMatch && !remaining.startsWith("**")) {
2828387
+ } else if (match[2] !== undefined) {
2828388
+ parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828389
+ bold: true,
2828390
+ color: baseColor,
2828391
+ children: match[2]
2828392
+ }, keyIndex++, false, undefined, this));
2828393
+ } else if (match[3] !== undefined) {
2828035
2828394
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828036
2828395
  italic: true,
2828037
2828396
  color: baseColor,
2828038
- children: italicMatch[2]
2828397
+ children: match[3]
2828039
2828398
  }, keyIndex++, false, undefined, this));
2828040
- remaining = remaining.slice(italicMatch[0].length);
2828041
- continue;
2828042
- }
2828043
- const codeMatch = remaining.match(/^`([^`]+)`/);
2828044
- if (codeMatch) {
2828399
+ } else if (match[4] !== undefined) {
2828400
+ parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828401
+ italic: true,
2828402
+ color: baseColor,
2828403
+ children: match[4]
2828404
+ }, keyIndex++, false, undefined, this));
2828405
+ } else if (match[5] !== undefined) {
2828045
2828406
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828046
2828407
  color: COLORS.ACCENT,
2828047
- children: codeMatch[1]
2828408
+ children: match[5]
2828048
2828409
  }, keyIndex++, false, undefined, this));
2828049
- remaining = remaining.slice(codeMatch[0].length);
2828050
- continue;
2828051
- }
2828052
- const linkMatch = remaining.match(/^\[([^\]]+)\]\([^)]+\)/);
2828053
- if (linkMatch) {
2828410
+ } else if (match[6] !== undefined) {
2828054
2828411
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828055
2828412
  color: COLORS.BLUE,
2828056
2828413
  underline: true,
2828057
- children: linkMatch[1]
2828414
+ children: match[6]
2828058
2828415
  }, keyIndex++, false, undefined, this));
2828059
- remaining = remaining.slice(linkMatch[0].length);
2828060
- continue;
2828061
- }
2828062
- const priceMatch = remaining.match(/^(\$[\d,]+\.?\d*)/);
2828063
- if (priceMatch) {
2828416
+ } else if (match[7] !== undefined) {
2828064
2828417
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828065
2828418
  color: COLORS.HIGHLIGHT,
2828066
- children: priceMatch[1]
2828419
+ children: match[7]
2828067
2828420
  }, keyIndex++, false, undefined, this));
2828068
- remaining = remaining.slice(priceMatch[0].length);
2828069
- continue;
2828070
- }
2828071
- const percentMatch = remaining.match(/^([+-]?\d+\.?\d*%)/);
2828072
- if (percentMatch) {
2828073
- const isPositive = percentMatch[1]?.startsWith("+") || !percentMatch[1]?.startsWith("-") && !percentMatch[1]?.startsWith("0");
2828421
+ } else if (match[8] !== undefined) {
2828074
2828422
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828075
- color: percentMatch[1]?.startsWith("-") ? COLORS.RED : COLORS.GREEN,
2828076
- children: percentMatch[1]
2828423
+ color: match[8].startsWith("-") ? COLORS.RED : COLORS.GREEN,
2828424
+ children: match[8]
2828077
2828425
  }, keyIndex++, false, undefined, this));
2828078
- remaining = remaining.slice(percentMatch[0].length);
2828079
- continue;
2828080
2828426
  }
2828081
- const nextSpecial = remaining.search(/[\*`\[\$]|[+-]?\d+\.?\d*%/);
2828082
- if (nextSpecial === -1) {
2828083
- parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828084
- color: baseColor,
2828085
- children: remaining
2828086
- }, keyIndex++, false, undefined, this));
2828087
- break;
2828088
- } else if (nextSpecial === 0) {
2828089
- parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828090
- color: baseColor,
2828091
- children: remaining[0]
2828092
- }, keyIndex++, false, undefined, this));
2828093
- remaining = remaining.slice(1);
2828094
- } else {
2828427
+ lastIndex = match.index + match[0].length;
2828428
+ }
2828429
+ if (lastIndex < text6.length) {
2828430
+ const tail = text6.slice(lastIndex).replace(/\*/g, "");
2828431
+ if (tail)
2828095
2828432
  parts.push(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828096
2828433
  color: baseColor,
2828097
- children: remaining.slice(0, nextSpecial)
2828434
+ children: tail
2828098
2828435
  }, keyIndex++, false, undefined, this));
2828099
- remaining = remaining.slice(nextSpecial);
2828100
- }
2828436
+ }
2828437
+ if (parts.length === 0) {
2828438
+ return /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828439
+ color: baseColor,
2828440
+ children: text6.replace(/\*/g, "")
2828441
+ }, undefined, false, undefined, this);
2828101
2828442
  }
2828102
2828443
  return /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
2828103
2828444
  children: parts
@@ -2829740,7 +2830081,7 @@ async function ensureThreadRegistered() {
2829740
2830081
  // src/infra/agents/index.ts
2829741
2830082
  init_memory3();
2829742
2830083
  init_reflection();
2829743
- await init_client19();
2830084
+ await init_client20();
2829744
2830085
 
2829745
2830086
  // src/app/SetupWizard.tsx
2829746
2830087
  init_binance2();
@@ -2829755,7 +2830096,8 @@ var CHAIN_OPTIONS = [
2829755
2830096
  { id: "polkadot", label: "Polkadot", description: "Cross-chain swaps, staking, governance" },
2829756
2830097
  { id: "chainlink", label: "Chainlink Streams", description: "Real-time institutional-grade price feeds" },
2829757
2830098
  { id: "evm", label: "EVM / CCIP", description: "Cross-chain bridging via Chainlink CCIP" },
2829758
- { id: "cdp", label: "Coinbase CDP", description: "Base smart wallets, onchain actions" }
2830099
+ { id: "cdp", label: "Coinbase CDP", description: "Base smart wallets, onchain actions" },
2830100
+ { id: "synthdata", label: "SynthData", description: "AI price predictions, volatility, options, LP optimization" }
2829759
2830101
  ];
2829760
2830102
  var SUPPORTED_EXCHANGES2 = ExchangeFactory.getSupportedExchanges();
2829761
2830103
  var EXCHANGE_LABELS = {
@@ -2829893,7 +2830235,8 @@ function SetupWizard({ onComplete }) {
2829893
2830235
  evmPrivateKey: "",
2829894
2830236
  cdpApiKeyId: "",
2829895
2830237
  cdpApiKeySecret: "",
2829896
- cdpWalletSecret: ""
2830238
+ cdpWalletSecret: "",
2830239
+ synthDataApiKey: ""
2829897
2830240
  },
2829898
2830241
  chainSetupIndex: 0,
2829899
2830242
  openaiApiKey: "",
@@ -2830043,6 +2830386,8 @@ function SetupWizard({ onComplete }) {
2830043
2830386
  envKeys.CDP_API_KEY_SECRET = state19.chainKeys.cdpApiKeySecret;
2830044
2830387
  if (state19.chainKeys.cdpWalletSecret)
2830045
2830388
  envKeys.CDP_WALLET_SECRET = state19.chainKeys.cdpWalletSecret;
2830389
+ if (state19.chainKeys.synthDataApiKey)
2830390
+ envKeys.SYNTHDATA_API_KEY = state19.chainKeys.synthDataApiKey;
2830046
2830391
  const envStatus = await checkEnvStatus();
2830047
2830392
  if (envStatus.fileExists) {
2830048
2830393
  await saveEnvKeys(envKeys);
@@ -2830100,7 +2830445,8 @@ function SetupWizard({ onComplete }) {
2830100
2830445
  polkadot: "chain-polkadot",
2830101
2830446
  chainlink: "chain-chainlink",
2830102
2830447
  evm: "chain-evm",
2830103
- cdp: "chain-cdp"
2830448
+ cdp: "chain-cdp",
2830449
+ synthdata: "chain-synthdata"
2830104
2830450
  };
2830105
2830451
  const advanceChainStep = import_react68.useCallback((currentIndex, chains5) => {
2830106
2830452
  const nextIndex = currentIndex + 1;
@@ -2830334,6 +2830680,20 @@ function SetupWizard({ onComplete }) {
2830334
2830680
  }
2830335
2830681
  advanceChainStep(state19.chainSetupIndex, state19.selectedChains);
2830336
2830682
  break;
2830683
+ case "chain-synthdata":
2830684
+ if (trimmedValue) {
2830685
+ setState((prev) => ({
2830686
+ ...prev,
2830687
+ chainKeys: {
2830688
+ ...prev.chainKeys,
2830689
+ synthDataApiKey: trimmedValue
2830690
+ },
2830691
+ exchangeError: null,
2830692
+ inputValue: ""
2830693
+ }));
2830694
+ }
2830695
+ advanceChainStep(state19.chainSetupIndex, state19.selectedChains);
2830696
+ break;
2830337
2830697
  case "llm":
2830338
2830698
  if (trimmedValue) {
2830339
2830699
  setState((prev) => ({
@@ -2830407,6 +2830767,7 @@ function SetupWizard({ onComplete }) {
2830407
2830767
  case "chain-chainlink":
2830408
2830768
  case "chain-evm":
2830409
2830769
  case "chain-cdp":
2830770
+ case "chain-synthdata":
2830410
2830771
  advanceChainStep(state19.chainSetupIndex, state19.selectedChains);
2830411
2830772
  break;
2830412
2830773
  case "llm":
@@ -2830569,6 +2830930,22 @@ function SetupWizard({ onComplete }) {
2830569
2830930
  isMasked: true,
2830570
2830931
  error: state19.exchangeError
2830571
2830932
  }, undefined, false, undefined, this),
2830933
+ state19.step === "chain-synthdata" && /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(ChainKeyStep, {
2830934
+ chainLabel: "SynthData",
2830935
+ description: "AI-powered probabilistic price predictions, volatility forecasts, options pricing, liquidation risk, and LP optimization.",
2830936
+ keyLabel: "API Key",
2830937
+ placeholder: "your-synthdata-api-key",
2830938
+ instructions: [
2830939
+ "Sign up at synthdata.co and subscribe to a plan",
2830940
+ "Generate an API key from your SynthData dashboard",
2830941
+ "Paste your API key below"
2830942
+ ],
2830943
+ inputValue: state19.inputValue,
2830944
+ onInputChange: handleInputChange,
2830945
+ onSubmit: handleInputSubmit,
2830946
+ isMasked: true,
2830947
+ error: state19.exchangeError
2830948
+ }, undefined, false, undefined, this),
2830572
2830949
  state19.step === "llm" && /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(LLMStep, {
2830573
2830950
  exchangeConfigured: state19.exchangeValidated,
2830574
2830951
  exchangeLabel,
@@ -2831433,7 +2831810,8 @@ function DoneStep({ exchangeConfigured, exchangeLabel, llmConfigured, chainKeys
2831433
2831810
  const hasChainlink = !!(chainKeys.chainlinkApiKey && chainKeys.chainlinkApiSecret);
2831434
2831811
  const hasEVM = !!chainKeys.evmPrivateKey;
2831435
2831812
  const hasCDP = !!(chainKeys.cdpApiKeyId && chainKeys.cdpApiKeySecret && chainKeys.cdpWalletSecret);
2831436
- const anyChain = hasSolana || hasPolkadot || hasChainlink || hasEVM || hasCDP;
2831813
+ const hasSynthData = !!chainKeys.synthDataApiKey;
2831814
+ const anyChain = hasSolana || hasPolkadot || hasChainlink || hasEVM || hasCDP || hasSynthData;
2831437
2831815
  return /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
2831438
2831816
  flexDirection: "column",
2831439
2831817
  children: [
@@ -2831506,6 +2831884,12 @@ function DoneStep({ exchangeConfigured, exchangeLabel, llmConfigured, chainKeys
2831506
2831884
  color: "green",
2831507
2831885
  children: "[OK] Coinbase CDP (Base smart wallets)"
2831508
2831886
  }, undefined, false, undefined, this)
2831887
+ }, undefined, false, undefined, this),
2831888
+ hasSynthData && /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Box_default, {
2831889
+ children: /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(Text, {
2831890
+ color: "green",
2831891
+ children: "[OK] SynthData (AI predictions, LP optimization)"
2831892
+ }, undefined, false, undefined, this)
2831509
2831893
  }, undefined, false, undefined, this)
2831510
2831894
  ]
2831511
2831895
  }, undefined, true, undefined, this),
@@ -2832227,7 +2832611,7 @@ init_types11();
2832227
2832611
  init_monitor();
2832228
2832612
  await __promiseAll([
2832229
2832613
  init_orchestrator(),
2832230
- init_client19(),
2832614
+ init_client20(),
2832231
2832615
  init_manager5()
2832232
2832616
  ]);
2832233
2832617
  init_trades();
@@ -2837958,7 +2838342,7 @@ async function checkForUpdates() {
2837958
2838342
 
2837959
2838343
  // src/index.tsx
2837960
2838344
  init_telemetry2();
2837961
- await init_client19();
2838345
+ await init_client20();
2837962
2838346
  var jsx_dev_runtime26 = __toESM(require_jsx_dev_runtime(), 1);
2837963
2838347
  var flags3 = parseFlags();
2837964
2838348
  var command = parseCommand();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@general-liquidity/gordon-cli",
3
- "version": "0.75.14",
3
+ "version": "0.75.15",
4
4
  "description": "The Frontier Trading Agent",
5
5
  "author": "General Liquidity, Inc.",
6
6
  "license": "MIT",