- Replace global update_research_team_status() with local buf calls
(was updating CLI's global buffer, not analysis-specific one)
- Add replay buffer: all events stored in memory per analysis
- Support ?last_event=N query param for reconnection replay
- Send event IDs so browser can track position
- Mark analysis as done so replay works after completion
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Railway kills idle connections after ~30s. During long LLM calls
between agent stages, the SSE stream goes silent and gets dropped.
Now sends heartbeat events every 15s to keep the connection alive.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Swap Chainlit chatbot UI for a minimal FastAPI service with:
- POST /analyze to start analysis
- GET /analyze/{id}/stream for SSE progress events
- GET /health for Railway healthcheck
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces the barebones web UI with one that mirrors the CLI:
- Agent status table with team/agent/status tracking
- Reuses CLI's MessageBuffer, update_analyst_statuses, classify_message_type
- Shows full debate transcripts (Bull/Bear, Risk team)
- Live stats (LLM calls, tokens, elapsed time)
- Collapsible Steps for each phase with full report content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The old model ID claude-sonnet-4-5-20241022 returns 404. Updated to
the current claude-sonnet-4-6 for the deep thinking model.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a Chainlit-based web interface that wraps TradingAgentsGraph,
streaming analyst reports, research debates, and final decisions
to the browser in real-time. Configured for Anthropic Claude models.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>