@vtxmacro/cli 2026.10.76 → 2026.10.78

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.
@@ -75,6 +75,282 @@ var PROVIDER_OUT_OF_CREDIT = {
75
75
  "vtx_phrase": "the ai provider account is out of credit",
76
76
  "attempt_summary_marker": "out of credit"
77
77
  };
78
+ var BINANCE_REQUEST_CONTRACT = {
79
+ "weight_interval": "1m",
80
+ "apis": {
81
+ "futures": {
82
+ "weight_window_seconds": 60,
83
+ "weight_per_window": 2400,
84
+ "orders": [
85
+ {
86
+ "interval": "10s",
87
+ "window_seconds": 10,
88
+ "limit": 300
89
+ },
90
+ {
91
+ "interval": "1m",
92
+ "window_seconds": 60,
93
+ "limit": 1200
94
+ }
95
+ ]
96
+ },
97
+ "spot": {
98
+ "weight_window_seconds": 60,
99
+ "weight_per_window": 6e3,
100
+ "orders": []
101
+ }
102
+ },
103
+ "klines": {
104
+ "default_limit": 500,
105
+ "limit_max": 1500,
106
+ "weight_tiers": [
107
+ {
108
+ "max_limit": 99,
109
+ "weight": 1
110
+ },
111
+ {
112
+ "max_limit": 499,
113
+ "weight": 2
114
+ },
115
+ {
116
+ "max_limit": 1e3,
117
+ "weight": 5
118
+ },
119
+ {
120
+ "max_limit": 1500,
121
+ "weight": 10
122
+ }
123
+ ]
124
+ },
125
+ "costs": {
126
+ "futures": {
127
+ "GET /fapi/v1/time": {
128
+ "weight": 1
129
+ },
130
+ "GET /fapi/v1/exchangeInfo": {
131
+ "weight": 1
132
+ },
133
+ "GET /fapi/v1/premiumIndex": {
134
+ "weight": 1,
135
+ "weight_all_symbols": 10
136
+ },
137
+ "GET /fapi/v2/ticker/price": {
138
+ "weight": 1,
139
+ "weight_all_symbols": 2,
140
+ "used_weight_header_unreliable": true
141
+ },
142
+ "GET /fapi/v1/klines": {
143
+ "weight_by_klines_limit": true
144
+ },
145
+ "GET /fapi/v1/accountConfig": {
146
+ "weight": 5
147
+ },
148
+ "GET /fapi/v1/symbolConfig": {
149
+ "weight": 5
150
+ },
151
+ "GET /fapi/v1/positionSide/dual": {
152
+ "weight": 30
153
+ },
154
+ "GET /fapi/v1/multiAssetsMargin": {
155
+ "weight": 30
156
+ },
157
+ "GET /fapi/v3/account": {
158
+ "weight": 5
159
+ },
160
+ "GET /fapi/v3/balance": {
161
+ "weight": 5
162
+ },
163
+ "GET /fapi/v3/positionRisk": {
164
+ "weight": 5
165
+ },
166
+ "GET /fapi/v1/openOrders": {
167
+ "weight": 1,
168
+ "weight_all_symbols": 40
169
+ },
170
+ "GET /fapi/v1/order": {
171
+ "weight": 1
172
+ },
173
+ "GET /fapi/v1/openAlgoOrders": {
174
+ "weight": 1,
175
+ "weight_all_symbols": 40
176
+ },
177
+ "GET /fapi/v1/algoOrder": {
178
+ "weight": 1
179
+ },
180
+ "GET /fapi/v1/userTrades": {
181
+ "weight": 5
182
+ },
183
+ "GET /fapi/v1/allOrders": {
184
+ "weight": 5
185
+ },
186
+ "GET /fapi/v1/income": {
187
+ "weight": 30
188
+ },
189
+ "GET /fapi/v1/leverageBracket": {
190
+ "weight": 1
191
+ },
192
+ "GET /fapi/v1/commissionRate": {
193
+ "weight": 20
194
+ },
195
+ "POST /fapi/v1/order": {
196
+ "weight": 0,
197
+ "orders": {
198
+ "10s": 1,
199
+ "1m": 1
200
+ }
201
+ },
202
+ "PUT /fapi/v1/order": {
203
+ "weight": 0,
204
+ "orders": {
205
+ "10s": 1,
206
+ "1m": 1
207
+ }
208
+ },
209
+ "POST /fapi/v1/batchOrders": {
210
+ "weight": 5,
211
+ "orders": {
212
+ "10s": 5,
213
+ "1m": 1
214
+ }
215
+ },
216
+ "PUT /fapi/v1/batchOrders": {
217
+ "weight": 5,
218
+ "orders": {
219
+ "10s": 5,
220
+ "1m": 1
221
+ }
222
+ },
223
+ "POST /fapi/v1/algoOrder": {
224
+ "weight": 0,
225
+ "orders": {
226
+ "10s": 1,
227
+ "1m": 1
228
+ }
229
+ },
230
+ "DELETE /fapi/v1/order": {
231
+ "weight": 1
232
+ },
233
+ "DELETE /fapi/v1/batchOrders": {
234
+ "weight": 1
235
+ },
236
+ "DELETE /fapi/v1/allOpenOrders": {
237
+ "weight": 1
238
+ },
239
+ "DELETE /fapi/v1/algoOrder": {
240
+ "weight": 1
241
+ },
242
+ "DELETE /fapi/v1/algoOpenOrders": {
243
+ "weight": 1
244
+ },
245
+ "POST /fapi/v1/leverage": {
246
+ "weight": 1
247
+ },
248
+ "POST /fapi/v1/marginType": {
249
+ "weight": 1
250
+ },
251
+ "POST /fapi/v1/positionSide/dual": {
252
+ "weight": 1
253
+ },
254
+ "POST /fapi/v1/multiAssetsMargin": {
255
+ "weight": 1
256
+ }
257
+ },
258
+ "spot": {
259
+ "GET /api/v3/time": {
260
+ "weight": 1
261
+ },
262
+ "GET /api/v3/account": {
263
+ "weight": 20
264
+ },
265
+ "GET /sapi/v1/account/apiRestrictions": {
266
+ "weight": 1
267
+ }
268
+ }
269
+ }
270
+ };
271
+ var BINANCE_ERROR_CODES = {
272
+ "codes": {
273
+ "UNKNOWN": -1e3,
274
+ "DISCONNECTED": -1001,
275
+ "UNAUTHORIZED": -1002,
276
+ "TOO_MANY_REQUESTS": -1003,
277
+ "UNEXPECTED_RESPONSE": -1006,
278
+ "TIMEOUT": -1007,
279
+ "REQUEST_THROTTLED": -1008,
280
+ "INVALID_MESSAGE": -1013,
281
+ "TOO_MANY_ORDERS": -1015,
282
+ "SERVICE_SHUTTING_DOWN": -1016,
283
+ "INVALID_TIMESTAMP": -1021,
284
+ "INVALID_SIGNATURE": -1022,
285
+ "MANDATORY_PARAM_EMPTY_OR_MALFORMED": -1102,
286
+ "BAD_PRECISION": -1111,
287
+ "INVALID_ORDER_TYPE": -1116,
288
+ "BAD_SYMBOL": -1121,
289
+ "INVALID_PARAMETER": -1130,
290
+ "NEW_ORDER_REJECTED": -2010,
291
+ "CANCEL_REJECTED": -2011,
292
+ "NO_SUCH_ORDER": -2013,
293
+ "BAD_API_KEY_FORMAT": -2014,
294
+ "REJECTED_API_KEY": -2015,
295
+ "BALANCE_NOT_SUFFICIENT": -2018,
296
+ "MARGIN_NOT_SUFFICIENT": -2019,
297
+ "UNABLE_TO_FILL": -2020,
298
+ "ORDER_WOULD_IMMEDIATELY_TRIGGER": -2021,
299
+ "REDUCE_ONLY_REJECT": -2022,
300
+ "POSITION_NOT_SUFFICIENT": -2024,
301
+ "MAX_OPEN_ORDER_EXCEEDED": -2025,
302
+ "REDUCE_ONLY_ORDER_TYPE_NOT_SUPPORTED": -2026,
303
+ "MAX_LEVERAGE_RATIO": -2027,
304
+ "MIN_LEVERAGE_RATIO": -2028,
305
+ "PRICE_GREATER_THAN_MAX_PRICE": -4002,
306
+ "QTY_LESS_THAN_ZERO": -4003,
307
+ "QTY_LESS_THAN_MIN_QTY": -4004,
308
+ "QTY_GREATER_THAN_MAX_QTY": -4005,
309
+ "STOP_PRICE_GREATER_THAN_MAX_PRICE": -4007,
310
+ "PRICE_LESS_THAN_MIN_PRICE": -4013,
311
+ "PRICE_NOT_INCREASED_BY_TICK_SIZE": -4014,
312
+ "INVALID_CLIENT_ORDER_ID": -4015,
313
+ "PRICE_HIGHER_THAN_MULTIPLIER_UP": -4016,
314
+ "QTY_NOT_INCREASED_BY_STEP_SIZE": -4023,
315
+ "PRICE_LOWER_THAN_MULTIPLIER_DOWN": -4024,
316
+ "INVALID_LEVERAGE": -4028,
317
+ "MAX_STOP_ORDER_EXCEEDED": -4045,
318
+ "NO_NEED_TO_CHANGE_MARGIN_TYPE": -4046,
319
+ "MARGIN_TYPE_BLOCKED_BY_OPEN_ORDERS": -4047,
320
+ "MARGIN_TYPE_BLOCKED_BY_POSITION": -4048,
321
+ "NO_NEED_TO_CHANGE_POSITION_SIDE": -4059,
322
+ "POSITION_SIDE_NOT_MATCH": -4061,
323
+ "REDUCE_ONLY_CONFLICT": -4062,
324
+ "REDUCE_ONLY_ORDER_PERMISSION": -4087,
325
+ "SYMBOL_REDUCE_ONLY": -4105,
326
+ "SYMBOL_REDUCE_ONLY_BUY": -4106,
327
+ "SYMBOL_REDUCE_ONLY_SELL": -4107,
328
+ "INACTIVE_ACCOUNT": -4109,
329
+ "DUPLICATED_CLIENT_ORDER_ID": -4116,
330
+ "REDUCE_ONLY_MARGIN_CHECK_FAILED": -4118,
331
+ "STOP_ORDER_SWITCH_ALGO": -4120,
332
+ "MARKET_ORDER_REJECT": -4131,
333
+ "QUANTITY_EXISTS_WITH_CLOSE_POSITION": -4137,
334
+ "REDUCE_ONLY_MUST_BE_TRUE": -4138,
335
+ "INVALID_OPENING_POSITION_STATUS": -4140,
336
+ "STRATEGY_INVALID_TRIGGER_PRICE": -4142,
337
+ "ISOLATED_LEVERAGE_REJECT_WITH_POSITION": -4161,
338
+ "MIN_NOTIONAL": -4164,
339
+ "PRICE_HIGHER_THAN_STOP_MULTIPLIER_UP": -4183,
340
+ "PRICE_LOWER_THAN_STOP_MULTIPLIER_DOWN": -4184,
341
+ "ACCOUNT_REDUCE_ONLY": -4189,
342
+ "ADJUST_LEVERAGE_ONE_MONTH_FAILED": -4203,
343
+ "ADJUST_LEVERAGE_X_DAYS_FAILED": -4205,
344
+ "ADJUST_LEVERAGE_SYMBOL_FAILED": -4209,
345
+ "STOP_PRICE_HIGHER_THAN_PRICE_MULTIPLIER_LIMIT": -4210,
346
+ "STOP_PRICE_LOWER_THAN_PRICE_MULTIPLIER_LIMIT": -4211,
347
+ "ADJUST_LEVERAGE_COMPLIANCE_FAILED": -4403,
348
+ "FOK_ORDER_REJECT": -5021,
349
+ "GTX_ORDER_REJECT": -5022,
350
+ "ME_RECVWINDOW_REJECT": -5028,
351
+ "MODIFICATION_MIN_NOTIONAL": -5029
352
+ }
353
+ };
78
354
 
