44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
"""Helper utilities and models for the TradingAgents CLI."""
|
|
|
|
from enum import Enum
|
|
|
|
|
|
# ===== Models =====
|
|
|
|
class AnalystType(str, Enum):
|
|
"""Enumeration of available analyst types."""
|
|
MARKET = "market"
|
|
SOCIAL = "social"
|
|
NEWS = "news"
|
|
FUNDAMENTALS = "fundamentals"
|
|
|
|
|
|
# ===== Helper Functions =====
|
|
|
|
def update_research_team_status(message_buffer, status):
|
|
"""Update status for all research team members and trader."""
|
|
research_team = ["Bull Researcher", "Bear Researcher", "Research Manager", "Trader"]
|
|
for agent in research_team:
|
|
message_buffer.update_agent_status(agent, status)
|
|
|
|
|
|
def extract_content_string(content):
|
|
"""Extract string content from various message formats."""
|
|
if isinstance(content, str):
|
|
return content
|
|
elif isinstance(content, list):
|
|
# Handle Anthropic's list format
|
|
text_parts = []
|
|
for item in content:
|
|
if isinstance(item, dict):
|
|
if item.get('type') == 'text':
|
|
text_parts.append(item.get('text', ''))
|
|
elif item.get('type') == 'tool_use':
|
|
text_parts.append(f"[Tool: {item.get('name', 'unknown')}]")
|
|
else:
|
|
text_parts.append(str(item))
|
|
return ' '.join(text_parts)
|
|
else:
|
|
return str(content)
|
|
|