From c2b14dda354b22a7c013d4966364d5e894d6e0fb Mon Sep 17 00:00:00 2001 From: Ahmet Guzererler Date: Mon, 23 Mar 2026 23:07:45 +0100 Subject: [PATCH] refactor: Remove Chainlit and several other unused dependencies, updating the lock file and related agent configurations. --- agent_os/backend/services/langgraph_engine.py | 26 ++++++++++++++----- tradingagents/graph/portfolio_setup.py | 6 ++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/agent_os/backend/services/langgraph_engine.py b/agent_os/backend/services/langgraph_engine.py index 5cb498ce..a119fe16 100644 --- a/agent_os/backend/services/langgraph_engine.py +++ b/agent_os/backend/services/langgraph_engine.py @@ -362,12 +362,16 @@ class LangGraphEngine: # Phase 1: Market scan yield self._system_log("Phase 1/3: Running market scan…") - async for evt in self.run_scan(f"{run_id}_scan", {"date": date}): - yield evt + store = ReportStore() + if store.load_scan(date): + yield self._system_log(f"Phase 1: Macro scan for {date} already exists, skipping.") + else: + async for evt in self.run_scan(f"{run_id}_scan", {"date": date}): + yield evt # Phase 2: Pipeline analysis — get tickers from saved scan report yield self._system_log("Phase 2/3: Loading stocks from scan report…") - scan_data = ReportStore().load_scan(date) + scan_data = store.load_scan(date) tickers = self._extract_tickers_from_scan_data(scan_data) if not tickers: @@ -378,6 +382,10 @@ class LangGraphEngine: ) else: for ticker in tickers: + if store.load_analysis(date, ticker): + yield self._system_log(f"Phase 2: Analysis for {ticker} on {date} already exists, skipping.") + continue + yield self._system_log(f"Phase 2/3: Running analysis pipeline for {ticker}…") async for evt in self.run_pipeline( f"{run_id}_pipeline_{ticker}", {"ticker": ticker, "date": date} @@ -387,10 +395,14 @@ class LangGraphEngine: # Phase 3: Portfolio management yield self._system_log("Phase 3/3: Running portfolio manager…") portfolio_params = {k: v for k, v in params.items() if k != "ticker"} - async for evt in self.run_portfolio( - f"{run_id}_portfolio", {"date": date, **portfolio_params} - ): - yield evt + # Check if portfolio decision already exists + if store.load_pm_decision(date, portfolio_id): + yield self._system_log(f"Phase 3: Portfolio decision for {portfolio_id} on {date} already exists, skipping.") + else: + async for evt in self.run_portfolio( + f"{run_id}_portfolio", {"date": date, **portfolio_params} + ): + yield evt logger.info("Completed AUTO run=%s", run_id) diff --git a/tradingagents/graph/portfolio_setup.py b/tradingagents/graph/portfolio_setup.py index 1f7b069b..a2e162fe 100644 --- a/tradingagents/graph/portfolio_setup.py +++ b/tradingagents/graph/portfolio_setup.py @@ -221,15 +221,15 @@ class PortfolioGraphSetup: # Register LLM nodes workflow.add_node("review_holdings", self.agents["review_holdings"]) - workflow.add_node("pm_decision", self.agents["pm_decision"]) + workflow.add_node("make_pm_decision", self.agents["pm_decision"]) # Sequential edges workflow.add_edge(START, "load_portfolio") workflow.add_edge("load_portfolio", "compute_risk") workflow.add_edge("compute_risk", "review_holdings") workflow.add_edge("review_holdings", "prioritize_candidates") - workflow.add_edge("prioritize_candidates", "pm_decision") - workflow.add_edge("pm_decision", "execute_trades") + workflow.add_edge("prioritize_candidates", "make_pm_decision") + workflow.add_edge("make_pm_decision", "execute_trades") workflow.add_edge("execute_trades", END) return workflow.compile()