Compare commits

..

2 Commits

Author SHA1 Message Date
8521f685c7 fix: improve error handling in buy/sell functions
Add proper exception handling around get_latest_position() calls in both
buy() and sell() functions. Previously, exceptions were caught but code
continued execution with undefined variables, causing "variable referenced
before assignment" errors.

Now returns error dict with context when position lookup fails.

Related to context injection implementation for concurrent simulations.
2025-11-02 20:38:55 -05:00
bf12e981fe debug: add logging to trace parameter injection 2025-11-02 20:29:35 -05:00
2 changed files with 10 additions and 4 deletions

View File

@@ -51,5 +51,8 @@ class ContextInjector:
if "today_date" not in request.args:
request.args["today_date"] = self.today_date
# Debug logging
print(f"[ContextInjector] Tool: {request.name}, Args after injection: {request.args}")
# Call the actual tool handler
return await handler(request)

View File

@@ -44,8 +44,10 @@ def buy(symbol: str, amount: int, signature: str = None, today_date: str = None)
"""
# Step 1: Get environment variables and basic information
# Get signature (model name) from parameter or fallback to config/env
print(f"[buy] Received signature parameter: {signature}")
if signature is None:
signature = get_config_value("SIGNATURE")
print(f"[buy] Signature from config: {signature}")
if signature is None:
raise ValueError("SIGNATURE not provided and environment variable is not set")
@@ -59,9 +61,7 @@ def buy(symbol: str, amount: int, signature: str = None, today_date: str = None)
try:
current_position, current_action_id = get_latest_position(today_date, signature)
except Exception as e:
print(e)
print(current_position, current_action_id)
print(today_date, signature)
return {"error": f"Failed to get position: {str(e)}", "signature": signature, "date": today_date}
# Step 3: Get stock opening price for the day
# Use get_open_prices function to get the opening price of specified stock for the day
# If stock symbol does not exist or price data is missing, KeyError exception will be raised
@@ -151,7 +151,10 @@ def sell(symbol: str, amount: int, signature: str = None, today_date: str = None
# Step 2: Get current latest position and operation ID
# get_latest_position returns two values: position dictionary and current maximum operation ID
# This ID is used to ensure each operation has a unique identifier
current_position, current_action_id = get_latest_position(today_date, signature)
try:
current_position, current_action_id = get_latest_position(today_date, signature)
except Exception as e:
return {"error": f"Failed to get position: {str(e)}", "signature": signature, "date": today_date}
# Step 3: Get stock opening price for the day
# Use get_open_prices function to get the opening price of specified stock for the day