Repository navigation
Tags
Tags
v2.2.0 — Security hardening, language support, VAD tuning, reindex en… …dpoint - Rate limiting on all API routes (/api/mcp, /api/stop-conversation) - INVITE_SECRET opt-in auth on /api/invite-agent - REINDEX_SECRET opt-in auth on /api/reindex - DOCS_LANGUAGE env var for multi-language STT (36 languages via Deepgram) - VAD_SPEECH_THRESHOLD, VAD_INTERRUPT_MS, VAD_SILENCE_MS for voice tuning - POST /api/reindex webhook — invalidates index + URL cache, warms rebuild - TODO.md reduced to only items requiring external infrastructure
v2.1.0 — MCP doc retrieval Major architectural change: - Per-turn doc retrieval via MCP (Model Context Protocol) - No OPENAI_API_KEY required — Agora manages the LLM - Token cost reduced from ~30K to ~10.5K per turn - MCP endpoint secured with MCP_SECRET - Pre-built MiniSearch index for fast cold starts - Rate limiting on all API routes
perf: production hardening — rate limiting, pre-built search index, R… …AG tuning - Add sliding-window rate limiter (lib/rate-limit.ts); 5/min on agent starts, 30/min on token generation — both with Retry-After headers - Pre-build MiniSearch index at deploy time (scripts/build-search-index.mjs) so cold starts load a JSON file instead of scanning all Markdown; runtime fast-path via MiniSearch.loadJSON, falls back to in-memory build - Reduce base doc load 280K → 120K chars (~30K → ~30K tokens) and URL cap 160K → 80K; leaves ~98K tokens free for conversation history - Fix token renewal: was making two identical fetches; buildTokenWithRtm issues a combined RTC+RTM token so one fetch is enough - Add AGORA_AREA env var (US/EU/AP/CN) instead of hardcoded Area.US in invite-agent and stop-conversation routes - Stable transcript message keys: add id field with useRef counter instead of array-index key; fixes potential React reconciliation issues - Prebuild + predev npm scripts run the index builder automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: remove duplicate links and skip greeting link fetch - searchDocsForLinks: dedupe by title in addition to filePath so two files with the same title only produce one chip - DocConversation: skip /api/search-links for the first agent message (always a greeting — searching it returns generic junk links) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>