TradingAgents/agent_os/frontend
ahmet guzererler 6b3dd4172a
feat: finalise storage layout, run history loading & phase-level re-run (#121)
* feat: introduce flow_id with timestamp-based report versioning

Replace run_id with flow_id as the primary grouping concept (one flow =
one user analysis intent spanning scan + pipeline + portfolio). Reports
are now written as {timestamp}_{name}.json so load methods always return
the latest version by lexicographic sort, eliminating the latest.json
pointer pattern for new flows.

Key changes:
- report_paths.py: add generate_flow_id(), ts_now() (ms precision),
  flow_id kwarg on all path helpers; keep run_id / pointer helpers for
  backward compatibility
- ReportStore: dual-mode save/load — flow_id uses timestamped layout,
  run_id uses legacy runs/{id}/ layout with latest.json
- MongoReportStore: add flow_id field and index; run_id stays for compat
- DualReportStore: expose flow_id property
- store_factory: accept flow_id as primary param, run_id as alias
- runs.py / langgraph_engine.py: generate and thread flow_id through all
  trigger endpoints and run methods
- Tests: add flow_id coverage for all layers; 905 tests pass

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: finalise storage layout, run history loading & phase-level re-run

Storage / persistence
- flow_id (8-char hex) replaces run_id as the disk storage key; all
  sub-phases of one auto run share the same flow_id directory
- Startup hydration: hydrate_runs_from_disk() rebuilds in-memory run
  store from run_meta.json on server restart (events lazy-loaded)

WebSocket / run history fixes
- Lazy-load events from run_events.jsonl on first WS connect; fixes
  blank terminal when clicking a historical run after restart
- Orphaned "running" runs (server restarted mid-run) auto-detected and
  marked "failed" with partial events replayed correctly

Phase re-run fixes
- Analysts checkpoint: use any() instead of all() — Social Analyst is
  optional; all() silently blocked checkpoint saves in typical runs
- Checkpoint lookup: pass original flow_id through rerun_params so
  _date_root() resolves to the correct flow_id subdirectory
- Selective event filtering on re-run: preserves scan nodes and other
  tickers; only removes stale events for the re-run phase+ticker
- Frontend graph now shows full auto-flow context during phase re-runs

Documentation
- ADR 018: canonical reference for storage layout, event schema,
  WebSocket streaming flows, checkpoint structure, MongoDB vs local
- ADR 013 updated: reflects background-task + lazy-loading evolution
- ADR 015 marked superseded by ADR 018
- CLAUDE.md: AgentOS storage section + 4 new critical patterns
- CURRENT_STATE.md updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 11:12:16 +01:00
..
src feat: finalise storage layout, run history loading & phase-level re-run (#121) 2026-03-26 11:12:16 +01:00
README.md feat: initialize AgentOS observability foundation 2026-03-22 21:54:13 +01:00
index.html feat: implement AgentOS frontend and live backend integration 2026-03-22 22:12:33 +01:00
package-lock.json packages 2026-03-24 10:14:11 +01:00
package.json packages 2026-03-24 10:14:11 +01:00
postcss.config.js feat: implement AgentOS frontend and live backend integration 2026-03-22 22:12:33 +01:00
tailwind.config.js feat: implement AgentOS frontend and live backend integration 2026-03-22 22:12:33 +01:00
tsconfig.json feat: clickable terminal events, node inspector drawer, stop animation on complete, vite 8 2026-03-23 07:03:48 +00:00
tsconfig.node.json feat: clickable terminal events, node inspector drawer, stop animation on complete, vite 8 2026-03-23 07:03:48 +00:00
vite.config.ts feat: finalise storage layout, run history loading & phase-level re-run (#121) 2026-03-26 11:12:16 +01:00

README.md

AgentOS Frontend

This is a React-based observability dashboard for TradingAgents.

Tech Stack

  • Framework: React (Vite)
  • UI Library: Chakra UI
  • State Management: React Context / Hooks
  • Communication: Axios (REST) & WebSockets

Getting Started

  1. Initialize the project:

    npm create vite@latest . -- --template react-ts
    npm install @chakra-ui/react @emotion/react @emotion/styled flutter-framer-motion axios lucide-react
    
  2. Run the development server:

    npm run dev
    

Core Components Structure

  • src/components/CommandCenter/: The main terminal and agent map.
  • src/components/Portfolio/: Portfolio holdings and metrics.
  • src/hooks/useAgentStream.ts: Custom hook for WebSocket streaming.
  • src/context/AuthContext.tsx: Mock auth and multi-tenant support.