workflows: Add check for common LLM targeted unicode characters (#1974)

* workflows: Add check for zero width unicode characters

* refactor: exclude .git directory in zero width unicode character check

* Include additional zero width unicode character in check

* refactor: update zero width unicode check to include format characters
This commit is contained in:
Adrian Gallagher
2025-08-01 11:05:32 +10:00
committed by GitHub
parent 2ab4379189
commit 3178366d86
3 changed files with 16 additions and 4 deletions

View File

@@ -51,3 +51,15 @@ jobs:
echo "::error::Replace !errors.Is(err, target) with testify equivalents"
exit 1
- name: Check for LLM targeted invisible Unicode
run: |
WHITELIST=''
if [[ -z "$WHITELIST" ]]; then
PATTERN='(?!\x20)[\p{Cf}\p{Z}\p{M}]'
else
PATTERN="(?![\x20$WHITELIST])[\p{Cf}\p{Z}\p{M}]"
fi
grep -r -n -I --color=always --exclude-dir=.git -P "$PATTERN" . || exit 0
echo "::error::Remove zero-width/format, separator or combining-mark characters"
exit 1

View File

@@ -786,7 +786,7 @@ func TestCalculatePNL(t *testing.T) {
t.Fatalf("expected one position, received '%v'", len(pos))
}
if len(pos[0].PNLHistory) == 0 {
t.Fatal("expected a pnl entry ( ͡° ͜ʖ ͡°)")
t.Fatal("expected a pnl entry 😎")
}
if !pos[0].UnrealisedPNL.Equal(decimal.NewFromInt(26700)) {
// 20 orders * $1 difference * 1x leverage

View File

@@ -1003,7 +1003,7 @@ func (e *Exchange) AddOrReduceMargin(ctx context.Context, arg *AddOrReduceMargin
}
// GetExecution retrieves users' execution records, sorted by execTime in descending order. However, for Normal spot, they are sorted by execId in descending order.
// Execution Type possible values: 'Trade', 'AdlTrade'Auto-Deleveraging, 'Funding'Funding fee, 'BustTrade'Liquidation, 'Delivery'USDC futures delivery, 'BlockTrade'
// Execution Type possible values: 'Trade', 'AdlTrade' Auto-Deleveraging, 'Funding' Funding fee, 'BustTrade' Liquidation, 'Delivery' USDC futures delivery, 'BlockTrade'
// UTA Spot: 'stopOrderType', "" for normal order, "tpslOrder" for TP/SL order, "Stop" for conditional order, "OcoOrder" for OCO order
func (e *Exchange) GetExecution(ctx context.Context, category, symbol, orderID, orderLinkID, baseCoin, executionType, stopOrderType, cursor string, startTime, endTime time.Time, limit int64) (*ExecutionResponse, error) {
params, err := fillCategoryAndSymbol(category, symbol, true)
@@ -1694,8 +1694,8 @@ func (e *Exchange) GetAllowedDepositCoinInfo(ctx context.Context, coin, chain, c
}
// SetDepositAccount sets auto transfer account after deposit. The same function as the setting for Deposit on web GUI
// account types: CONTRACTDerivatives Account
// 'SPOT'Spot Account 'INVESTMENT'ByFi Account (The service has been offline) 'OPTION'USDC Account 'UNIFIED'UMA or UTA 'FUND'Funding Account
// account types: CONTRACT Derivatives Account
// 'SPOT' Spot Account 'INVESTMENT' ByFi Account (The service has been offline) 'OPTION' USDC Account 'UNIFIED' UMA or UTA 'FUND' Funding Account
func (e *Exchange) SetDepositAccount(ctx context.Context, accountType string) (*StatusResponse, error) {
if accountType == "" {
return nil, errMissingAccountType