Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions python/configs/agent_cards/sec_agent.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "SecAgent",
"display_name": "SEC Agent",
"url": "http://localhost:10003/",
"icon_url": "https://valuecell-test.oss-cn-hangzhou.aliyuncs.com/images/sec_agent.png",
"description": "SecAgent can analyze SEC filings like 10-Q, 10-K, 13-F and analyze stock holdings of institutional investment managers. It can chat about stock performance, financial metrics, and market trends or track specific stocks and provide updates.",
"skills": [
{
Expand Down
8 changes: 0 additions & 8 deletions python/valuecell/agents/sec_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -580,14 +580,6 @@ async def notify(self, query: str, session_id: str, task_id: str):
ticker, changes
)

# yield {
# "content": f"🚨 **New SEC Filing Detected!**\n\n"
# f"**Ticker**: {ticker}\n"
# f"**Time**: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n"
# f"**Summary**:\n{summary}\n\n"
# f"Continuing to monitor for further changes...",
# "is_task_complete": False,
# }
yield notification.message(summary)

# Wait before next check
Expand Down
9 changes: 6 additions & 3 deletions python/valuecell/server/api/schemas/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,12 @@ class AgentData(BaseModel):
"""Data model for a single agent."""

id: int = Field(..., description="Agent unique ID")
name: str = Field(..., description="Agent unique name/identifier")
agent_name: str = Field(..., description="Agent unique name/identifier")
display_name: Optional[str] = Field(None, description="Human-readable display name")
description: Optional[str] = Field(None, description="Agent description")
version: Optional[str] = Field(None, description="Agent version")
enabled: bool = Field(..., description="Whether the agent is enabled")
icon_url: Optional[str] = Field(None, description="Agent icon URL")
agent_metadata: Optional[Dict[str, Any]] = Field(None, description="Agent metadata")
config: Optional[Dict[str, Any]] = Field(None, description="Agent configuration")
created_at: Optional[datetime] = Field(None, description="Creation timestamp")
Expand All @@ -43,11 +44,12 @@ class Config:
json_schema_extra = {
"example": {
"id": 1,
"name": "MarketAnalystAgent",
"agent_name": "MarketAnalystAgent",
"display_name": "Market Analyst Agent",
"description": "AI-powered market analysis agent",
"version": "1.0.0",
"enabled": True,
"icon_url": "https://example.com/icons/market_analyst.png",
"agent_metadata": {
"author": "ValueCell Team",
"tags": ["market", "analysis", "ai"],
Expand All @@ -72,11 +74,12 @@ class Config:
"agents": [
{
"id": 1,
"name": "MarketAnalystAgent",
"agent_name": "MarketAnalystAgent",
"display_name": "Market Analyst Agent",
"description": "AI-powered market analysis agent",
"version": "1.0.0",
"enabled": True,
"icon_url": "https://example.com/icons/market_analyst.png",
"agent_metadata": {
"author": "ValueCell Team",
"tags": ["market", "analysis", "ai"],
Expand Down
4 changes: 3 additions & 1 deletion python/valuecell/server/config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ def __init__(self):
self.CORS_ORIGINS = cors_origins.split(",") if cors_origins != "*" else ["*"]

# Database Configuration
self.DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./valuecell.db")
self.DATABASE_URL = os.getenv(
"DATABASE_URL", "sqlite:///valuecell/server/db/valuecell.db"
)
self.DB_ECHO = os.getenv("DB_ECHO", "false").lower() == "true"

# Redis Configuration
Expand Down
3 changes: 3 additions & 0 deletions python/valuecell/server/db/init_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,9 @@ def initialize_basic_data(self) -> bool:
existing_agent.description = agent_data.get(
"description", existing_agent.description
)
existing_agent.icon_url = agent_data.get(
"icon_url", existing_agent.icon_url
)
existing_agent.version = agent_data.get(
"version", existing_agent.version
)
Expand Down
7 changes: 7 additions & 0 deletions python/valuecell/server/db/models/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ class Agent(Base):
nullable=True,
comment="Detailed description of the agent's purpose and capabilities",
)
icon_url = Column(
String(500),
nullable=True,
comment="URL to the agent's icon image",
)

# Agent configuration
version = Column(
Expand Down Expand Up @@ -92,6 +97,7 @@ def to_dict(self) -> Dict[str, Any]:
"name": self.name,
"display_name": self.display_name,
"description": self.description,
"icon_url": self.icon_url,
"version": self.version,
"enabled": self.enabled,
"capabilities": self.capabilities,
Expand All @@ -108,6 +114,7 @@ def from_config(cls, config_data: Dict[str, Any]) -> "Agent":
name=config_data.get("name"),
display_name=config_data.get("display_name"),
description=config_data.get("description"),
icon_url=config_data.get("icon_url"),
version=config_data.get("version", "1.0.0"),
enabled=config_data.get("enabled", True),
capabilities=config_data.get(
Expand Down
9 changes: 6 additions & 3 deletions python/valuecell/server/services/agent_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,12 @@ def get_all_agents(
agent_data_list = [
AgentData(
id=agent.id,
name=agent.name,
agent_name=agent.name,
display_name=agent.display_name,
description=agent.description,
version=agent.version,
enabled=agent.enabled,
icon_url=agent.icon_url,
agent_metadata=agent.agent_metadata,
config=agent.config,
created_at=agent.created_at,
Expand Down Expand Up @@ -92,11 +93,12 @@ def get_agent_by_id(db: Session, agent_id: int) -> Optional[AgentData]:

return AgentData(
id=agent.id,
name=agent.name,
agent_name=agent.name,
display_name=agent.display_name,
description=agent.description,
version=agent.version,
enabled=agent.enabled,
icon_url=agent.icon_url,
agent_metadata=agent.agent_metadata,
config=agent.config,
created_at=agent.created_at,
Expand All @@ -122,11 +124,12 @@ def get_agent_by_name(db: Session, agent_name: str) -> Optional[AgentData]:

return AgentData(
id=agent.id,
name=agent.name,
agent_name=agent.name,
display_name=agent.display_name,
description=agent.description,
version=agent.version,
enabled=agent.enabled,
icon_url=agent.icon_url,
agent_metadata=agent.agent_metadata,
config=agent.config,
created_at=agent.created_at,
Expand Down