* Initial plan * feat: add observability logging - run event persistence and enriched tool events - Integrate RunLogger into LangGraphEngine for JSONL event persistence - Add _start_run_logger/_finish_run_logger lifecycle in all run methods - Enrich tool events with service, status, and error fields - Add _TOOL_SERVICE_MAP for tool-to-service name resolution - Frontend: color error events in red, show service badges - Frontend: display graceful_skip status with orange indicators - Frontend: add error tab and service info to EventDetail/EventDetailModal - Add 11 unit tests for new observability features Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/477a0676-af7b-48ff-8a3d-567e943323cf * refactor: address code review - extract graceful keywords constant, fix imports - Move get_daily_dir import to top-level (remove inline aliases) - Extract _GRACEFUL_SKIP_KEYWORDS as module-level constant - Update test patches to match top-level import location Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/477a0676-af7b-48ff-8a3d-567e943323cf * feat: add run_id to report paths, MongoDB report store, store factory, and reflexion memory - report_paths.py: All path helpers accept optional run_id for run-scoped dirs - report_store.py: ReportStore supports run_id + latest.json pointer mechanism - mongo_report_store.py: MongoDB-backed store with same interface (no overwrites) - store_factory.py: Factory returns MongoDB or filesystem store based on config - memory/reflexion.py: Reflexion memory for learning from past decisions - langgraph_engine.py: Uses store factory + run_id for all run methods - Fix save_holding_reviews bug (was save_holding_reviews, now save_holding_review) - default_config.py: Add mongo_uri and mongo_db config keys - pyproject.toml: Add pymongo>=4.12.1 dependency - .env.example: Document TRADINGAGENTS_MONGO_URI and TRADINGAGENTS_MONGO_DB Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/16e673ea-40a1-40a0-8e77-f8cd08c1a716 * fix: clean up reflexion record_outcome (remove broken update_one with sort) Also update runs.py reset endpoint to use store factory, fix tests, add ADR 015, update CURRENT_STATE.md Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/16e673ea-40a1-40a0-8e77-f8cd08c1a716 * fix: address all PR#106 review findings (ADR 016) - Fix save_holding_review: iterate per-ticker instead of passing portfolio_id as ticker (Finding 13) - Fix RunLogger context: replace threading.local with contextvars for asyncio task isolation (Finding 3) - Fix list_pm_decisions: add _id:0 projection to exclude ObjectId (Finding 6) - Fix ReflexionMemory: native datetime for MongoDB, ISO string for local JSON fallback (Finding 7) - Fix latest pointer: write/read_latest_pointer accept base_dir parameter, ReportStore passes _base_dir (Finding 12) - Wire RunLogger callback into all astream_events calls (Finding 1) - Call ensure_indexes in MongoReportStore.__init__ (Finding 11) - Create ADR 016 documenting all 13 findings and resolutions - Add 14 targeted tests covering all 7 fixes - All 886 tests pass (872 existing + 14 new) Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/e52cdd2f-efae-4d2a-a56f-903d909b3342 * chore: remove unused imports in tests, remove redundant ensure_indexes call in factory Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/e52cdd2f-efae-4d2a-a56f-903d909b3342 * docs: update ADR 016 — mark Finding 2 resolved, update context docs for contextvars Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> Agent-Logs-Url: https://github.com/aguzererler/TradingAgents/sessions/ce9e2400-a60d-4a6b-896b-1b34ec786bed --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| backend | ||
| frontend | ||
| DESIGN.md | ||
| README.md | ||
| __init__.py | ||
README.md
AgentOS: Visual Observability & Command Center
AgentOS is a real-time observability and command center for the TradingAgents framework. It provides a visual interface to monitor multi-agent workflows, analyze portfolio risk metrics, and trigger automated trading pipelines.
System Architecture
- Backend: FastAPI (Python)
- Orchestrates LangGraph executions.
- Streams real-time events via WebSockets.
- Serves portfolio data from Supabase.
- Port:
8088(default)
- Frontend: React (TypeScript) + Vite
- Visualizes agent workflows using React Flow.
- Displays high-fidelity risk metrics (Sharpe, Regime, Drawdown).
- Provides a live terminal for deep tracing.
- Port:
5173(default)
Getting Started
1. Prerequisites
- Python 3.10+
- Node.js 18+
- uv (recommended for Python environment management)
2. Backend Setup
# From the project root
export PYTHONPATH=$PYTHONPATH:.
uv run python agent_os/backend/main.py
The backend will start on http://127.0.0.1:8088.
3. Frontend Setup
cd agent_os/frontend
npm install
npm run dev
The frontend will start on http://localhost:5173.
Key Features
- Literal Graph Visualization: Real-time DAG rendering of agent interactions.
- Top 3 Metrics: High-level summary of Sharpe Ratio, Market Regime, and Risk/Drawdown.
- Live Terminal: Color-coded logs with token usage and latency metrics.
- Run Controls: Trigger Market Scans, Analysis Pipelines, and Portfolio Rebalancing directly from the UI.
Port Configuration
AgentOS uses port 8088 for the backend to avoid conflicts with common macOS services. The frontend is configured to communicate with 127.0.0.1:8088.