79
355
  // lib/constants.ts
80
356
  var MS_PER_SECOND = 1e3;
@@ -115,6 +391,7 @@ var HTTP_STATUS = {
115
391
  CONTENT_TOO_LARGE: 413,
116
392
  URI_TOO_LONG: 414,
117
393
  UNSUPPORTED_MEDIA_TYPE: 415,
394
+ IM_A_TEAPOT: 418,
118
395
  UNPROCESSABLE_CONTENT: 422,
119
396
  TOO_EARLY: 425,
120
397
  TOO_MANY_REQUESTS: 429,
@@ -148,6 +425,37 @@ var AI_SNAPSHOT_PACKED_ENTRY_FIELDS = AI_SNAPSHOT_WIRE_FORMAT.packed_entry_field
148
425
  var MT5_SYNTHETIC_LEG_ID_BASE = 2 ** 52;
149
426
  var MT5_SYNTHETIC_LEG_KINDS = 2;
150
427
  var MT5_SYNTHETIC_LEG_OPENING_LIMIT = (2 ** 53 - MT5_SYNTHETIC_LEG_ID_BASE) / MT5_SYNTHETIC_LEG_KINDS;
428
+ var BINANCE_USER_TRADES_WINDOW_MS = DAYS_PER_WEEK * MS_PER_DAY;
429
+ var BINANCE_ALL_ORDERS_WINDOW_MS = DAYS_PER_WEEK * MS_PER_DAY;
430
+ var BINANCE_REQUESTS = BINANCE_REQUEST_CONTRACT;
431
+ var BINANCE_KLINES_LIMIT_MAX = BINANCE_REQUESTS.klines.limit_max;
432
+ var BINANCE_REQUEST_WEIGHT_WINDOW_MS = BINANCE_REQUESTS.apis.futures.weight_window_seconds * MS_PER_SECOND;
433
+ var BINANCE_REQUEST_WEIGHT_INTERVAL = BINANCE_REQUESTS.weight_interval;
434
+ var binanceApiLimits = (api) => ({
435
+ weightPerWindow: api.weight_per_window,
436
+ orders: api.orders.map((order) => ({ interval: order.interval, windowMs: order.window_seconds * MS_PER_SECOND, limit: order.limit }))
437
+ });
438
+ var BINANCE_REQUEST_LIMITS = {
439
+ futures: binanceApiLimits(BINANCE_REQUESTS.apis.futures),
440
+ spot: binanceApiLimits(BINANCE_REQUESTS.apis.spot)
441
+ };
442
+ var BINANCE_KLINES_DEFAULT_LIMIT = BINANCE_REQUESTS.klines.default_limit;
443
+ var BINANCE_KLINES_WEIGHT_TIERS = BINANCE_REQUESTS.klines.weight_tiers.map(
444
+ (tier) => ({ maxLimit: tier.max_limit, weight: tier.weight })
445
+ );
446
+ var binanceCostSpec = (cost) => ({
447
+ ...cost.weight !== void 0 ? { weight: cost.weight } : {},
448
+ ...cost.weight_all_symbols !== void 0 ? { weightAllSymbols: cost.weight_all_symbols } : {},
449
+ ...cost.weight_by_klines_limit ? { weightByLimit: BINANCE_KLINES_WEIGHT_TIERS } : {},
450
+ ...cost.orders ? { orders: cost.orders } : {},
451
+ ...cost.used_weight_header_unreliable ? { usedWeightHeaderUnreliable: true } : {}
452
+ });
453
+ var binanceCosts = (costs) => Object.fromEntries(Object.entries(costs).map(([request, cost]) => [request, binanceCostSpec(cost)]));
454
+ var BINANCE_REQUEST_COSTS = {
455
+ futures: binanceCosts(BINANCE_REQUESTS.costs.futures),
456
+ spot: binanceCosts(BINANCE_REQUESTS.costs.spot)
457
+ };
458
+ var BINANCE_ERROR_CODE = BINANCE_ERROR_CODES.codes;
151
459
 
152
460
  // lib/runtime-policy.generated.json
153
461
  var runtime_policy_generated_default = {
@@ -185,6 +493,11 @@ var runtime_policy_generated_default = {
185
493
  account_read_backoff_exponent_max: 30,
186
494
  ai_start_grace_min_ms: 45e3
187
495
  },
496
+ server_read_recovery: {
497
+ retry_delay_ms: 1500,
498
+ max_attempts: 3,
499
+ attempts_window_ms: 6e4
500
+ },
188
501
  deployment_reload_observability: {
189
502
  bootstrap_max_error_events_per_page: 4,
190
503
  bootstrap_max_profiles: 10
@@ -225,6 +538,7 @@ var runtime_policy_generated_default = {
225
538
  debug_log_throttle_ms: 1e3,
226
539
  initial_history_stall_ms: 15e3,
227
540
  initial_history_recovery_cooldown_ms: 3e4,
541
+ initial_history_min_bars: 10,
228
542
  viewport_restore_settle_ms: 100,
229
543
  symbol_price_wait_ms: 2e3,
230
544
  layout_auto_save_delay_ms: 250
@@ -504,6 +818,7 @@ var runtime_policy_generated_default = {
504
818
  display_batch_size: 50,
505
819
  load_more_threshold_px: 100,
506
820
  trade_history_fetch_page_size: 100,
821
+ exchange_key_read_days: 6,
507
822
  ai_panel_interaction_window_ms: 2500,
508
823
  ai_panel_defer_max_staleness_ms: 1e4,
509
824
  ai_panel_defer_retry_ms: 1500,
@@ -949,6 +1264,7 @@ var runtime_policy_generated_default = {
949
1264
  device_rounds_per_sweep: 4
950
1265
  },
951
1266
  panel_reads: {
1267
+ exchange_key_refresh_seconds: 15,
952
1268
  device_open_orders_reuse_seconds: 2,
953
1269
  all_view_profile_concurrency: 2,
954
1270
  display_account_fresh_seconds: 60
@@ -1060,6 +1376,11 @@ var runtime_policy_generated_default = {
1060
1376
  },
1061
1377
  defaults: {
1062
1378
  server_ai_max_slippage: 5
1379
+ },
1380
+ server_runtime_host: {
1381
+ server_executors: {
1382
+ idle_seconds: 3600
1383
+ }
1063
1384
  }
1064
1385
  },
1065
1386
  agent_cli: {
@@ -1091,6 +1412,181 @@ var runtime_policy_generated_default = {
1091
1412
  device_portfolio: {
1092
1413
  device_retry_seconds: 300
1093
1414
  },
1415
+ lighter: {
1416
+ flow_kinds: [
1417
+ "deposit",
1418
+ "withdraw",
1419
+ "L2TransferInflow",
1420
+ "L2TransferOutflow",
1421
+ "L2SelfTransfer",
1422
+ "L2MintSharesOutflow",
1423
+ "L2BurnSharesInflow",
1424
+ "L2ForceBurnSharesInflow",
1425
+ "L1BurnSharesInflow",
1426
+ "L2CreatePublicPoolOutflow"
1427
+ ],
1428
+ max_transfers: 100,
1429
+ device_retry_seconds: 300,
1430
+ device_batches_per_read: 10
1431
+ },
1432
+ okx: {
1433
+ flow_bill_types: [
1434
+ "1"
1435
+ ],
1436
+ max_transfers: 100,
1437
+ device_retry_seconds: 300,
1438
+ device_batches_per_read: 10
1439
+ },
1440
+ binance: {
1441
+ flow_income_types: [
1442
+ "TRANSFER",
1443
+ "INTERNAL_TRANSFER",
1444
+ "STRATEGY_UMFUTURES_TRANSFER",
1445
+ "CROSS_COLLATERAL_TRANSFER",
1446
+ "COIN_SWAP_DEPOSIT",
1447
+ "COIN_SWAP_WITHDRAW",
1448
+ "AUTO_EXCHANGE"
1449
+ ],
1450
+ funding_income_types: [
1451
+ "FUNDING_FEE"
1452
+ ],
1453
+ trade_income_types: [
1454
+ "REALIZED_PNL",
1455
+ "COMMISSION"
1456
+ ],
1457
+ max_transfers: 1e3,
1458
+ device_retry_seconds: 300,
1459
+ device_batches_per_read: 10
1460
+ },
1461
+ bitget: {
1462
+ flow_business_types: [
1463
+ "trans_from_exchange",
1464
+ "trans_to_exchange",
1465
+ "trans_from_contract",
1466
+ "trans_to_contract",
1467
+ "trans_from_otc",
1468
+ "trans_to_otc",
1469
+ "trans_from_cross",
1470
+ "trans_to_cross",
1471
+ "trans_from_isolated",
1472
+ "trans_to_isolated"
1473
+ ],
1474
+ max_transfers: 1e3,
1475
+ device_retry_seconds: 300,
1476
+ device_batches_per_read: 10
1477
+ },
1478
+ mexc: {
1479
+ flow_transfer_types: [
1480
+ "IN",
1481
+ "OUT"
1482
+ ],
1483
+ max_transfers: 100,
1484
+ device_retry_seconds: 300,
1485
+ device_batches_per_read: 10
1486
+ },
1487
+ coinbase_intl: {
1488
+ flow_log_types: [
1489
+ "deposit",
1490
+ "withdrawal",
1491
+ "transfer",
1492
+ "swap"
1493
+ ],
1494
+ max_transfers: 1e3,
1495
+ device_retry_seconds: 300,
1496
+ device_batches_per_read: 10
1497
+ },
1498
+ kraken_futures: {
1499
+ flow_infos: [
1500
+ "deposit",
1501
+ "withdrawal",
1502
+ "transfer",
1503
+ "cross-exchange transfer",
1504
+ "cross-exchange transfer failed",
1505
+ "subaccount transfer",
1506
+ "admin transfer"
1507
+ ],
1508
+ flow_assets: [
1509
+ "USD",
1510
+ "USDC",
1511
+ "USDT"
1512
+ ],
1513
+ max_transfers: 1e3,
1514
+ device_retry_seconds: 300,
1515
+ device_batches_per_read: 10
1516
+ },
1517
+ aster: {
1518
+ flow_income_types: [
1519
+ "TRANSFER",
1520
+ "INTERNAL_TRANSFER",
1521
+ "CROSS_COLLATERAL_TRANSFER",
1522
+ "AUTO_EXCHANGE"
1523
+ ],
1524
+ funding_income_types: [
1525
+ "FUNDING_FEE"
1526
+ ],
1527
+ trade_income_types: [
1528
+ "REALIZED_PNL",
1529
+ "COMMISSION"
1530
+ ],
1531
+ max_transfers: 1e3,
1532
+ device_retry_seconds: 300,
1533
+ device_batches_per_read: 10
1534
+ },
1535
+ kucoin_futures: {
1536
+ flow_ledger_types: [
1537
+ "Deposit",
1538
+ "Withdrawal",
1539
+ "TransferIn",
1540
+ "TransferOut"
1541
+ ],
1542
+ max_transfers: 1e3,
1543
+ device_retry_seconds: 300,
1544
+ device_batches_per_read: 10
1545
+ },
1546
+ bybit: {
1547
+ flow_transaction_types: [
1548
+ "TRANSFER_IN",
1549
+ "TRANSFER_OUT",
1550
+ "BONUS_TRANSFER_IN",
1551
+ "BONUS_TRANSFER_OUT",
1552
+ "PEF_TRANSFER_IN",
1553
+ "PEF_TRANSFER_OUT",
1554
+ "FLEXIBLE_STAKING_SUBSCRIPTION",
1555
+ "FLEXIBLE_STAKING_REDEMPTION",
1556
+ "FLEXIBLE_STAKING_REFUND",
1557
+ "FIXED_STAKING_SUBSCRIPTION",
1558
+ "FIXED_STAKING_REFUND",
1559
+ "FIXED_SAVING_PRINCIPAL_REDEMPTION",
1560
+ "ONCHAINEARN_SUBSCRIPTION",
1561
+ "ONCHAINEARN_REDEMPTION",
1562
+ "ONCHAINEARN_REFUND",
1563
+ "STRUCTURE_PRODUCT_SUBSCRIPTION",
1564
+ "STRUCTURE_PRODUCT_REFUND",
1565
+ "CLASSIC_WEALTH_MANAGEMENT_SUBSCRIPTION",
1566
+ "PREMIMUM_WEALTH_MANAGEMENT_SUBSCRIPTION",
1567
+ "PREMIMUM_WEALTH_MANAGEMENT_REFUND",
1568
+ "LIQUIDITY_MINING_SUBSCRIPTION",
1569
+ "LIQUIDITY_MINING_REFUND",
1570
+ "PWM_SUBSCRIPTION",
1571
+ "PWM_REFUND",
1572
+ "BYUSDT_MINT",
1573
+ "BYUSDT_REDEMPTION",
1574
+ "STOCK_TRADE_BUY",
1575
+ "STOCK_TRADE_SELL",
1576
+ "STOCK_TRADE_REFUND"
1577
+ ],
1578
+ max_transfers: 50,
1579
+ device_retry_seconds: 300,
1580
+ device_batches_per_read: 10
1581
+ },
1582
+ bingx: {
1583
+ flow_income_types: [
1584
+ "TRANSFER"
1585
+ ],
1586
+ max_transfers: 1e3,
1587
+ device_retry_seconds: 300,
1588
+ device_batches_per_read: 10
1589
+ },
1094
1590
  max_page_size: 100
1095
1591
  },
1096
1592
  external_inference: {
@@ -1415,6 +1911,23 @@ var runtime_policy_generated_default = {
1415
1911
  background: 6
1416
1912
  },
1417
1913
  display_name: "Hyperliquid",
1914
+ short_code: "HYP",
1915
+ candle_timeframes: [
1916
+ "1m",
1917
+ "5m",
1918
+ "15m",
1919
+ "30m",
1920
+ "1h",
1921
+ "4h",
1922
+ "1d",
1923
+ "1w"
1924
+ ],
1925
+ client_surfaces: [
1926
+ "browser",
1927
+ "desktop",
1928
+ "android",
1929
+ "agent_token"
1930
+ ],
1418
1931
  account_stream_backoff: {
1419
1932
  initial_seconds: 1,
1420
1933
  max_seconds: 15,
@@ -1424,7 +1937,8 @@ var runtime_policy_generated_default = {
1424
1937
  },
1425
1938
  websocket: {
1426
1939
  ping_interval_seconds: 20,
1427
- account_open_timeout_seconds: 10
1940
+ account_open_timeout_seconds: 10,
1941
+ ticker_cache_ttl_seconds: 60
1428
1942
  },
1429
1943
  node: {
1430
1944
  max_info_lag_milliseconds: 1e3
@@ -1433,6 +1947,29 @@ var runtime_policy_generated_default = {
1433
1947
  default_dex_label: "Hyperliquid"
1434
1948
  }
1435
1949
  },
1950
+ fleet_recovery: {
1951
+ permit_lease_seconds: 8,
1952
+ recovery_initial_concurrency: 1,
1953
+ recovery_max_concurrency: 8,
1954
+ recovery_successes_per_step: 4,
1955
+ recovery_min_spacing_ms: 100,
1956
+ queue_poll_ms: 50,
1957
+ fallback_max_seconds: 300,
1958
+ fallback_jitter_min_factor: 0.5,
1959
+ recovery_quiet_seconds: 300,
1960
+ failed_probe_delay_seconds: 2,
1961
+ hit_claim_milliseconds: 2e3
1962
+ },
1963
+ account_rules: {
1964
+ usd_stable_assets: [
1965
+ "USD",
1966
+ "USDC",
1967
+ "USDT",
1968
+ "USDT0",
1969
+ "USDH",
1970
+ "USDe"
1971
+ ]
1972
+ },
1436
1973
  executor: {
1437
1974
  capabilities: [
1438
1975
  "market_orders",
@@ -1446,8 +1983,605 @@ var runtime_policy_generated_default = {
1446
1983
  "trailing_stops"
1447
1984
  ]
1448
1985
  },
1986
+ bound_accounts: {
1987
+ recheck_seconds: 900
1988
+ },
1989
+ observability: {
1990
+ operations: [
1991
+ "order",
1992
+ "cancel",
1993
+ "modify",
1994
+ "leverage",
1995
+ "close",
1996
+ "account_read",
1997
+ "positions_read",
1998
+ "orders_read",
1999
+ "fills_read",
2000
+ "market_read",
2001
+ "candles_read",
2002
+ "key_check",
2003
+ "stream"
2004
+ ],
2005
+ heartbeat_max_entries: 24,
2006
+ endpoint_max_length: 96,
2007
+ error_code_max_length: 32,
2008
+ error_name_max_length: 64,
2009
+ detail_max_entries: 8
2010
+ },
2011
+ lighter: {
2012
+ account_display_fresh_seconds: 120,
2013
+ display_name: "Lighter",
2014
+ key_name: "key",
2015
+ short_code: "LIG",
2016
+ candle_timeframes: [
2017
+ "1m",
2018
+ "5m",
2019
+ "15m",
2020
+ "30m",
2021
+ "1h",
2022
+ "4h",
2023
+ "1d"
2024
+ ],
2025
+ client_surfaces: [
2026
+ "browser",
2027
+ "desktop",
2028
+ "android",
2029
+ "agent_token"
2030
+ ],
2031
+ collateral_asset: "USDC",
2032
+ markets_cache_seconds: 3600,
2033
+ order_expiry_days: 28,
2034
+ order_renew_days_before_expiry: 7,
2035
+ remembered_order_ids: 5e3,
2036
+ ended_order_search_retry_seconds: 300,
2037
+ tx_readback_attempts: 10,
2038
+ tx_readback_interval_milliseconds: 300,
2039
+ auth_token_renew_margin_seconds: 300,
2040
+ fill_lookback_hours: 72,
2041
+ client_request_capacity: {
2042
+ reserve_margin_requests: 6,
2043
+ demand_bucket_seconds: 60,
2044
+ demand_horizon_seconds: 3600,
2045
+ capacity_cut_percent: 70,
2046
+ capacity_min_requests: 6,
2047
+ capacity_recovery_requests_per_minute: 6,
2048
+ rate_limit_pause_seconds: 60,
2049
+ admission_wait_seconds: 10,
2050
+ background_admission_wait_seconds: 90,
2051
+ fleet_reserve_weight: {
2052
+ trading_reduce: 1,
2053
+ trading_reconcile: 2,
2054
+ trading_execute: 3,
2055
+ trading_analysis: 5,
2056
+ ui: 15,
2057
+ background: 20
2058
+ }
2059
+ }
2060
+ },
2061
+ binance: {
2062
+ account_display_fresh_seconds: 30,
2063
+ display_name: "Binance",
2064
+ key_name: "API key",
2065
+ short_code: "BIN",
2066
+ candle_timeframes: [
2067
+ "1m",
2068
+ "5m",
2069
+ "15m",
2070
+ "30m",
2071
+ "1h",
2072
+ "4h",
2073
+ "1d",
2074
+ "1w"
2075
+ ],
2076
+ quote_asset: "USDT",
2077
+ markets_cache_seconds: 3600,
2078
+ recv_window_milliseconds: 5e3,
2079
+ fill_lookback_days: 7,
2080
+ client_request_capacity: {
2081
+ reserve_margin_weight: 100,
2082
+ demand_bucket_seconds: 60,
2083
+ demand_horizon_seconds: 3600,
2084
+ capacity_cut_percent: 70,
2085
+ capacity_min_weight: 480,
2086
+ capacity_recovery_weight_per_minute: 240,
2087
+ rate_limit_pause_seconds: 60,
2088
+ ip_ban_pause_seconds: 120,
2089
+ admission_wait_seconds: 10,
2090
+ background_admission_wait_seconds: 90,
2091
+ fleet_reserve_weight: {
2092
+ trading_reduce: 50,
2093
+ trading_reconcile: 75,
2094
+ trading_execute: 100,
2095
+ trading_analysis: 200,
2096
+ ui: 600,
2097
+ background: 800
2098
+ }
2099
+ },
2100
+ networks: {
2101
+ live: {
2102
+ client_surfaces: [
2103
+ "browser",
2104
+ "desktop",
2105
+ "android",
2106
+ "agent_token"
2107
+ ]
2108
+ },
2109
+ testnet: {
2110
+ client_surfaces: [
2111
+ "desktop",
2112
+ "android",
2113
+ "agent_token"
2114
+ ]
2115
+ }
2116
+ }
2117
+ },
2118
+ mexc: {
2119
+ account_display_fresh_seconds: 30,
2120
+ display_name: "MEXC",
2121
+ key_name: "API key",
2122
+ short_code: "MEX",
2123
+ candle_timeframes: [
2124
+ "1m",
2125
+ "5m",
2126
+ "15m",
2127
+ "30m",
2128
+ "1h",
2129
+ "4h",
2130
+ "1d",
2131
+ "1w"
2132
+ ],
2133
+ quote_asset: "USDT",
2134
+ markets_cache_seconds: 3600,
2135
+ recv_window_seconds: 10,
2136
+ fill_lookback_days: 7,
2137
+ client_surfaces: [
2138
+ "desktop",
2139
+ "android",
2140
+ "agent_token"
2141
+ ],
2142
+ remembered_order_ids: 5e3,
2143
+ ended_order_search_days: 7,
2144
+ ended_order_search_retry_seconds: 300,
2145
+ client_request_capacity: {
2146
+ reserve_margin_weight: 1,
2147
+ demand_bucket_seconds: 60,
2148
+ demand_horizon_seconds: 3600,
2149
+ capacity_cut_percent: 70,
2150
+ capacity_min_weight: 2,
2151
+ capacity_recovery_weight_per_minute: 20,
2152
+ admission_wait_seconds: 10,
2153
+ background_admission_wait_seconds: 30,
2154
+ fleet_reserve_weight: {
2155
+ trading_reduce: 1,
2156
+ trading_reconcile: 1,
2157
+ trading_execute: 1,
2158
+ trading_analysis: 2,
2159
+ ui: 3,
2160
+ background: 4
2161
+ }
2162
+ }
2163
+ },
2164
+ coinbase_intl: {
2165
+ client_request_capacity: {
2166
+ reserve_margin_requests: 2,
2167
+ demand_bucket_seconds: 60,
2168
+ demand_horizon_seconds: 3600,
2169
+ capacity_cut_percent: 70,
2170
+ capacity_min_requests: 2,
2171
+ capacity_recovery_requests_per_minute: 2,
2172
+ admission_wait_seconds: 10,
2173
+ background_admission_wait_seconds: 90,
2174
+ rate_limit_pause_seconds: 5,
2175
+ fleet_reserve_weight: {
2176
+ trading_reduce: 1,
2177
+ trading_reconcile: 1,
2178
+ trading_execute: 2,
2179
+ trading_analysis: 2,
2180
+ ui: 5,
2181
+ background: 6
2182
+ }
2183
+ },
2184
+ account_display_fresh_seconds: 30,
2185
+ quote_asset: "USDC",
2186
+ default_chart_market: "BTC_USDC-PERPETUAL",
2187
+ display_name: "Coinbase International",
2188
+ key_name: "API key name",
2189
+ short_code: "CBI",
2190
+ candle_timeframes: [
2191
+ "1m",
2192
+ "5m",
2193
+ "15m",
2194
+ "30m",
2195
+ "1h",
2196
+ "1d"
2197
+ ],
2198
+ client_surfaces: [
2199
+ "desktop",
2200
+ "android",
2201
+ "agent_token"
2202
+ ],
2203
+ request_timeout_seconds: 10,
2204
+ auth_renew_before_seconds: 60,
2205
+ auth_max_age_seconds: 900,
2206
+ write_window_seconds: 10,
2207
+ server_time_max_age_seconds: 300,
2208
+ markets_cache_seconds: 3600,
2209
+ fill_lookback_days: 7,
2210
+ fill_page_size: 1e3,
2211
+ remembered_order_ids: 5e3,
2212
+ ended_order_search_days: 7,
2213
+ ended_order_search_retry_seconds: 300
2214
+ },
2215
+ okx: {
2216
+ account_display_fresh_seconds: 30,
2217
+ display_name: "OKX",
2218
+ key_name: "API key",
2219
+ short_code: "OKX",
2220
+ candle_timeframes: [
2221
+ "1m",
2222
+ "5m",
2223
+ "15m",
2224
+ "30m",
2225
+ "1h",
2226
+ "4h",
2227
+ "1d",
2228
+ "1w"
2229
+ ],
2230
+ settle_currency: "USDT",
2231
+ markets_cache_seconds: 3600,
2232
+ markets_miss_reread_seconds: 60,
2233
+ order_lifetime_milliseconds: 5e3,
2234
+ order_readback_attempts: 5,
2235
+ order_readback_interval_milliseconds: 200,
2236
+ remembered_order_ids: 5e3,
2237
+ ended_order_search_days: 7,
2238
+ ended_order_search_retry_seconds: 300,
2239
+ fill_lookback_hours: 71,
2240
+ client_request_capacity: {
2241
+ fleet_reserve_weight: {
2242
+ trading_reduce: 1,
2243
+ trading_reconcile: 1,
2244
+ trading_execute: 1,
2245
+ trading_analysis: 2,
2246
+ ui: 3,
2247
+ background: 5
2248
+ },
2249
+ reserve_margin_requests: 1,
2250
+ demand_bucket_seconds: 60,
2251
+ demand_horizon_seconds: 3600,
2252
+ capacity_cut_percent: 70,
2253
+ capacity_min_requests: 2,
2254
+ capacity_recovery_requests_per_minute: 2,
2255
+ admission_wait_seconds: 10,
2256
+ background_admission_wait_seconds: 90
2257
+ },
2258
+ networks: {
2259
+ live: {
2260
+ client_surfaces: [
2261
+ "browser",
2262
+ "desktop",
2263
+ "android",
2264
+ "agent_token"
2265
+ ]
2266
+ },
2267
+ demo: {
2268
+ client_surfaces: [
2269
+ "browser",
2270
+ "desktop",
2271
+ "android",
2272
+ "agent_token"
2273
+ ]
2274
+ }
2275
+ }
2276
+ },
2277
+ bingx: {
2278
+ account_display_fresh_seconds: 30,
2279
+ display_name: "BingX",
2280
+ key_name: "API key",
2281
+ short_code: "BGX",
2282
+ candle_timeframes: [
2283
+ "1m",
2284
+ "5m",
2285
+ "15m",
2286
+ "30m",
2287
+ "1h",
2288
+ "4h",
2289
+ "1d",
2290
+ "1w"
2291
+ ],
2292
+ quote_asset: "USDT",
2293
+ markets_cache_seconds: 3600,
2294
+ recv_window_milliseconds: 5e3,
2295
+ fill_lookback_days: 7,
2296
+ client_request_capacity: {
2297
+ reserve_margin_requests: 50,
2298
+ demand_bucket_seconds: 60,
2299
+ demand_horizon_seconds: 3600,
2300
+ capacity_cut_percent: 70,
2301
+ capacity_min_requests: 100,
2302
+ capacity_recovery_requests_per_minute: 50,
2303
+ rate_limit_pause_seconds: 10,
2304
+ ip_ban_pause_seconds: 120,
2305
+ admission_wait_seconds: 10,
2306
+ background_admission_wait_seconds: 90,
2307
+ fleet_reserve_weight: {
2308
+ trading_reduce: 10,
2309
+ trading_reconcile: 15,
2310
+ trading_execute: 20,
2311
+ trading_analysis: 40,
2312
+ ui: 100,
2313
+ background: 125
2314
+ }
2315
+ },
2316
+ networks: {
2317
+ live: {
2318
+ client_surfaces: [
2319
+ "desktop",
2320
+ "android",
2321
+ "agent_token"
2322
+ ]
2323
+ },
2324
+ vst: {
2325
+ client_surfaces: [
2326
+ "desktop",
2327
+ "android",
2328
+ "agent_token"
2329
+ ]
2330
+ }
2331
+ }
2332
+ },
2333
+ bitget: {
2334
+ account_display_fresh_seconds: 30,
2335
+ display_name: "Bitget",
2336
+ key_name: "API key",
2337
+ short_code: "BIT",
2338
+ candle_timeframes: [
2339
+ "1m",
2340
+ "5m",
2341
+ "15m",
2342
+ "30m",
2343
+ "1h",
2344
+ "4h",
2345
+ "1d",
2346
+ "1w"
2347
+ ],
2348
+ product_type: "USDT-FUTURES",
2349
+ quote_asset: "USDT",
2350
+ markets_cache_seconds: 3600,
2351
+ fill_lookback_days: 7,
2352
+ remembered_order_ids: 5e3,
2353
+ ended_order_search_days: 7,
2354
+ ended_order_search_retry_seconds: 300,
2355
+ old_open_order_search_seconds: 3600,
2356
+ client_request_capacity: {
2357
+ reserve_margin_weight: 2,
2358
+ demand_bucket_seconds: 60,
2359
+ demand_horizon_seconds: 3600,
2360
+ capacity_cut_percent: 70,
2361
+ capacity_min_weight: 4,
2362
+ capacity_recovery_weight_per_minute: 60,
2363
+ admission_wait_seconds: 10,
2364
+ background_admission_wait_seconds: 90,
2365
+ fleet_reserve_weight: {
2366
+ trading_reduce: 1,
2367
+ trading_reconcile: 1,
2368
+ trading_execute: 2,
2369
+ trading_analysis: 2,
2370
+ ui: 5,
2371
+ background: 6
2372
+ }
2373
+ },
2374
+ networks: {
2375
+ live: {
2376
+ client_surfaces: [
2377
+ "desktop",
2378
+ "android",
2379
+ "agent_token"
2380
+ ]
2381
+ },
2382
+ demo: {
2383
+ client_surfaces: [
2384
+ "desktop",
2385
+ "android",
2386
+ "agent_token"
2387
+ ]
2388
+ }
2389
+ }
2390
+ },
2391
+ kraken_futures: {
2392
+ account_display_fresh_seconds: 30,
2393
+ display_name: "Kraken Futures",
2394
+ key_name: "API key",
2395
+ short_code: "KRA",
2396
+ candle_timeframes: [
2397
+ "1m",
2398
+ "5m",
2399
+ "15m",
2400
+ "30m",
2401
+ "1h",
2402
+ "4h",
2403
+ "1d",
2404
+ "1w"
2405
+ ],
2406
+ client_surfaces: [
2407
+ "desktop",
2408
+ "android",
2409
+ "agent_token"
2410
+ ],
2411
+ markets_cache_seconds: 3600,
2412
+ fill_lookback_days: 7,
2413
+ history_pages_per_read: 10,
2414
+ funding_log_page_entries: 1e3,
2415
+ request_capacity: {
2416
+ reserve_margin_weight: 100,
2417
+ demand_bucket_seconds: 60,
2418
+ demand_horizon_seconds: 3600,
2419
+ capacity_cut_percent: 70,
2420
+ capacity_min_weight: 100,
2421
+ capacity_recovery_weight_per_minute: 50,
2422
+ derivatives_limit_pause_seconds: 10,
2423
+ history_limit_pause_seconds: 60,
2424
+ admission_wait_seconds: 5,
2425
+ background_admission_wait_seconds: 30
2426
+ }
2427
+ },
2428
+ aster: {
2429
+ account_display_fresh_seconds: 30,
2430
+ quote_asset: "USDT",
2431
+ display_name: "Aster",
2432
+ key_name: "API wallet",
2433
+ short_code: "AST",
2434
+ candle_timeframes: [
2435
+ "1m",
2436
+ "5m",
2437
+ "15m",
2438
+ "30m",
2439
+ "1h",
2440
+ "4h",
2441
+ "1d",
2442
+ "1w"
2443
+ ],
2444
+ client_surfaces: [
2445
+ "browser",
2446
+ "desktop",
2447
+ "android",
2448
+ "agent_token"
2449
+ ],
2450
+ markets_cache_seconds: 3600,
2451
+ fill_lookback_days: 7,
2452
+ client_request_capacity: {
2453
+ reserve_margin_weight: 100,
2454
+ demand_bucket_seconds: 60,
2455
+ demand_horizon_seconds: 3600,
2456
+ capacity_cut_percent: 70,
2457
+ capacity_min_weight: 480,
2458
+ capacity_recovery_weight_per_minute: 240,
2459
+ rate_limit_pause_seconds: 60,
2460
+ ip_ban_pause_seconds: 120,
2461
+ admission_wait_seconds: 10,
2462
+ background_admission_wait_seconds: 90,
2463
+ fleet_reserve_weight: {
2464
+ trading_reduce: 50,
2465
+ trading_reconcile: 75,
2466
+ trading_execute: 100,
2467
+ trading_analysis: 200,
2468
+ ui: 600,
2469
+ background: 800
2470
+ }
2471
+ }
2472
+ },
2473
+ kucoin_futures: {
2474
+ account_display_fresh_seconds: 30,
2475
+ display_name: "KuCoin Futures",
2476
+ key_name: "API key",
2477
+ short_code: "KUC",
2478
+ candle_timeframes: [
2479
+ "1m",
2480
+ "5m",
2481
+ "15m",
2482
+ "30m",
2483
+ "1h",
2484
+ "4h",
2485
+ "1d",
2486
+ "1w"
2487
+ ],
2488
+ client_surfaces: [
2489
+ "desktop",
2490
+ "android",
2491
+ "agent_token"
2492
+ ],
2493
+ settle_currency: "USDT",
2494
+ markets_cache_seconds: 3600,
2495
+ remembered_order_ids: 5e3,
2496
+ ended_order_search_days: 7,
2497
+ ended_order_search_retry_seconds: 300,
2498
+ client_request_capacity: {
2499
+ reserve_margin_weight: 100,
2500
+ demand_bucket_seconds: 60,
2501
+ demand_horizon_seconds: 3600,
2502
+ capacity_cut_percent: 70,
2503
+ capacity_min_weight: 200,
2504
+ capacity_recovery_weight_per_minute: 100,
2505
+ admission_wait_seconds: 10,
2506
+ background_admission_wait_seconds: 60,
2507
+ fleet_reserve_weight: {
2508
+ trading_reduce: 50,
2509
+ trading_reconcile: 75,
2510
+ trading_execute: 100,
2511
+ trading_analysis: 200,
2512
+ ui: 500,
2513
+ background: 700
2514
+ }
2515
+ }
2516
+ },
2517
+ bybit: {
2518
+ client_request_capacity: {
2519
+ reserve_margin_weight: 60,
2520
+ demand_bucket_seconds: 60,
2521
+ demand_horizon_seconds: 3600,
2522
+ capacity_cut_percent: 70,
2523
+ capacity_min_weight: 60,
2524
+ capacity_recovery_weight_per_minute: 60,
2525
+ admission_wait_seconds: 10,
2526
+ background_admission_wait_seconds: 60,
2527
+ fleet_reserve_weight: {
2528
+ trading_reduce: 15,
2529
+ trading_reconcile: 20,
2530
+ trading_execute: 25,
2531
+ trading_analysis: 50,
2532
+ ui: 150,
2533
+ background: 200
2534
+ }
2535
+ },
2536
+ display_name: "Bybit",
2537
+ key_name: "API key",
2538
+ short_code: "BYB",
2539
+ candle_timeframes: [
2540
+ "1m",
2541
+ "5m",
2542
+ "15m",
2543
+ "30m",
2544
+ "1h",
2545
+ "4h",
2546
+ "1d",
2547
+ "1w"
2548
+ ],
2549
+ client_surfaces: [
2550
+ "browser",
2551
+ "desktop",
2552
+ "android",
2553
+ "agent_token"
2554
+ ],
2555
+ settle_coin: "USDT",
2556
+ account_display_fresh_seconds: 30,
2557
+ markets_cache_seconds: 3600,
2558
+ recv_window_milliseconds: 5e3,
2559
+ order_readback_attempts: 5,
2560
+ order_readback_interval_milliseconds: 200,
2561
+ remembered_order_ids: 5e3,
2562
+ ended_order_search_days: 7,
2563
+ ended_order_search_retry_seconds: 300,
2564
+ fill_lookback_hours: 167
2565
+ },
1449
2566
  mt5: {
1450
2567
  display_name: "MetaTrader 5",
2568
+ short_code: "MT5",
2569
+ candle_timeframes: [
2570
+ "1m",
2571
+ "5m",
2572
+ "15m",
2573
+ "30m",
2574
+ "1h",
2575
+ "4h",
2576
+ "1d",
2577
+ "1w"
2578
+ ],
2579
+ client_surfaces: [
2580
+ "browser",
2581
+ "desktop",
2582
+ "android",
2583
+ "agent_token"
2584
+ ],
1451
2585
  bridge_download_path: "/downloads/mt5/VtxBridge.ex5",
1452
2586
  trading_enabled: true,
1453
2587
  status_poll_seconds: 5,
@@ -1456,8 +2590,7 @@ var runtime_policy_generated_default = {
1456
2590
  request_timeout_seconds: 15,
1457
2591
  write_expires_after_seconds: 60,
1458
2592
  deal_lookback_days: 7,
1459
- deal_clock_allowance_seconds: 60,
1460
- stop_distance_margin: 0.5
2593
+ deal_clock_allowance_seconds: 60
1461
2594
  },
1462
2595
  cache: {
1463
2596
  available_assets_ttl_seconds: 300,
@@ -1472,6 +2605,12 @@ var runtime_policy_generated_default = {
1472
2605
  range_page_limit: 500
1473
2606
  }
1474
2607
  },
2608
+ observability: {
2609
+ hyperliquid_rollup: {
2610
+ enabled: true,
2611
+ exchange_latency_samples_per_minute: 200
2612
+ }
2613
+ },
1475
2614
  external_news: {
1476
2615
  benzinga: {
1477
2616
  enabled: false