@vtxmacro/cli 2026.10.76 → 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.
@@ -36,6 +36,11 @@ var runtime_policy_generated_default = {
36
36
  account_read_backoff_exponent_max: 30,
37
37
  ai_start_grace_min_ms: 45e3
38
38
  },
39
+ server_read_recovery: {
40
+ retry_delay_ms: 1500,
41
+ max_attempts: 3,
42
+ attempts_window_ms: 6e4
43
+ },
39
44
  deployment_reload_observability: {
40
45
  bootstrap_max_error_events_per_page: 4,
41
46
  bootstrap_max_profiles: 10
@@ -355,6 +360,7 @@ var runtime_policy_generated_default = {
355
360
  display_batch_size: 50,
356
361
  load_more_threshold_px: 100,
357
362
  trade_history_fetch_page_size: 100,
363
+ exchange_key_read_days: 6,
358
364
  ai_panel_interaction_window_ms: 2500,
359
365
  ai_panel_defer_max_staleness_ms: 1e4,
360
366
  ai_panel_defer_retry_ms: 1500,
@@ -800,6 +806,7 @@ var runtime_policy_generated_default = {
800
806
  device_rounds_per_sweep: 4
801
807
  },
802
808
  panel_reads: {
809
+ exchange_key_refresh_seconds: 15,
803
810
  device_open_orders_reuse_seconds: 2,
804
811
  all_view_profile_concurrency: 2,
805
812
  display_account_fresh_seconds: 60
@@ -911,6 +918,11 @@ var runtime_policy_generated_default = {
911
918
  },
912
919
  defaults: {
913
920
  server_ai_max_slippage: 5
921
+ },
922
+ server_runtime_host: {
923
+ server_executors: {
924
+ idle_seconds: 3600
925
+ }
914
926
  }
915
927
  },
916
928
  agent_cli: {
@@ -942,6 +954,181 @@ var runtime_policy_generated_default = {
942
954
  device_portfolio: {
943
955
  device_retry_seconds: 300
944
956
  },
957
+ lighter: {
958
+ flow_kinds: [
959
+ "deposit",
960
+ "withdraw",
961
+ "L2TransferInflow",
962
+ "L2TransferOutflow",
963
+ "L2SelfTransfer",
964
+ "L2MintSharesOutflow",
965
+ "L2BurnSharesInflow",
966
+ "L2ForceBurnSharesInflow",
967
+ "L1BurnSharesInflow",
968
+ "L2CreatePublicPoolOutflow"
969
+ ],
970
+ max_transfers: 100,
971
+ device_retry_seconds: 300,
972
+ device_batches_per_read: 10
973
+ },
974
+ okx: {
975
+ flow_bill_types: [
976
+ "1"
977
+ ],
978
+ max_transfers: 100,
979
+ device_retry_seconds: 300,
980
+ device_batches_per_read: 10
981
+ },
982
+ binance: {
983
+ flow_income_types: [
984
+ "TRANSFER",
985
+ "INTERNAL_TRANSFER",
986
+ "STRATEGY_UMFUTURES_TRANSFER",
987
+ "CROSS_COLLATERAL_TRANSFER",
988
+ "COIN_SWAP_DEPOSIT",
989
+ "COIN_SWAP_WITHDRAW",
990
+ "AUTO_EXCHANGE"
991
+ ],
992
+ funding_income_types: [
993
+ "FUNDING_FEE"
994
+ ],
995
+ trade_income_types: [
996
+ "REALIZED_PNL",
997
+ "COMMISSION"
998
+ ],
999
+ max_transfers: 1e3,
1000
+ device_retry_seconds: 300,
1001
+ device_batches_per_read: 10
1002
+ },
1003
+ bitget: {
1004
+ flow_business_types: [
1005
+ "trans_from_exchange",
1006
+ "trans_to_exchange",
1007
+ "trans_from_contract",
1008
+ "trans_to_contract",
1009
+ "trans_from_otc",
1010
+ "trans_to_otc",
1011
+ "trans_from_cross",
1012
+ "trans_to_cross",
1013
+ "trans_from_isolated",
1014
+ "trans_to_isolated"
1015
+ ],
1016
+ max_transfers: 1e3,
1017
+ device_retry_seconds: 300,
1018
+ device_batches_per_read: 10
1019
+ },
1020
+ mexc: {
1021
+ flow_transfer_types: [
1022
+ "IN",
1023
+ "OUT"
1024
+ ],
1025
+ max_transfers: 100,
1026
+ device_retry_seconds: 300,
1027
+ device_batches_per_read: 10
1028
+ },
1029
+ coinbase_intl: {
1030
+ flow_log_types: [
1031
+ "deposit",
1032
+ "withdrawal",
1033
+ "transfer",
1034
+ "swap"
1035
+ ],
1036
+ max_transfers: 1e3,
1037
+ device_retry_seconds: 300,
1038
+ device_batches_per_read: 10
1039
+ },
1040
+ kraken_futures: {
1041
+ flow_infos: [
1042
+ "deposit",
1043
+ "withdrawal",
1044
+ "transfer",
1045
+ "cross-exchange transfer",
1046
+ "cross-exchange transfer failed",
1047
+ "subaccount transfer",
1048
+ "admin transfer"
1049
+ ],
1050
+ flow_assets: [
1051
+ "USD",
1052
+ "USDC",
1053
+ "USDT"
1054
+ ],
1055
+ max_transfers: 1e3,
1056
+ device_retry_seconds: 300,
1057
+ device_batches_per_read: 10
1058
+ },
1059
+ aster: {
1060
+ flow_income_types: [
1061
+ "TRANSFER",
1062
+ "INTERNAL_TRANSFER",
1063
+ "CROSS_COLLATERAL_TRANSFER",
1064
+ "AUTO_EXCHANGE"
1065
+ ],
1066
+ funding_income_types: [
1067
+ "FUNDING_FEE"
1068
+ ],
1069
+ trade_income_types: [
1070
+ "REALIZED_PNL",
1071
+ "COMMISSION"
1072
+ ],
1073
+ max_transfers: 1e3,
1074
+ device_retry_seconds: 300,
1075
+ device_batches_per_read: 10
1076
+ },
1077
+ kucoin_futures: {
1078
+ flow_ledger_types: [
1079
+ "Deposit",
1080
+ "Withdrawal",
1081
+ "TransferIn",
1082
+ "TransferOut"
1083
+ ],
1084
+ max_transfers: 1e3,
1085
+ device_retry_seconds: 300,
1086
+ device_batches_per_read: 10
1087
+ },
1088
+ bybit: {
1089
+ flow_transaction_types: [
1090
+ "TRANSFER_IN",
1091
+ "TRANSFER_OUT",
1092
+ "BONUS_TRANSFER_IN",
1093
+ "BONUS_TRANSFER_OUT",
1094
+ "PEF_TRANSFER_IN",
1095
+ "PEF_TRANSFER_OUT",
1096
+ "FLEXIBLE_STAKING_SUBSCRIPTION",
1097
+ "FLEXIBLE_STAKING_REDEMPTION",
1098
+ "FLEXIBLE_STAKING_REFUND",
1099
+ "FIXED_STAKING_SUBSCRIPTION",
1100
+ "FIXED_STAKING_REFUND",
1101
+ "FIXED_SAVING_PRINCIPAL_REDEMPTION",
1102
+ "ONCHAINEARN_SUBSCRIPTION",
1103
+ "ONCHAINEARN_REDEMPTION",
1104
+ "ONCHAINEARN_REFUND",
1105
+ "STRUCTURE_PRODUCT_SUBSCRIPTION",
1106
+ "STRUCTURE_PRODUCT_REFUND",
1107
+ "CLASSIC_WEALTH_MANAGEMENT_SUBSCRIPTION",
1108
+ "PREMIMUM_WEALTH_MANAGEMENT_SUBSCRIPTION",
1109
+ "PREMIMUM_WEALTH_MANAGEMENT_REFUND",
1110
+ "LIQUIDITY_MINING_SUBSCRIPTION",
1111
+ "LIQUIDITY_MINING_REFUND",
1112
+ "PWM_SUBSCRIPTION",
1113
+ "PWM_REFUND",
1114
+ "BYUSDT_MINT",
1115
+ "BYUSDT_REDEMPTION",
1116
+ "STOCK_TRADE_BUY",
1117
+ "STOCK_TRADE_SELL",
1118
+ "STOCK_TRADE_REFUND"
1119
+ ],
1120
+ max_transfers: 50,
1121
+ device_retry_seconds: 300,
1122
+ device_batches_per_read: 10
1123
+ },
1124
+ bingx: {
1125
+ flow_income_types: [
1126
+ "TRANSFER"
1127
+ ],
1128
+ max_transfers: 1e3,
1129
+ device_retry_seconds: 300,
1130
+ device_batches_per_read: 10
1131
+ },
945
1132
  max_page_size: 100
946
1133
  },
947
1134
  external_inference: {
@@ -1266,6 +1453,23 @@ var runtime_policy_generated_default = {
1266
1453
  background: 6
1267
1454
  },
1268
1455
  display_name: "Hyperliquid",
1456
+ short_code: "HYP",
1457
+ candle_timeframes: [
1458
+ "1m",
1459
+ "5m",
1460
+ "15m",
1461
+ "30m",
1462
+ "1h",
1463
+ "4h",
1464
+ "1d",
1465
+ "1w"
1466
+ ],
1467
+ client_surfaces: [
1468
+ "browser",
1469
+ "desktop",
1470
+ "android",
1471
+ "agent_token"
1472
+ ],
1269
1473
  account_stream_backoff: {
1270
1474
  initial_seconds: 1,
1271
1475
  max_seconds: 15,
@@ -1275,7 +1479,8 @@ var runtime_policy_generated_default = {
1275
1479
  },
1276
1480
  websocket: {
1277
1481
  ping_interval_seconds: 20,
1278
- account_open_timeout_seconds: 10
1482
+ account_open_timeout_seconds: 10,
1483
+ ticker_cache_ttl_seconds: 60
1279
1484
  },
1280
1485
  node: {
1281
1486
  max_info_lag_milliseconds: 1e3
@@ -1284,6 +1489,29 @@ var runtime_policy_generated_default = {
1284
1489
  default_dex_label: "Hyperliquid"
1285
1490
  }
1286
1491
  },
1492
+ fleet_recovery: {
1493
+ permit_lease_seconds: 8,
1494
+ recovery_initial_concurrency: 1,
1495
+ recovery_max_concurrency: 8,
1496
+ recovery_successes_per_step: 4,
1497
+ recovery_min_spacing_ms: 100,
1498
+ queue_poll_ms: 50,
1499
+ fallback_max_seconds: 300,
1500
+ fallback_jitter_min_factor: 0.5,
1501
+ recovery_quiet_seconds: 300,
1502
+ failed_probe_delay_seconds: 2,
1503
+ hit_claim_milliseconds: 2e3
1504
+ },
1505
+ account_rules: {
1506
+ usd_stable_assets: [
1507
+ "USD",
1508
+ "USDC",
1509
+ "USDT",
1510
+ "USDT0",
1511
+ "USDH",
1512
+ "USDe"
1513
+ ]
1514
+ },
1287
1515
  executor: {
1288
1516
  capabilities: [
1289
1517
  "market_orders",
@@ -1297,8 +1525,604 @@ var runtime_policy_generated_default = {
1297
1525
  "trailing_stops"
1298
1526
  ]
1299
1527
  },
1528
+ bound_accounts: {
1529
+ recheck_seconds: 900
1530
+ },
1531
+ observability: {
1532
+ operations: [
1533
+ "order",
1534
+ "cancel",
1535
+ "modify",
1536
+ "leverage",
1537
+ "close",
1538
+ "account_read",
1539
+ "positions_read",
1540
+ "orders_read",
1541
+ "fills_read",
1542
+ "market_read",
1543
+ "candles_read",
1544
+ "key_check",
1545
+ "stream"
1546
+ ],
1547
+ heartbeat_max_entries: 24,
1548
+ endpoint_max_length: 96,
1549
+ error_code_max_length: 32,
1550
+ error_name_max_length: 64,
1551
+ detail_max_entries: 8
1552
+ },
1553
+ lighter: {
1554
+ account_display_fresh_seconds: 120,
1555
+ display_name: "Lighter",
1556
+ key_name: "key",
1557
+ short_code: "LIG",
1558
+ candle_timeframes: [
1559
+ "1m",
1560
+ "5m",
1561
+ "15m",
1562
+ "30m",
1563
+ "1h",
1564
+ "4h",
1565
+ "1d"
1566
+ ],
1567
+ client_surfaces: [
1568
+ "browser",
1569
+ "desktop",
1570
+ "android",
1571
+ "agent_token"
1572
+ ],
1573
+ collateral_asset: "USDC",
1574
+ markets_cache_seconds: 3600,
1575
+ order_expiry_days: 28,
1576
+ order_renew_days_before_expiry: 7,
1577
+ remembered_order_ids: 5e3,
1578
+ ended_order_search_retry_seconds: 300,
1579
+ tx_readback_attempts: 10,
1580
+ tx_readback_interval_milliseconds: 300,
1581
+ auth_token_renew_margin_seconds: 300,
1582
+ fill_lookback_hours: 72,
1583
+ client_request_capacity: {
1584
+ reserve_margin_requests: 6,
1585
+ demand_bucket_seconds: 60,
1586
+ demand_horizon_seconds: 3600,
1587
+ capacity_cut_percent: 70,
1588
+ capacity_min_requests: 6,
1589
+ capacity_recovery_requests_per_minute: 6,
1590
+ rate_limit_pause_seconds: 60,
1591
+ admission_wait_seconds: 10,
1592
+ background_admission_wait_seconds: 90,
1593
+ fleet_reserve_weight: {
1594
+ trading_reduce: 1,
1595
+ trading_reconcile: 2,
1596
+ trading_execute: 3,
1597
+ trading_analysis: 5,
1598
+ ui: 15,
1599
+ background: 20
1600
+ }
1601
+ }
1602
+ },
1603
+ binance: {
1604
+ account_display_fresh_seconds: 30,
1605
+ display_name: "Binance",
1606
+ key_name: "API key",
1607
+ short_code: "BIN",
1608
+ candle_timeframes: [
1609
+ "1m",
1610
+ "5m",
1611
+ "15m",
1612
+ "30m",
1613
+ "1h",
1614
+ "4h",
1615
+ "1d",
1616
+ "1w"
1617
+ ],
1618
+ quote_asset: "USDT",
1619
+ markets_cache_seconds: 3600,
1620
+ recv_window_milliseconds: 5e3,
1621
+ fill_lookback_days: 7,
1622
+ client_request_capacity: {
1623
+ reserve_margin_weight: 100,
1624
+ demand_bucket_seconds: 60,
1625
+ demand_horizon_seconds: 3600,
1626
+ capacity_cut_percent: 70,
1627
+ capacity_min_weight: 480,
1628
+ capacity_recovery_weight_per_minute: 240,
1629
+ rate_limit_pause_seconds: 60,
1630
+ ip_ban_pause_seconds: 120,
1631
+ admission_wait_seconds: 10,
1632
+ background_admission_wait_seconds: 90,
1633
+ fleet_reserve_weight: {
1634
+ trading_reduce: 50,
1635
+ trading_reconcile: 75,
1636
+ trading_execute: 100,
1637
+ trading_analysis: 200,
1638
+ ui: 600,
1639
+ background: 800
1640
+ }
1641
+ },
1642
+ networks: {
1643
+ live: {
1644
+ client_surfaces: [
1645
+ "browser",
1646
+ "desktop",
1647
+ "android",
1648
+ "agent_token"
1649
+ ]
1650
+ },
1651
+ testnet: {
1652
+ client_surfaces: [
1653
+ "desktop",
1654
+ "android",
1655
+ "agent_token"
1656
+ ]
1657
+ }
1658
+ }
1659
+ },
1660
+ mexc: {
1661
+ account_display_fresh_seconds: 30,
1662
+ display_name: "MEXC",
1663
+ key_name: "API key",
1664
+ short_code: "MEX",
1665
+ candle_timeframes: [
1666
+ "1m",
1667
+ "5m",
1668
+ "15m",
1669
+ "30m",
1670
+ "1h",
1671
+ "4h",
1672
+ "1d",
1673
+ "1w"
1674
+ ],
1675
+ quote_asset: "USDT",
1676
+ markets_cache_seconds: 3600,
1677
+ recv_window_seconds: 10,
1678
+ fill_lookback_days: 7,
1679
+ client_surfaces: [
1680
+ "desktop",
1681
+ "android",
1682
+ "agent_token"
1683
+ ],
1684
+ remembered_order_ids: 5e3,
1685
+ ended_order_search_days: 7,
1686
+ ended_order_search_retry_seconds: 300,
1687
+ client_request_capacity: {
1688
+ reserve_margin_weight: 1,
1689
+ demand_bucket_seconds: 60,
1690
+ demand_horizon_seconds: 3600,
1691
+ capacity_cut_percent: 70,
1692
+ capacity_min_weight: 2,
1693
+ capacity_recovery_weight_per_minute: 20,
1694
+ admission_wait_seconds: 10,
1695
+ background_admission_wait_seconds: 30,
1696
+ fleet_reserve_weight: {
1697
+ trading_reduce: 1,
1698
+ trading_reconcile: 1,
1699
+ trading_execute: 1,
1700
+ trading_analysis: 2,
1701
+ ui: 3,
1702
+ background: 4
1703
+ }
1704
+ }
1705
+ },
1706
+ coinbase_intl: {
1707
+ client_request_capacity: {
1708
+ reserve_margin_requests: 2,
1709
+ demand_bucket_seconds: 60,
1710
+ demand_horizon_seconds: 3600,
1711
+ capacity_cut_percent: 70,
1712
+ capacity_min_requests: 2,
1713
+ capacity_recovery_requests_per_minute: 2,
1714
+ admission_wait_seconds: 10,
1715
+ background_admission_wait_seconds: 90,
1716
+ rate_limit_pause_seconds: 5,
1717
+ fleet_reserve_weight: {
1718
+ trading_reduce: 1,
1719
+ trading_reconcile: 1,
1720
+ trading_execute: 2,
1721
+ trading_analysis: 2,
1722
+ ui: 5,
1723
+ background: 6
1724
+ }
1725
+ },
1726
+ account_display_fresh_seconds: 30,
1727
+ quote_asset: "USDC",
1728
+ display_name: "Coinbase International",
1729
+ key_name: "API key name",
1730
+ short_code: "CBI",
1731
+ candle_timeframes: [
1732
+ "1m",
1733
+ "5m",
1734
+ "15m",
1735
+ "30m",
1736
+ "1h",
1737
+ "1d"
1738
+ ],
1739
+ client_surfaces: [
1740
+ "desktop",
1741
+ "android",
1742
+ "agent_token"
1743
+ ],
1744
+ request_timeout_seconds: 10,
1745
+ auth_renew_before_seconds: 60,
1746
+ auth_max_age_seconds: 900,
1747
+ write_window_seconds: 10,
1748
+ server_time_max_age_seconds: 300,
1749
+ markets_cache_seconds: 3600,
1750
+ fill_lookback_days: 7,
1751
+ fill_page_size: 1e3,
1752
+ remembered_order_ids: 5e3,
1753
+ ended_order_search_days: 7,
1754
+ ended_order_search_retry_seconds: 300
1755
+ },
1756
+ okx: {
1757
+ account_display_fresh_seconds: 30,
1758
+ display_name: "OKX",
1759
+ key_name: "API key",
1760
+ short_code: "OKX",
1761
+ candle_timeframes: [
1762
+ "1m",
1763
+ "5m",
1764
+ "15m",
1765
+ "30m",
1766
+ "1h",
1767
+ "4h",
1768
+ "1d",
1769
+ "1w"
1770
+ ],
1771
+ settle_currency: "USDT",
1772
+ markets_cache_seconds: 3600,
1773
+ markets_miss_reread_seconds: 60,
1774
+ order_lifetime_milliseconds: 5e3,
1775
+ order_readback_attempts: 5,
1776
+ order_readback_interval_milliseconds: 200,
1777
+ remembered_order_ids: 5e3,
1778
+ ended_order_search_days: 7,
1779
+ ended_order_search_retry_seconds: 300,
1780
+ fill_lookback_hours: 71,
1781
+ client_request_capacity: {
1782
+ fleet_reserve_weight: {
1783
+ trading_reduce: 1,
1784
+ trading_reconcile: 1,
1785
+ trading_execute: 1,
1786
+ trading_analysis: 2,
1787
+ ui: 3,
1788
+ background: 5
1789
+ },
1790
+ reserve_margin_requests: 1,
1791
+ demand_bucket_seconds: 60,
1792
+ demand_horizon_seconds: 3600,
1793
+ capacity_cut_percent: 70,
1794
+ capacity_min_requests: 2,
1795
+ capacity_recovery_requests_per_minute: 2,
1796
+ admission_wait_seconds: 10,
1797
+ background_admission_wait_seconds: 90
1798
+ },
1799
+ networks: {
1800
+ live: {
1801
+ client_surfaces: [
1802
+ "browser",
1803
+ "desktop",
1804
+ "android",
1805
+ "agent_token"
1806
+ ]
1807
+ },
1808
+ demo: {
1809
+ client_surfaces: [
1810
+ "browser",
1811
+ "desktop",
1812
+ "android",
1813
+ "agent_token"
1814
+ ]
1815
+ }
1816
+ }
1817
+ },
1818
+ bingx: {
1819
+ account_display_fresh_seconds: 30,
1820
+ display_name: "BingX",
1821
+ key_name: "API key",
1822
+ short_code: "BGX",
1823
+ candle_timeframes: [
1824
+ "1m",
1825
+ "5m",
1826
+ "15m",
1827
+ "30m",
1828
+ "1h",
1829
+ "4h",
1830
+ "1d",
1831
+ "1w"
1832
+ ],
1833
+ quote_asset: "USDT",
1834
+ markets_cache_seconds: 3600,
1835
+ recv_window_milliseconds: 5e3,
1836
+ fill_lookback_days: 7,
1837
+ client_request_capacity: {
1838
+ reserve_margin_requests: 50,
1839
+ demand_bucket_seconds: 60,
1840
+ demand_horizon_seconds: 3600,
1841
+ capacity_cut_percent: 70,
1842
+ capacity_min_requests: 100,
1843
+ capacity_recovery_requests_per_minute: 50,
1844
+ rate_limit_pause_seconds: 10,
1845
+ ip_ban_pause_seconds: 120,
1846
+ admission_wait_seconds: 10,
1847
+ background_admission_wait_seconds: 90,
1848
+ fleet_reserve_weight: {
1849
+ trading_reduce: 10,
1850
+ trading_reconcile: 15,
1851
+ trading_execute: 20,
1852
+ trading_analysis: 40,
1853
+ ui: 100,
1854
+ background: 125
1855
+ }
1856
+ },
1857
+ networks: {
1858
+ live: {
1859
+ client_surfaces: [
1860
+ "desktop",
1861
+ "android",
1862
+ "agent_token"
1863
+ ]
1864
+ },
1865
+ vst: {
1866
+ client_surfaces: [
1867
+ "desktop",
1868
+ "android",
1869
+ "agent_token"
1870
+ ]
1871
+ }
1872
+ }
1873
+ },
1874
+ bitget: {
1875
+ account_display_fresh_seconds: 30,
1876
+ display_name: "Bitget",
1877
+ key_name: "API key",
1878
+ short_code: "BIT",
1879
+ candle_timeframes: [
1880
+ "1m",
1881
+ "5m",
1882
+ "15m",
1883
+ "30m",
1884
+ "1h",
1885
+ "4h",
1886
+ "1d",
1887
+ "1w"
1888
+ ],
1889
+ product_type: "USDT-FUTURES",
1890
+ quote_asset: "USDT",
1891
+ markets_cache_seconds: 3600,
1892
+ fill_lookback_days: 7,
1893
+ remembered_order_ids: 5e3,
1894
+ ended_order_search_days: 7,
1895
+ ended_order_search_retry_seconds: 300,
1896
+ old_open_order_search_seconds: 3600,
1897
+ client_request_capacity: {
1898
+ reserve_margin_weight: 2,
1899
+ demand_bucket_seconds: 60,
1900
+ demand_horizon_seconds: 3600,
1901
+ capacity_cut_percent: 70,
1902
+ capacity_min_weight: 4,
1903
+ capacity_recovery_weight_per_minute: 60,
1904
+ admission_wait_seconds: 10,
1905
+ background_admission_wait_seconds: 90,
1906
+ fleet_reserve_weight: {
1907
+ trading_reduce: 1,
1908
+ trading_reconcile: 1,
1909
+ trading_execute: 2,
1910
+ trading_analysis: 2,
1911
+ ui: 5,
1912
+ background: 6
1913
+ }
1914
+ },
1915
+ networks: {
1916
+ live: {
1917
+ client_surfaces: [
1918
+ "desktop",
1919
+ "android",
1920
+ "agent_token"
1921
+ ]
1922
+ },
1923
+ demo: {
1924
+ client_surfaces: [
1925
+ "desktop",
1926
+ "android",
1927
+ "agent_token"
1928
+ ]
1929
+ }
1930
+ }
1931
+ },
1932
+ kraken_futures: {
1933
+ account_display_fresh_seconds: 30,
1934
+ display_name: "Kraken Futures",
1935
+ key_name: "API key",
1936
+ short_code: "KRA",
1937
+ candle_timeframes: [
1938
+ "1m",
1939
+ "5m",
1940
+ "15m",
1941
+ "30m",
1942
+ "1h",
1943
+ "4h",
1944
+ "1d",
1945
+ "1w"
1946
+ ],
1947
+ client_surfaces: [
1948
+ "desktop",
1949
+ "android",
1950
+ "agent_token"
1951
+ ],
1952
+ markets_cache_seconds: 3600,
1953
+ fill_lookback_days: 7,
1954
+ history_pages_per_read: 10,
1955
+ funding_log_page_entries: 1e3,
1956
+ request_capacity: {
1957
+ reserve_margin_weight: 100,
1958
+ demand_bucket_seconds: 60,
1959
+ demand_horizon_seconds: 3600,
1960
+ capacity_cut_percent: 70,
1961
+ capacity_min_weight: 100,
1962
+ capacity_recovery_weight_per_minute: 50,
1963
+ derivatives_limit_pause_seconds: 10,
1964
+ history_limit_pause_seconds: 60,
1965
+ admission_wait_seconds: 5,
1966
+ background_admission_wait_seconds: 30
1967
+ }
1968
+ },
1969
+ aster: {
1970
+ account_display_fresh_seconds: 30,
1971
+ quote_asset: "USDT",
1972
+ display_name: "Aster",
1973
+ key_name: "API wallet",
1974
+ short_code: "AST",
1975
+ candle_timeframes: [
1976
+ "1m",
1977
+ "5m",
1978
+ "15m",
1979
+ "30m",
1980
+ "1h",
1981
+ "4h",
1982
+ "1d",
1983
+ "1w"
1984
+ ],
1985
+ client_surfaces: [
1986
+ "browser",
1987
+ "desktop",
1988
+ "android",
1989
+ "agent_token"
1990
+ ],
1991
+ markets_cache_seconds: 3600,
1992
+ fill_lookback_days: 7,
1993
+ client_request_capacity: {
1994
+ reserve_margin_weight: 100,
1995
+ demand_bucket_seconds: 60,
1996
+ demand_horizon_seconds: 3600,
1997
+ capacity_cut_percent: 70,
1998
+ capacity_min_weight: 480,
1999
+ capacity_recovery_weight_per_minute: 240,
2000
+ rate_limit_pause_seconds: 60,
2001
+ ip_ban_pause_seconds: 120,
2002
+ admission_wait_seconds: 10,
2003
+ background_admission_wait_seconds: 90,
2004
+ fleet_reserve_weight: {
2005
+ trading_reduce: 50,
2006
+ trading_reconcile: 75,
2007
+ trading_execute: 100,
2008
+ trading_analysis: 200,
2009
+ ui: 600,
2010
+ background: 800
2011
+ }
2012
+ }
2013
+ },
2014
+ kucoin_futures: {
2015
+ account_display_fresh_seconds: 30,
2016
+ display_name: "KuCoin Futures",
2017
+ key_name: "API key",
2018
+ short_code: "KUC",
2019
+ candle_timeframes: [
2020
+ "1m",
2021
+ "5m",
2022
+ "15m",
2023
+ "30m",
2024
+ "1h",
2025
+ "4h",
2026
+ "1d",
2027
+ "1w"
2028
+ ],
2029
+ client_surfaces: [
2030
+ "desktop",
2031
+ "android",
2032
+ "agent_token"
2033
+ ],
2034
+ settle_currency: "USDT",
2035
+ markets_cache_seconds: 3600,
2036
+ remembered_order_ids: 5e3,
2037
+ ended_order_search_days: 7,
2038
+ ended_order_search_retry_seconds: 300,
2039
+ client_request_capacity: {
2040
+ reserve_margin_weight: 100,
2041
+ demand_bucket_seconds: 60,
2042
+ demand_horizon_seconds: 3600,
2043
+ capacity_cut_percent: 70,
2044
+ capacity_min_weight: 200,
2045
+ capacity_recovery_weight_per_minute: 100,
2046
+ admission_wait_seconds: 10,
2047
+ background_admission_wait_seconds: 60,
2048
+ fleet_reserve_weight: {
2049
+ trading_reduce: 50,
2050
+ trading_reconcile: 75,
2051
+ trading_execute: 100,
2052
+ trading_analysis: 200,
2053
+ ui: 500,
2054
+ background: 700
2055
+ }
2056
+ }
2057
+ },
2058
+ bybit: {
2059
+ client_request_capacity: {
2060
+ reserve_margin_weight: 60,
2061
+ demand_bucket_seconds: 60,
2062
+ demand_horizon_seconds: 3600,
2063
+ capacity_cut_percent: 70,
2064
+ capacity_min_weight: 60,
2065
+ capacity_recovery_weight_per_minute: 60,
2066
+ admission_wait_seconds: 10,
2067
+ background_admission_wait_seconds: 60,
2068
+ fleet_reserve_weight: {
2069
+ trading_reduce: 15,
2070
+ trading_reconcile: 20,
2071
+ trading_execute: 25,
2072
+ trading_analysis: 50,
2073
+ ui: 150,
2074
+ background: 200
2075
+ }
2076
+ },
2077
+ display_name: "Bybit",
2078
+ key_name: "API key",
2079
+ short_code: "BYB",
2080
+ candle_timeframes: [
2081
+ "1m",
2082
+ "5m",
2083
+ "15m",
2084
+ "30m",
2085
+ "1h",
2086
+ "4h",
2087
+ "1d",
2088
+ "1w"
2089
+ ],
2090
+ client_surfaces: [
2091
+ "browser",
2092
+ "desktop",
2093
+ "android",
2094
+ "agent_token"
2095
+ ],
2096
+ settle_coin: "USDT",
2097
+ account_display_fresh_seconds: 30,
2098
+ markets_cache_seconds: 3600,
2099
+ recv_window_milliseconds: 5e3,
2100
+ order_readback_attempts: 5,
2101
+ order_readback_interval_milliseconds: 200,
2102
+ remembered_order_ids: 5e3,
2103
+ ended_order_search_days: 7,
2104
+ ended_order_search_retry_seconds: 300,
2105
+ fill_lookback_hours: 167
2106
+ },
1300
2107
  mt5: {
1301
2108
  display_name: "MetaTrader 5",
2109
+ short_code: "MT5",
2110
+ candle_timeframes: [
2111
+ "1m",
2112
+ "5m",
2113
+ "15m",
2114
+ "30m",
2115
+ "1h",
2116
+ "4h",
2117
+ "1d",
2118
+ "1w"
2119
+ ],
2120
+ client_surfaces: [
2121
+ "browser",
2122
+ "desktop",
2123
+ "android",
2124
+ "agent_token"
2125
+ ],
1302
2126
  bridge_download_path: "/downloads/mt5/VtxBridge.ex5",
1303
2127
  trading_enabled: true,
1304
2128
  status_poll_seconds: 5,
@@ -1307,8 +2131,7 @@ var runtime_policy_generated_default = {
1307
2131
  request_timeout_seconds: 15,
1308
2132
  write_expires_after_seconds: 60,
1309
2133
  deal_lookback_days: 7,
1310
- deal_clock_allowance_seconds: 60,
1311
- stop_distance_margin: 0.5
2134
+ deal_clock_allowance_seconds: 60
1312
2135
  },
1313
2136
  cache: {
1314
2137
  available_assets_ttl_seconds: 300,
@@ -1323,6 +2146,12 @@ var runtime_policy_generated_default = {
1323
2146
  range_page_limit: 500
1324
2147
  }
1325
2148
  },
2149
+ observability: {
2150
+ hyperliquid_rollup: {
2151
+ enabled: true,
2152
+ exchange_latency_samples_per_minute: 200
2153
+ }
2154
+ },
1326
2155
  external_news: {
1327
2156
  benzinga: {
1328
2157
  enabled: false
@@ -1559,6 +2388,282 @@ var HYPERLIQUID_CANDLE_SNAPSHOT_CHARGE = {
1559
2388
  "rows_per_extra_weight": 60,
1560
2389
  "max_rows": 5e3
1561
2390
  };
2391
+ var BINANCE_REQUEST_CONTRACT = {
2392
+ "weight_interval": "1m",
2393
+ "apis": {
2394
+ "futures": {
2395
+ "weight_window_seconds": 60,
2396
+ "weight_per_window": 2400,
2397
+ "orders": [
2398
+ {
2399
+ "interval": "10s",
2400
+ "window_seconds": 10,
2401
+ "limit": 300
2402
+ },
2403
+ {
2404
+ "interval": "1m",
2405
+ "window_seconds": 60,
2406
+ "limit": 1200
2407
+ }
2408
+ ]
2409
+ },
2410
+ "spot": {
2411
+ "weight_window_seconds": 60,
2412
+ "weight_per_window": 6e3,
2413
+ "orders": []
2414
+ }
2415
+ },
2416
+ "klines": {
2417
+ "default_limit": 500,
2418
+ "limit_max": 1500,
2419
+ "weight_tiers": [
2420
+ {
2421
+ "max_limit": 99,
2422
+ "weight": 1
2423
+ },
2424
+ {
2425
+ "max_limit": 499,
2426
+ "weight": 2
2427
+ },
2428
+ {
2429
+ "max_limit": 1e3,
2430
+ "weight": 5
2431
+ },
2432
+ {
2433
+ "max_limit": 1500,
2434
+ "weight": 10
2435
+ }
2436
+ ]
2437
+ },
2438
+ "costs": {
2439
+ "futures": {
2440
+ "GET /fapi/v1/time": {
2441
+ "weight": 1
2442
+ },
2443
+ "GET /fapi/v1/exchangeInfo": {
2444
+ "weight": 1
2445
+ },
2446
+ "GET /fapi/v1/premiumIndex": {
2447
+ "weight": 1,
2448
+ "weight_all_symbols": 10
2449
+ },
2450
+ "GET /fapi/v2/ticker/price": {
2451
+ "weight": 1,
2452
+ "weight_all_symbols": 2,
2453
+ "used_weight_header_unreliable": true
2454
+ },
2455
+ "GET /fapi/v1/klines": {
2456
+ "weight_by_klines_limit": true
2457
+ },
2458
+ "GET /fapi/v1/accountConfig": {
2459
+ "weight": 5
2460
+ },
2461
+ "GET /fapi/v1/symbolConfig": {
2462
+ "weight": 5
2463
+ },
2464
+ "GET /fapi/v1/positionSide/dual": {
2465
+ "weight": 30
2466
+ },
2467
+ "GET /fapi/v1/multiAssetsMargin": {
2468
+ "weight": 30
2469
+ },
2470
+ "GET /fapi/v3/account": {
2471
+ "weight": 5
2472
+ },
2473
+ "GET /fapi/v3/balance": {
2474
+ "weight": 5
2475
+ },
2476
+ "GET /fapi/v3/positionRisk": {
2477
+ "weight": 5
2478
+ },
2479
+ "GET /fapi/v1/openOrders": {
2480
+ "weight": 1,
2481
+ "weight_all_symbols": 40
2482
+ },
2483
+ "GET /fapi/v1/order": {
2484
+ "weight": 1
2485
+ },
2486
+ "GET /fapi/v1/openAlgoOrders": {
2487
+ "weight": 1,
2488
+ "weight_all_symbols": 40
2489
+ },
2490
+ "GET /fapi/v1/algoOrder": {
2491
+ "weight": 1
2492
+ },
2493
+ "GET /fapi/v1/userTrades": {
2494
+ "weight": 5
2495
+ },
2496
+ "GET /fapi/v1/allOrders": {
2497
+ "weight": 5
2498
+ },
2499
+ "GET /fapi/v1/income": {
2500
+ "weight": 30
2501
+ },
2502
+ "GET /fapi/v1/leverageBracket": {
2503
+ "weight": 1
2504
+ },
2505
+ "GET /fapi/v1/commissionRate": {
2506
+ "weight": 20
2507
+ },
2508
+ "POST /fapi/v1/order": {
2509
+ "weight": 0,
2510
+ "orders": {
2511
+ "10s": 1,
2512
+ "1m": 1
2513
+ }
2514
+ },
2515
+ "PUT /fapi/v1/order": {
2516
+ "weight": 0,
2517
+ "orders": {
2518
+ "10s": 1,
2519
+ "1m": 1
2520
+ }
2521
+ },
2522
+ "POST /fapi/v1/batchOrders": {
2523
+ "weight": 5,
2524
+ "orders": {
2525
+ "10s": 5,
2526
+ "1m": 1
2527
+ }
2528
+ },
2529
+ "PUT /fapi/v1/batchOrders": {
2530
+ "weight": 5,
2531
+ "orders": {
2532
+ "10s": 5,
2533
+ "1m": 1
2534
+ }
2535
+ },
2536
+ "POST /fapi/v1/algoOrder": {
2537
+ "weight": 0,
2538
+ "orders": {
2539
+ "10s": 1,
2540
+ "1m": 1
2541
+ }
2542
+ },
2543
+ "DELETE /fapi/v1/order": {
2544
+ "weight": 1
2545
+ },
2546
+ "DELETE /fapi/v1/batchOrders": {
2547
+ "weight": 1
2548
+ },
2549
+ "DELETE /fapi/v1/allOpenOrders": {
2550
+ "weight": 1
2551
+ },
2552
+ "DELETE /fapi/v1/algoOrder": {
2553
+ "weight": 1
2554
+ },
2555
+ "DELETE /fapi/v1/algoOpenOrders": {
2556
+ "weight": 1
2557
+ },
2558
+ "POST /fapi/v1/leverage": {
2559
+ "weight": 1
2560
+ },
2561
+ "POST /fapi/v1/marginType": {
2562
+ "weight": 1
2563
+ },
2564
+ "POST /fapi/v1/positionSide/dual": {
2565
+ "weight": 1
2566
+ },
2567
+ "POST /fapi/v1/multiAssetsMargin": {
2568
+ "weight": 1
2569
+ }
2570
+ },
2571
+ "spot": {
2572
+ "GET /api/v3/time": {
2573
+ "weight": 1
2574
+ },
2575
+ "GET /api/v3/account": {
2576
+ "weight": 20
2577
+ },
2578
+ "GET /sapi/v1/account/apiRestrictions": {
2579
+ "weight": 1
2580
+ }
2581
+ }
2582
+ }
2583
+ };
2584
+ var BINANCE_ERROR_CODES = {
2585
+ "codes": {
2586
+ "UNKNOWN": -1e3,
2587
+ "DISCONNECTED": -1001,
2588
+ "UNAUTHORIZED": -1002,
2589
+ "TOO_MANY_REQUESTS": -1003,
2590
+ "UNEXPECTED_RESPONSE": -1006,
2591
+ "TIMEOUT": -1007,
2592
+ "REQUEST_THROTTLED": -1008,
2593
+ "INVALID_MESSAGE": -1013,
2594
+ "TOO_MANY_ORDERS": -1015,
2595
+ "SERVICE_SHUTTING_DOWN": -1016,
2596
+ "INVALID_TIMESTAMP": -1021,
2597
+ "INVALID_SIGNATURE": -1022,
2598
+ "MANDATORY_PARAM_EMPTY_OR_MALFORMED": -1102,
2599
+ "BAD_PRECISION": -1111,
2600
+ "INVALID_ORDER_TYPE": -1116,
2601
+ "BAD_SYMBOL": -1121,
2602
+ "INVALID_PARAMETER": -1130,
2603
+ "NEW_ORDER_REJECTED": -2010,
2604
+ "CANCEL_REJECTED": -2011,
2605
+ "NO_SUCH_ORDER": -2013,
2606
+ "BAD_API_KEY_FORMAT": -2014,
2607
+ "REJECTED_API_KEY": -2015,
2608
+ "BALANCE_NOT_SUFFICIENT": -2018,
2609
+ "MARGIN_NOT_SUFFICIENT": -2019,
2610
+ "UNABLE_TO_FILL": -2020,
2611
+ "ORDER_WOULD_IMMEDIATELY_TRIGGER": -2021,
2612
+ "REDUCE_ONLY_REJECT": -2022,
2613
+ "POSITION_NOT_SUFFICIENT": -2024,
2614
+ "MAX_OPEN_ORDER_EXCEEDED": -2025,
2615
+ "REDUCE_ONLY_ORDER_TYPE_NOT_SUPPORTED": -2026,
2616
+ "MAX_LEVERAGE_RATIO": -2027,
2617
+ "MIN_LEVERAGE_RATIO": -2028,
2618
+ "PRICE_GREATER_THAN_MAX_PRICE": -4002,
2619
+ "QTY_LESS_THAN_ZERO": -4003,
2620
+ "QTY_LESS_THAN_MIN_QTY": -4004,
2621
+ "QTY_GREATER_THAN_MAX_QTY": -4005,
2622
+ "STOP_PRICE_GREATER_THAN_MAX_PRICE": -4007,
2623
+ "PRICE_LESS_THAN_MIN_PRICE": -4013,
2624
+ "PRICE_NOT_INCREASED_BY_TICK_SIZE": -4014,
2625
+ "INVALID_CLIENT_ORDER_ID": -4015,
2626
+ "PRICE_HIGHER_THAN_MULTIPLIER_UP": -4016,
2627
+ "QTY_NOT_INCREASED_BY_STEP_SIZE": -4023,
2628
+ "PRICE_LOWER_THAN_MULTIPLIER_DOWN": -4024,
2629
+ "INVALID_LEVERAGE": -4028,
2630
+ "MAX_STOP_ORDER_EXCEEDED": -4045,
2631
+ "NO_NEED_TO_CHANGE_MARGIN_TYPE": -4046,
2632
+ "MARGIN_TYPE_BLOCKED_BY_OPEN_ORDERS": -4047,
2633
+ "MARGIN_TYPE_BLOCKED_BY_POSITION": -4048,
2634
+ "NO_NEED_TO_CHANGE_POSITION_SIDE": -4059,
2635
+ "POSITION_SIDE_NOT_MATCH": -4061,
2636
+ "REDUCE_ONLY_CONFLICT": -4062,
2637
+ "REDUCE_ONLY_ORDER_PERMISSION": -4087,
2638
+ "SYMBOL_REDUCE_ONLY": -4105,
2639
+ "SYMBOL_REDUCE_ONLY_BUY": -4106,
2640
+ "SYMBOL_REDUCE_ONLY_SELL": -4107,
2641
+ "INACTIVE_ACCOUNT": -4109,
2642
+ "DUPLICATED_CLIENT_ORDER_ID": -4116,
2643
+ "REDUCE_ONLY_MARGIN_CHECK_FAILED": -4118,
2644
+ "STOP_ORDER_SWITCH_ALGO": -4120,
2645
+ "MARKET_ORDER_REJECT": -4131,
2646
+ "QUANTITY_EXISTS_WITH_CLOSE_POSITION": -4137,
2647
+ "REDUCE_ONLY_MUST_BE_TRUE": -4138,
2648
+ "INVALID_OPENING_POSITION_STATUS": -4140,
2649
+ "STRATEGY_INVALID_TRIGGER_PRICE": -4142,
2650
+ "ISOLATED_LEVERAGE_REJECT_WITH_POSITION": -4161,
2651
+ "MIN_NOTIONAL": -4164,
2652
+ "PRICE_HIGHER_THAN_STOP_MULTIPLIER_UP": -4183,
2653
+ "PRICE_LOWER_THAN_STOP_MULTIPLIER_DOWN": -4184,
2654
+ "ACCOUNT_REDUCE_ONLY": -4189,
2655
+ "ADJUST_LEVERAGE_ONE_MONTH_FAILED": -4203,
2656
+ "ADJUST_LEVERAGE_X_DAYS_FAILED": -4205,
2657
+ "ADJUST_LEVERAGE_SYMBOL_FAILED": -4209,
2658
+ "STOP_PRICE_HIGHER_THAN_PRICE_MULTIPLIER_LIMIT": -4210,
2659
+ "STOP_PRICE_LOWER_THAN_PRICE_MULTIPLIER_LIMIT": -4211,
2660
+ "ADJUST_LEVERAGE_COMPLIANCE_FAILED": -4403,
2661
+ "FOK_ORDER_REJECT": -5021,
2662
+ "GTX_ORDER_REJECT": -5022,
2663
+ "ME_RECVWINDOW_REJECT": -5028,
2664
+ "MODIFICATION_MIN_NOTIONAL": -5029
2665
+ }
2666
+ };
1562
2667
 
1563
2668
  // lib/constants.ts
1564
2669
  var MS_PER_SECOND = 1e3;
@@ -1617,6 +2722,37 @@ var AI_SNAPSHOT_PACKED_ENTRY_FIELDS = AI_SNAPSHOT_WIRE_FORMAT.packed_entry_field
1617
2722
  var MT5_SYNTHETIC_LEG_ID_BASE = 2 ** 52;
1618
2723
  var MT5_SYNTHETIC_LEG_KINDS = 2;
1619
2724
  var MT5_SYNTHETIC_LEG_OPENING_LIMIT = (2 ** 53 - MT5_SYNTHETIC_LEG_ID_BASE) / MT5_SYNTHETIC_LEG_KINDS;
2725
+ var BINANCE_USER_TRADES_WINDOW_MS = DAYS_PER_WEEK * MS_PER_DAY;
2726
+ var BINANCE_ALL_ORDERS_WINDOW_MS = DAYS_PER_WEEK * MS_PER_DAY;
2727
+ var BINANCE_REQUESTS = BINANCE_REQUEST_CONTRACT;
2728
+ var BINANCE_KLINES_LIMIT_MAX = BINANCE_REQUESTS.klines.limit_max;
2729
+ var BINANCE_REQUEST_WEIGHT_WINDOW_MS = BINANCE_REQUESTS.apis.futures.weight_window_seconds * MS_PER_SECOND;
2730
+ var BINANCE_REQUEST_WEIGHT_INTERVAL = BINANCE_REQUESTS.weight_interval;
2731
+ var binanceApiLimits = (api) => ({
2732
+ weightPerWindow: api.weight_per_window,
2733
+ orders: api.orders.map((order) => ({ interval: order.interval, windowMs: order.window_seconds * MS_PER_SECOND, limit: order.limit }))
2734
+ });
2735
+ var BINANCE_REQUEST_LIMITS = {
2736
+ futures: binanceApiLimits(BINANCE_REQUESTS.apis.futures),
2737
+ spot: binanceApiLimits(BINANCE_REQUESTS.apis.spot)
2738
+ };
2739
+ var BINANCE_KLINES_DEFAULT_LIMIT = BINANCE_REQUESTS.klines.default_limit;
2740
+ var BINANCE_KLINES_WEIGHT_TIERS = BINANCE_REQUESTS.klines.weight_tiers.map(
2741
+ (tier) => ({ maxLimit: tier.max_limit, weight: tier.weight })
2742
+ );
2743
+ var binanceCostSpec = (cost) => ({
2744
+ ...cost.weight !== void 0 ? { weight: cost.weight } : {},
2745
+ ...cost.weight_all_symbols !== void 0 ? { weightAllSymbols: cost.weight_all_symbols } : {},
2746
+ ...cost.weight_by_klines_limit ? { weightByLimit: BINANCE_KLINES_WEIGHT_TIERS } : {},
2747
+ ...cost.orders ? { orders: cost.orders } : {},
2748
+ ...cost.used_weight_header_unreliable ? { usedWeightHeaderUnreliable: true } : {}
2749
+ });
2750
+ var binanceCosts = (costs) => Object.fromEntries(Object.entries(costs).map(([request, cost]) => [request, binanceCostSpec(cost)]));
2751
+ var BINANCE_REQUEST_COSTS = {
2752
+ futures: binanceCosts(BINANCE_REQUESTS.costs.futures),
2753
+ spot: binanceCosts(BINANCE_REQUESTS.costs.spot)
2754
+ };
2755
+ var BINANCE_ERROR_CODE = BINANCE_ERROR_CODES.codes;
1620
2756
 
1621
2757
  // lib/inference-host/service-launcher.ts
1622
2758
  import { spawn as spawn2 } from "node:child_process";