@vtxmacro/cli 2026.10.75 → 2026.10.77

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
@@ -504,6 +817,7 @@ var runtime_policy_generated_default = {
504
817
  display_batch_size: 50,
505
818
  load_more_threshold_px: 100,
506
819
  trade_history_fetch_page_size: 100,
820
+ exchange_key_read_days: 6,
507
821
  ai_panel_interaction_window_ms: 2500,
508
822
  ai_panel_defer_max_staleness_ms: 1e4,
509
823
  ai_panel_defer_retry_ms: 1500,
@@ -949,6 +1263,7 @@ var runtime_policy_generated_default = {
949
1263
  device_rounds_per_sweep: 4
950
1264
  },
951
1265
  panel_reads: {
1266
+ exchange_key_refresh_seconds: 15,
952
1267
  device_open_orders_reuse_seconds: 2,
953
1268
  all_view_profile_concurrency: 2,
954
1269
  display_account_fresh_seconds: 60
@@ -1060,6 +1375,11 @@ var runtime_policy_generated_default = {
1060
1375
  },
1061
1376
  defaults: {
1062
1377
  server_ai_max_slippage: 5
1378
+ },
1379
+ server_runtime_host: {
1380
+ server_executors: {
1381
+ idle_seconds: 3600
1382
+ }
1063
1383
  }
1064
1384
  },
1065
1385
  agent_cli: {
@@ -1091,6 +1411,181 @@ var runtime_policy_generated_default = {
1091
1411
  device_portfolio: {
1092
1412
  device_retry_seconds: 300
1093
1413
  },
1414
+ lighter: {
1415
+ flow_kinds: [
1416
+ "deposit",
1417
+ "withdraw",
1418
+ "L2TransferInflow",
1419
+ "L2TransferOutflow",
1420
+ "L2SelfTransfer",
1421
+ "L2MintSharesOutflow",
1422
+ "L2BurnSharesInflow",
1423
+ "L2ForceBurnSharesInflow",
1424
+ "L1BurnSharesInflow",
1425
+ "L2CreatePublicPoolOutflow"
1426
+ ],
1427
+ max_transfers: 100,
1428
+ device_retry_seconds: 300,
1429
+ device_batches_per_read: 10
1430
+ },
1431
+ okx: {
1432
+ flow_bill_types: [
1433
+ "1"
1434
+ ],
1435
+ max_transfers: 100,
1436
+ device_retry_seconds: 300,
1437
+ device_batches_per_read: 10
1438
+ },
1439
+ binance: {
1440
+ flow_income_types: [
1441
+ "TRANSFER",
1442
+ "INTERNAL_TRANSFER",
1443
+ "STRATEGY_UMFUTURES_TRANSFER",
1444
+ "CROSS_COLLATERAL_TRANSFER",
1445
+ "COIN_SWAP_DEPOSIT",
1446
+ "COIN_SWAP_WITHDRAW",
1447
+ "AUTO_EXCHANGE"
1448
+ ],
1449
+ funding_income_types: [
1450
+ "FUNDING_FEE"
1451
+ ],
1452
+ trade_income_types: [
1453
+ "REALIZED_PNL",
1454
+ "COMMISSION"
1455
+ ],
1456
+ max_transfers: 1e3,
1457
+ device_retry_seconds: 300,
1458
+ device_batches_per_read: 10
1459
+ },
1460
+ bitget: {
1461
+ flow_business_types: [
1462
+ "trans_from_exchange",
1463
+ "trans_to_exchange",
1464
+ "trans_from_contract",
1465
+ "trans_to_contract",
1466
+ "trans_from_otc",
1467
+ "trans_to_otc",
1468
+ "trans_from_cross",
1469
+ "trans_to_cross",
1470
+ "trans_from_isolated",
1471
+ "trans_to_isolated"
1472
+ ],
1473
+ max_transfers: 1e3,
1474
+ device_retry_seconds: 300,
1475
+ device_batches_per_read: 10
1476
+ },
1477
+ mexc: {
1478
+ flow_transfer_types: [
1479
+ "IN",
1480
+ "OUT"
1481
+ ],
1482
+ max_transfers: 100,
1483
+ device_retry_seconds: 300,
1484
+ device_batches_per_read: 10
1485
+ },
1486
+ coinbase_intl: {
1487
+ flow_log_types: [
1488
+ "deposit",
1489
+ "withdrawal",
1490
+ "transfer",
1491
+ "swap"
1492
+ ],
1493
+ max_transfers: 1e3,
1494
+ device_retry_seconds: 300,
1495
+ device_batches_per_read: 10
1496
+ },
1497
+ kraken_futures: {
1498
+ flow_infos: [
1499
+ "deposit",
1500
+ "withdrawal",
1501
+ "transfer",
1502
+ "cross-exchange transfer",
1503
+ "cross-exchange transfer failed",
1504
+ "subaccount transfer",
1505
+ "admin transfer"
1506
+ ],
1507
+ flow_assets: [
1508
+ "USD",
1509
+ "USDC",
1510
+ "USDT"
1511
+ ],
1512
+ max_transfers: 1e3,
1513
+ device_retry_seconds: 300,
1514
+ device_batches_per_read: 10
1515
+ },
1516
+ aster: {
1517
+ flow_income_types: [
1518
+ "TRANSFER",
1519
+ "INTERNAL_TRANSFER",
1520
+ "CROSS_COLLATERAL_TRANSFER",
1521
+ "AUTO_EXCHANGE"
1522
+ ],
1523
+ funding_income_types: [
1524
+ "FUNDING_FEE"
1525
+ ],
1526
+ trade_income_types: [
1527
+ "REALIZED_PNL",
1528
+ "COMMISSION"
1529
+ ],
1530
+ max_transfers: 1e3,
1531
+ device_retry_seconds: 300,
1532
+ device_batches_per_read: 10
1533
+ },
1534
+ kucoin_futures: {
1535
+ flow_ledger_types: [
1536
+ "Deposit",
1537
+ "Withdrawal",
1538
+ "TransferIn",
1539
+ "TransferOut"
1540
+ ],
1541
+ max_transfers: 1e3,
1542
+ device_retry_seconds: 300,
1543
+ device_batches_per_read: 10
1544
+ },
1545
+ bybit: {
1546
+ flow_transaction_types: [
1547
+ "TRANSFER_IN",
1548
+ "TRANSFER_OUT",
1549
+ "BONUS_TRANSFER_IN",
1550
+ "BONUS_TRANSFER_OUT",
1551
+ "PEF_TRANSFER_IN",
1552
+ "PEF_TRANSFER_OUT",
1553
+ "FLEXIBLE_STAKING_SUBSCRIPTION",
1554
+ "FLEXIBLE_STAKING_REDEMPTION",
1555
+ "FLEXIBLE_STAKING_REFUND",
1556
+ "FIXED_STAKING_SUBSCRIPTION",
1557
+ "FIXED_STAKING_REFUND",
1558
+ "FIXED_SAVING_PRINCIPAL_REDEMPTION",
1559
+ "ONCHAINEARN_SUBSCRIPTION",
1560
+ "ONCHAINEARN_REDEMPTION",
1561
+ "ONCHAINEARN_REFUND",
1562
+ "STRUCTURE_PRODUCT_SUBSCRIPTION",
1563
+ "STRUCTURE_PRODUCT_REFUND",
1564
+ "CLASSIC_WEALTH_MANAGEMENT_SUBSCRIPTION",
1565
+ "PREMIMUM_WEALTH_MANAGEMENT_SUBSCRIPTION",
1566
+ "PREMIMUM_WEALTH_MANAGEMENT_REFUND",
1567
+ "LIQUIDITY_MINING_SUBSCRIPTION",
1568
+ "LIQUIDITY_MINING_REFUND",
1569
+ "PWM_SUBSCRIPTION",
1570
+ "PWM_REFUND",
1571
+ "BYUSDT_MINT",
1572
+ "BYUSDT_REDEMPTION",
1573
+ "STOCK_TRADE_BUY",
1574
+ "STOCK_TRADE_SELL",
1575
+ "STOCK_TRADE_REFUND"
1576
+ ],
1577
+ max_transfers: 50,
1578
+ device_retry_seconds: 300,
1579
+ device_batches_per_read: 10
1580
+ },
1581
+ bingx: {
1582
+ flow_income_types: [
1583
+ "TRANSFER"
1584
+ ],
1585
+ max_transfers: 1e3,
1586
+ device_retry_seconds: 300,
1587
+ device_batches_per_read: 10
1588
+ },
1094
1589
  max_page_size: 100
1095
1590
  },
1096
1591
  external_inference: {
@@ -1415,6 +1910,23 @@ var runtime_policy_generated_default = {
1415
1910
  background: 6
1416
1911
  },
1417
1912
  display_name: "Hyperliquid",
1913
+ short_code: "HYP",
1914
+ candle_timeframes: [
1915
+ "1m",
1916
+ "5m",
1917
+ "15m",
1918
+ "30m",
1919
+ "1h",
1920
+ "4h",
1921
+ "1d",
1922
+ "1w"
1923
+ ],
1924
+ client_surfaces: [
1925
+ "browser",
1926
+ "desktop",
1927
+ "android",
1928
+ "agent_token"
1929
+ ],
1418
1930
  account_stream_backoff: {
1419
1931
  initial_seconds: 1,
1420
1932
  max_seconds: 15,
@@ -1424,7 +1936,8 @@ var runtime_policy_generated_default = {
1424
1936
  },
1425
1937
  websocket: {
1426
1938
  ping_interval_seconds: 20,
1427
- account_open_timeout_seconds: 10
1939
+ account_open_timeout_seconds: 10,
1940
+ ticker_cache_ttl_seconds: 60
1428
1941
  },
1429
1942
  node: {
1430
1943
  max_info_lag_milliseconds: 1e3
@@ -1433,6 +1946,29 @@ var runtime_policy_generated_default = {
1433
1946
  default_dex_label: "Hyperliquid"
1434
1947
  }
1435
1948
  },
1949
+ fleet_recovery: {
1950
+ permit_lease_seconds: 8,
1951
+ recovery_initial_concurrency: 1,
1952
+ recovery_max_concurrency: 8,
1953
+ recovery_successes_per_step: 4,
1954
+ recovery_min_spacing_ms: 100,
1955
+ queue_poll_ms: 50,
1956
+ fallback_max_seconds: 300,
1957
+ fallback_jitter_min_factor: 0.5,
1958
+ recovery_quiet_seconds: 300,
1959
+ failed_probe_delay_seconds: 2,
1960
+ hit_claim_milliseconds: 2e3
1961
+ },
1962
+ account_rules: {
1963
+ usd_stable_assets: [
1964
+ "USD",
1965
+ "USDC",
1966
+ "USDT",
1967
+ "USDT0",
1968
+ "USDH",
1969
+ "USDe"
1970
+ ]
1971
+ },
1436
1972
  executor: {
1437
1973
  capabilities: [
1438
1974
  "market_orders",
@@ -1446,8 +1982,604 @@ var runtime_policy_generated_default = {
1446
1982
  "trailing_stops"
1447
1983
  ]
1448
1984
  },
1985
+ bound_accounts: {
1986
+ recheck_seconds: 900
1987
+ },
1988
+ observability: {
1989
+ operations: [
1990
+ "order",
1991
+ "cancel",
1992
+ "modify",
1993
+ "leverage",
1994
+ "close",
1995
+ "account_read",
1996
+ "positions_read",
1997
+ "orders_read",
1998
+ "fills_read",
1999
+ "market_read",
2000
+ "candles_read",
2001
+ "key_check",
2002
+ "stream"
2003
+ ],
2004
+ heartbeat_max_entries: 24,
2005
+ endpoint_max_length: 96,
2006
+ error_code_max_length: 32,
2007
+ error_name_max_length: 64,
2008
+ detail_max_entries: 8
2009
+ },
2010
+ lighter: {
2011
+ account_display_fresh_seconds: 120,
2012
+ display_name: "Lighter",
2013
+ key_name: "key",
2014
+ short_code: "LIG",
2015
+ candle_timeframes: [
2016
+ "1m",
2017
+ "5m",
2018
+ "15m",
2019
+ "30m",
2020
+ "1h",
2021
+ "4h",
2022
+ "1d"
2023
+ ],
2024
+ client_surfaces: [
2025
+ "browser",
2026
+ "desktop",
2027
+ "android",
2028
+ "agent_token"
2029
+ ],
2030
+ collateral_asset: "USDC",
2031
+ markets_cache_seconds: 3600,
2032
+ order_expiry_days: 28,
2033
+ order_renew_days_before_expiry: 7,
2034
+ remembered_order_ids: 5e3,
2035
+ ended_order_search_retry_seconds: 300,
2036
+ tx_readback_attempts: 10,
2037
+ tx_readback_interval_milliseconds: 300,
2038
+ auth_token_renew_margin_seconds: 300,
2039
+ fill_lookback_hours: 72,
2040
+ client_request_capacity: {
2041
+ reserve_margin_requests: 6,
2042
+ demand_bucket_seconds: 60,
2043
+ demand_horizon_seconds: 3600,
2044
+ capacity_cut_percent: 70,
2045
+ capacity_min_requests: 6,
2046
+ capacity_recovery_requests_per_minute: 6,
2047
+ rate_limit_pause_seconds: 60,
2048
+ admission_wait_seconds: 10,
2049
+ background_admission_wait_seconds: 90,
2050
+ fleet_reserve_weight: {
2051
+ trading_reduce: 1,
2052
+ trading_reconcile: 2,
2053
+ trading_execute: 3,
2054
+ trading_analysis: 5,
2055
+ ui: 15,
2056
+ background: 20
2057
+ }
2058
+ }
2059
+ },
2060
+ binance: {
2061
+ account_display_fresh_seconds: 30,
2062
+ display_name: "Binance",
2063
+ key_name: "API key",
2064
+ short_code: "BIN",
2065
+ candle_timeframes: [
2066
+ "1m",
2067
+ "5m",
2068
+ "15m",
2069
+ "30m",
2070
+ "1h",
2071
+ "4h",
2072
+ "1d",
2073
+ "1w"
2074
+ ],
2075
+ quote_asset: "USDT",
2076
+ markets_cache_seconds: 3600,
2077
+ recv_window_milliseconds: 5e3,
2078
+ fill_lookback_days: 7,
2079
+ client_request_capacity: {
2080
+ reserve_margin_weight: 100,
2081
+ demand_bucket_seconds: 60,
2082
+ demand_horizon_seconds: 3600,
2083
+ capacity_cut_percent: 70,
2084
+ capacity_min_weight: 480,
2085
+ capacity_recovery_weight_per_minute: 240,
2086
+ rate_limit_pause_seconds: 60,
2087
+ ip_ban_pause_seconds: 120,
2088
+ admission_wait_seconds: 10,
2089
+ background_admission_wait_seconds: 90,
2090
+ fleet_reserve_weight: {
2091
+ trading_reduce: 50,
2092
+ trading_reconcile: 75,
2093
+ trading_execute: 100,
2094
+ trading_analysis: 200,
2095
+ ui: 600,
2096
+ background: 800
2097
+ }
2098
+ },
2099
+ networks: {
2100
+ live: {
2101
+ client_surfaces: [
2102
+ "browser",
2103
+ "desktop",
2104
+ "android",
2105
+ "agent_token"
2106
+ ]
2107
+ },
2108
+ testnet: {
2109
+ client_surfaces: [
2110
+ "desktop",
2111
+ "android",
2112
+ "agent_token"
2113
+ ]
2114
+ }
2115
+ }
2116
+ },
2117
+ mexc: {
2118
+ account_display_fresh_seconds: 30,
2119
+ display_name: "MEXC",
2120
+ key_name: "API key",
2121
+ short_code: "MEX",
2122
+ candle_timeframes: [
2123
+ "1m",
2124
+ "5m",
2125
+ "15m",
2126
+ "30m",
2127
+ "1h",
2128
+ "4h",
2129
+ "1d",
2130
+ "1w"
2131
+ ],
2132
+ quote_asset: "USDT",
2133
+ markets_cache_seconds: 3600,
2134
+ recv_window_seconds: 10,
2135
+ fill_lookback_days: 7,
2136
+ client_surfaces: [
2137
+ "desktop",
2138
+ "android",
2139
+ "agent_token"
2140
+ ],
2141
+ remembered_order_ids: 5e3,
2142
+ ended_order_search_days: 7,
2143
+ ended_order_search_retry_seconds: 300,
2144
+ client_request_capacity: {
2145
+ reserve_margin_weight: 1,
2146
+ demand_bucket_seconds: 60,
2147
+ demand_horizon_seconds: 3600,
2148
+ capacity_cut_percent: 70,
2149
+ capacity_min_weight: 2,
2150
+ capacity_recovery_weight_per_minute: 20,
2151
+ admission_wait_seconds: 10,
2152
+ background_admission_wait_seconds: 30,
2153
+ fleet_reserve_weight: {
2154
+ trading_reduce: 1,
2155
+ trading_reconcile: 1,
2156
+ trading_execute: 1,
2157
+ trading_analysis: 2,
2158
+ ui: 3,
2159
+ background: 4
2160
+ }
2161
+ }
2162
+ },
2163
+ coinbase_intl: {
2164
+ client_request_capacity: {
2165
+ reserve_margin_requests: 2,
2166
+ demand_bucket_seconds: 60,
2167
+ demand_horizon_seconds: 3600,
2168
+ capacity_cut_percent: 70,
2169
+ capacity_min_requests: 2,
2170
+ capacity_recovery_requests_per_minute: 2,
2171
+ admission_wait_seconds: 10,
2172
+ background_admission_wait_seconds: 90,
2173
+ rate_limit_pause_seconds: 5,
2174
+ fleet_reserve_weight: {
2175
+ trading_reduce: 1,
2176
+ trading_reconcile: 1,
2177
+ trading_execute: 2,
2178
+ trading_analysis: 2,
2179
+ ui: 5,
2180
+ background: 6
2181
+ }
2182
+ },
2183
+ account_display_fresh_seconds: 30,
2184
+ quote_asset: "USDC",
2185
+ display_name: "Coinbase International",
2186
+ key_name: "API key name",
2187
+ short_code: "CBI",
2188
+ candle_timeframes: [
2189
+ "1m",
2190
+ "5m",
2191
+ "15m",
2192
+ "30m",
2193
+ "1h",
2194
+ "1d"
2195
+ ],
2196
+ client_surfaces: [
2197
+ "desktop",
2198
+ "android",
2199
+ "agent_token"
2200
+ ],
2201
+ request_timeout_seconds: 10,
2202
+ auth_renew_before_seconds: 60,
2203
+ auth_max_age_seconds: 900,
2204
+ write_window_seconds: 10,
2205
+ server_time_max_age_seconds: 300,
2206
+ markets_cache_seconds: 3600,
2207
+ fill_lookback_days: 7,
2208
+ fill_page_size: 1e3,
2209
+ remembered_order_ids: 5e3,
2210
+ ended_order_search_days: 7,
2211
+ ended_order_search_retry_seconds: 300
2212
+ },
2213
+ okx: {
2214
+ account_display_fresh_seconds: 30,
2215
+ display_name: "OKX",
2216
+ key_name: "API key",
2217
+ short_code: "OKX",
2218
+ candle_timeframes: [
2219
+ "1m",
2220
+ "5m",
2221
+ "15m",
2222
+ "30m",
2223
+ "1h",
2224
+ "4h",
2225
+ "1d",
2226
+ "1w"
2227
+ ],
2228
+ settle_currency: "USDT",
2229
+ markets_cache_seconds: 3600,
2230
+ markets_miss_reread_seconds: 60,
2231
+ order_lifetime_milliseconds: 5e3,
2232
+ order_readback_attempts: 5,
2233
+ order_readback_interval_milliseconds: 200,
2234
+ remembered_order_ids: 5e3,
2235
+ ended_order_search_days: 7,
2236
+ ended_order_search_retry_seconds: 300,
2237
+ fill_lookback_hours: 71,
2238
+ client_request_capacity: {
2239
+ fleet_reserve_weight: {
2240
+ trading_reduce: 1,
2241
+ trading_reconcile: 1,
2242
+ trading_execute: 1,
2243
+ trading_analysis: 2,
2244
+ ui: 3,
2245
+ background: 5
2246
+ },
2247
+ reserve_margin_requests: 1,
2248
+ demand_bucket_seconds: 60,
2249
+ demand_horizon_seconds: 3600,
2250
+ capacity_cut_percent: 70,
2251
+ capacity_min_requests: 2,
2252
+ capacity_recovery_requests_per_minute: 2,
2253
+ admission_wait_seconds: 10,
2254
+ background_admission_wait_seconds: 90
2255
+ },
2256
+ networks: {
2257
+ live: {
2258
+ client_surfaces: [
2259
+ "browser",
2260
+ "desktop",
2261
+ "android",
2262
+ "agent_token"
2263
+ ]
2264
+ },
2265
+ demo: {
2266
+ client_surfaces: [
2267
+ "browser",
2268
+ "desktop",
2269
+ "android",
2270
+ "agent_token"
2271
+ ]
2272
+ }
2273
+ }
2274
+ },
2275
+ bingx: {
2276
+ account_display_fresh_seconds: 30,
2277
+ display_name: "BingX",
2278
+ key_name: "API key",
2279
+ short_code: "BGX",
2280
+ candle_timeframes: [
2281
+ "1m",
2282
+ "5m",
2283
+ "15m",
2284
+ "30m",
2285
+ "1h",
2286
+ "4h",
2287
+ "1d",
2288
+ "1w"
2289
+ ],
2290
+ quote_asset: "USDT",
2291
+ markets_cache_seconds: 3600,
2292
+ recv_window_milliseconds: 5e3,
2293
+ fill_lookback_days: 7,
2294
+ client_request_capacity: {
2295
+ reserve_margin_requests: 50,
2296
+ demand_bucket_seconds: 60,
2297
+ demand_horizon_seconds: 3600,
2298
+ capacity_cut_percent: 70,
2299
+ capacity_min_requests: 100,
2300
+ capacity_recovery_requests_per_minute: 50,
2301
+ rate_limit_pause_seconds: 10,
2302
+ ip_ban_pause_seconds: 120,
2303
+ admission_wait_seconds: 10,
2304
+ background_admission_wait_seconds: 90,
2305
+ fleet_reserve_weight: {
2306
+ trading_reduce: 10,
2307
+ trading_reconcile: 15,
2308
+ trading_execute: 20,
2309
+ trading_analysis: 40,
2310
+ ui: 100,
2311
+ background: 125
2312
+ }
2313
+ },
2314
+ networks: {
2315
+ live: {
2316
+ client_surfaces: [
2317
+ "desktop",
2318
+ "android",
2319
+ "agent_token"
2320
+ ]
2321
+ },
2322
+ vst: {
2323
+ client_surfaces: [
2324
+ "desktop",
2325
+ "android",
2326
+ "agent_token"
2327
+ ]
2328
+ }
2329
+ }
2330
+ },
2331
+ bitget: {
2332
+ account_display_fresh_seconds: 30,
2333
+ display_name: "Bitget",
2334
+ key_name: "API key",
2335
+ short_code: "BIT",
2336
+ candle_timeframes: [
2337
+ "1m",
2338
+ "5m",
2339
+ "15m",
2340
+ "30m",
2341
+ "1h",
2342
+ "4h",
2343
+ "1d",
2344
+ "1w"
2345
+ ],
2346
+ product_type: "USDT-FUTURES",
2347
+ quote_asset: "USDT",
2348
+ markets_cache_seconds: 3600,
2349
+ fill_lookback_days: 7,
2350
+ remembered_order_ids: 5e3,
2351
+ ended_order_search_days: 7,
2352
+ ended_order_search_retry_seconds: 300,
2353
+ old_open_order_search_seconds: 3600,
2354
+ client_request_capacity: {
2355
+ reserve_margin_weight: 2,
2356
+ demand_bucket_seconds: 60,
2357
+ demand_horizon_seconds: 3600,
2358
+ capacity_cut_percent: 70,
2359
+ capacity_min_weight: 4,
2360
+ capacity_recovery_weight_per_minute: 60,
2361
+ admission_wait_seconds: 10,
2362
+ background_admission_wait_seconds: 90,
2363
+ fleet_reserve_weight: {
2364
+ trading_reduce: 1,
2365
+ trading_reconcile: 1,
2366
+ trading_execute: 2,
2367
+ trading_analysis: 2,
2368
+ ui: 5,
2369
+ background: 6
2370
+ }
2371
+ },
2372
+ networks: {
2373
+ live: {
2374
+ client_surfaces: [
2375
+ "desktop",
2376
+ "android",
2377
+ "agent_token"
2378
+ ]
2379
+ },
2380
+ demo: {
2381
+ client_surfaces: [
2382
+ "desktop",
2383
+ "android",
2384
+ "agent_token"
2385
+ ]
2386
+ }
2387
+ }
2388
+ },
2389
+ kraken_futures: {
2390
+ account_display_fresh_seconds: 30,
2391
+ display_name: "Kraken Futures",
2392
+ key_name: "API key",
2393
+ short_code: "KRA",
2394
+ candle_timeframes: [
2395
+ "1m",
2396
+ "5m",
2397
+ "15m",
2398
+ "30m",
2399
+ "1h",
2400
+ "4h",
2401
+ "1d",
2402
+ "1w"
2403
+ ],
2404
+ client_surfaces: [
2405
+ "desktop",
2406
+ "android",
2407
+ "agent_token"
2408
+ ],
2409
+ markets_cache_seconds: 3600,
2410
+ fill_lookback_days: 7,
2411
+ history_pages_per_read: 10,
2412
+ funding_log_page_entries: 1e3,
2413
+ request_capacity: {
2414
+ reserve_margin_weight: 100,
2415
+ demand_bucket_seconds: 60,
2416
+ demand_horizon_seconds: 3600,
2417
+ capacity_cut_percent: 70,
2418
+ capacity_min_weight: 100,
2419
+ capacity_recovery_weight_per_minute: 50,
2420
+ derivatives_limit_pause_seconds: 10,
2421
+ history_limit_pause_seconds: 60,
2422
+ admission_wait_seconds: 5,
2423
+ background_admission_wait_seconds: 30
2424
+ }
2425
+ },
2426
+ aster: {
2427
+ account_display_fresh_seconds: 30,
2428
+ quote_asset: "USDT",
2429
+ display_name: "Aster",
2430
+ key_name: "API wallet",
2431
+ short_code: "AST",
2432
+ candle_timeframes: [
2433
+ "1m",
2434
+ "5m",
2435
+ "15m",
2436
+ "30m",
2437
+ "1h",
2438
+ "4h",
2439
+ "1d",
2440
+ "1w"
2441
+ ],
2442
+ client_surfaces: [
2443
+ "browser",
2444
+ "desktop",
2445
+ "android",
2446
+ "agent_token"
2447
+ ],
2448
+ markets_cache_seconds: 3600,
2449
+ fill_lookback_days: 7,
2450
+ client_request_capacity: {
2451
+ reserve_margin_weight: 100,
2452
+ demand_bucket_seconds: 60,
2453
+ demand_horizon_seconds: 3600,
2454
+ capacity_cut_percent: 70,
2455
+ capacity_min_weight: 480,
2456
+ capacity_recovery_weight_per_minute: 240,
2457
+ rate_limit_pause_seconds: 60,
2458
+ ip_ban_pause_seconds: 120,
2459
+ admission_wait_seconds: 10,
2460
+ background_admission_wait_seconds: 90,
2461
+ fleet_reserve_weight: {
2462
+ trading_reduce: 50,
2463
+ trading_reconcile: 75,
2464
+ trading_execute: 100,
2465
+ trading_analysis: 200,
2466
+ ui: 600,
2467
+ background: 800
2468
+ }
2469
+ }
2470
+ },
2471
+ kucoin_futures: {
2472
+ account_display_fresh_seconds: 30,
2473
+ display_name: "KuCoin Futures",
2474
+ key_name: "API key",
2475
+ short_code: "KUC",
2476
+ candle_timeframes: [
2477
+ "1m",
2478
+ "5m",
2479
+ "15m",
2480
+ "30m",
2481
+ "1h",
2482
+ "4h",
2483
+ "1d",
2484
+ "1w"
2485
+ ],
2486
+ client_surfaces: [
2487
+ "desktop",
2488
+ "android",
2489
+ "agent_token"
2490
+ ],
2491
+ settle_currency: "USDT",
2492
+ markets_cache_seconds: 3600,
2493
+ remembered_order_ids: 5e3,
2494
+ ended_order_search_days: 7,
2495
+ ended_order_search_retry_seconds: 300,
2496
+ client_request_capacity: {
2497
+ reserve_margin_weight: 100,
2498
+ demand_bucket_seconds: 60,
2499
+ demand_horizon_seconds: 3600,
2500
+ capacity_cut_percent: 70,
2501
+ capacity_min_weight: 200,
2502
+ capacity_recovery_weight_per_minute: 100,
2503
+ admission_wait_seconds: 10,
2504
+ background_admission_wait_seconds: 60,
2505
+ fleet_reserve_weight: {
2506
+ trading_reduce: 50,
2507
+ trading_reconcile: 75,
2508
+ trading_execute: 100,
2509
+ trading_analysis: 200,
2510
+ ui: 500,
2511
+ background: 700
2512
+ }
2513
+ }
2514
+ },
2515
+ bybit: {
2516
+ client_request_capacity: {
2517
+ reserve_margin_weight: 60,
2518
+ demand_bucket_seconds: 60,
2519
+ demand_horizon_seconds: 3600,
2520
+ capacity_cut_percent: 70,
2521
+ capacity_min_weight: 60,
2522
+ capacity_recovery_weight_per_minute: 60,
2523
+ admission_wait_seconds: 10,
2524
+ background_admission_wait_seconds: 60,
2525
+ fleet_reserve_weight: {
2526
+ trading_reduce: 15,
2527
+ trading_reconcile: 20,
2528
+ trading_execute: 25,
2529
+ trading_analysis: 50,
2530
+ ui: 150,
2531
+ background: 200
2532
+ }
2533
+ },
2534
+ display_name: "Bybit",
2535
+ key_name: "API key",
2536
+ short_code: "BYB",
2537
+ candle_timeframes: [
2538
+ "1m",
2539
+ "5m",
2540
+ "15m",
2541
+ "30m",
2542
+ "1h",
2543
+ "4h",
2544
+ "1d",
2545
+ "1w"
2546
+ ],
2547
+ client_surfaces: [
2548
+ "browser",
2549
+ "desktop",
2550
+ "android",
2551
+ "agent_token"
2552
+ ],
2553
+ settle_coin: "USDT",
2554
+ account_display_fresh_seconds: 30,
2555
+ markets_cache_seconds: 3600,
2556
+ recv_window_milliseconds: 5e3,
2557
+ order_readback_attempts: 5,
2558
+ order_readback_interval_milliseconds: 200,
2559
+ remembered_order_ids: 5e3,
2560
+ ended_order_search_days: 7,
2561
+ ended_order_search_retry_seconds: 300,
2562
+ fill_lookback_hours: 167
2563
+ },
1449
2564
  mt5: {
1450
2565
  display_name: "MetaTrader 5",
2566
+ short_code: "MT5",
2567
+ candle_timeframes: [
2568
+ "1m",
2569
+ "5m",
2570
+ "15m",
2571
+ "30m",
2572
+ "1h",
2573
+ "4h",
2574
+ "1d",
2575
+ "1w"
2576
+ ],
2577
+ client_surfaces: [
2578
+ "browser",
2579
+ "desktop",
2580
+ "android",
2581
+ "agent_token"
2582
+ ],
1451
2583
  bridge_download_path: "/downloads/mt5/VtxBridge.ex5",
1452
2584
  trading_enabled: true,
1453
2585
  status_poll_seconds: 5,
@@ -1456,8 +2588,7 @@ var runtime_policy_generated_default = {
1456
2588
  request_timeout_seconds: 15,
1457
2589
  write_expires_after_seconds: 60,
1458
2590
  deal_lookback_days: 7,
1459
- deal_clock_allowance_seconds: 60,
1460
- stop_distance_margin: 0.5
2591
+ deal_clock_allowance_seconds: 60
1461
2592
  },
1462
2593
  cache: {
1463
2594
  available_assets_ttl_seconds: 300,
@@ -1472,6 +2603,12 @@ var runtime_policy_generated_default = {
1472
2603
  range_page_limit: 500
1473
2604
  }
1474
2605
  },
2606
+ observability: {
2607
+ hyperliquid_rollup: {
2608
+ enabled: true,
2609
+ exchange_latency_samples_per_minute: 200
2610
+ }
2611
+ },
1475
2612
  external_news: {
1476
2613
  benzinga: {
1477
2614
  enabled: false