Move speech and transcription internals into the audio domain, restore template-driven transcription providers, and regenerate Swagger/SDK so the frontend can stop hand-calling /transcription-* APIs.
* feat: expand speech provider support with new client types and configuration schema
* feat: add icon support for speech providers and update related configurations
* feat: add SVG support for Deepgram and Elevenlabs with Vue components
* feat: except *-speech client type in llm provider
* feat: enhance speech provider functionality with advanced settings and model import capabilities
* chore: remove go.mod replace
* feat: enhance speech provider functionality with advanced settings and model import capabilities
* chore: update go module dependencies
---------
Co-authored-by: Acbox <acbox0328@gmail.com>
Give bots their known per-channel account handles in the system prompt so they can reason about platform-specific self references consistently. Reuse persisted channel self_identity data across chat, discuss, schedule, heartbeat, and subagent prompts.
Emit tool-call placeholders as soon as tool input streaming starts so long writes appear immediately in chat. Reuse the same UI tool message when full input arrives to avoid duplicate cards, and keep the hook-required test suite green.
- Add POST /bots/:bot_id/sessions/:session_id/compact endpoint for
synchronous context compaction with fallback to chat model when no
dedicated compaction model is configured
- Add "Compact Now" button to session info panel in the web UI
- Add /compact slash command for triggering compaction from chat
- Regenerate OpenAPI spec and TypeScript SDK
SQL queries (CountProviders, CountModels, ListModels, ListEnabledModels,
ListModelsByProviderID) now exclude speech types. Added IsLLMClientType
guard to prevent cross-domain queries via /models?client_type and
/providers/:id/import-models. Frontend provider forms no longer offer
edge-speech as a client type option.
Also fixed pre-existing SA5011 staticcheck warnings in proxy_test.go
and executor_test.go.
The per-bot context_token_budget column was unused (no frontend UI) and
has been removed. Context trimming now derives the budget from the chat
model's context_window setting, which is already configured per model.