Unify agent routing and tighten exchange config

This commit is contained in:
lky-spec
2026-04-28 11:58:58 +08:00
parent d481b3d88c
commit 30a703a827
12 changed files with 679 additions and 77 deletions

View File

@@ -92,20 +92,21 @@ func (v exchangeConfigValidator) Validate() error {
if trimmed := strings.TrimSpace(v.secretKey); trimmed != "" && !genericAPIKeyPattern.MatchString(trimmed) && !hexCredentialPattern.MatchString(trimmed) {
return fmt.Errorf("Secret format looks invalid")
}
if exchangeType == "okx" && v.enabled && strings.TrimSpace(v.passphrase) == "" {
return fmt.Errorf("OKX requires passphrase before enabling this exchange config")
}
if exchangeType == "hyperliquid" && v.enabled && strings.TrimSpace(v.hyperliquidWalletAddr) == "" {
return fmt.Errorf("Hyperliquid requires wallet address before enabling this exchange config")
}
if exchangeType == "aster" && v.enabled {
if strings.TrimSpace(v.asterUser) == "" || strings.TrimSpace(v.asterSigner) == "" || strings.TrimSpace(v.asterPrivateKey) == "" {
return fmt.Errorf("Aster requires user, signer, and private key before enabling this exchange config")
}
}
if exchangeType == "lighter" && v.enabled {
if strings.TrimSpace(v.lighterWalletAddr) == "" || strings.TrimSpace(v.lighterAPIKeyPrivateKey) == "" {
return fmt.Errorf("Lighter requires wallet address and API key private key before enabling this exchange config")
if v.enabled {
missing := store.MissingRequiredExchangeCredentialFields(
exchangeType,
v.apiKey,
v.secretKey,
v.passphrase,
v.hyperliquidWalletAddr,
v.asterUser,
v.asterSigner,
v.asterPrivateKey,
v.lighterWalletAddr,
v.lighterAPIKeyPrivateKey,
)
if len(missing) > 0 {
return fmt.Errorf("cannot enable exchange config before required fields are complete: %s", strings.Join(missing, ", "))
}
}
return nil