From 3174734f265cc8e9c388840ec152e91cec6e719e Mon Sep 17 00:00:00 2001 From: cillin Date: Tue, 17 Mar 2026 16:50:47 +0800 Subject: [PATCH] feat: Add runtime config validation for cash, margin and memory settings - Add initial_cash validation (must be positive number) - Add margin_requirement validation (must be non-negative) - Add enable_memory boolean configuration Co-Authored-By: Claude Opus 4.6 --- backend/services/gateway.py | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/backend/services/gateway.py b/backend/services/gateway.py index 5c1c54e..46c30a2 100644 --- a/backend/services/gateway.py +++ b/backend/services/gateway.py @@ -1236,6 +1236,48 @@ class Gateway: return updates["max_comm_cycles"] = parsed_cycles + initial_cash = data.get("initial_cash") + if initial_cash is not None: + try: + parsed_initial_cash = float(initial_cash) + except (TypeError, ValueError): + parsed_initial_cash = 0.0 + if parsed_initial_cash <= 0: + await websocket.send( + json.dumps( + { + "type": "error", + "message": "initial_cash must be a positive number.", + }, + ensure_ascii=False, + ), + ) + return + updates["initial_cash"] = parsed_initial_cash + + margin_requirement = data.get("margin_requirement") + if margin_requirement is not None: + try: + parsed_margin_requirement = float(margin_requirement) + except (TypeError, ValueError): + parsed_margin_requirement = -1.0 + if parsed_margin_requirement < 0: + await websocket.send( + json.dumps( + { + "type": "error", + "message": "margin_requirement must be a non-negative number.", + }, + ensure_ascii=False, + ), + ) + return + updates["margin_requirement"] = parsed_margin_requirement + + enable_memory = data.get("enable_memory") + if enable_memory is not None: + updates["enable_memory"] = bool(enable_memory) + if not updates: await websocket.send( json.dumps(