Skip to content

feat: DeepSeek provider support and Telegram reply threading with edit-in-place tool status#45

Merged
jasonli0226 merged 2 commits into
mainfrom
feat/deepseek-provider-and-telegram-threading
Jun 5, 2026
Merged

feat: DeepSeek provider support and Telegram reply threading with edit-in-place tool status#45
jasonli0226 merged 2 commits into
mainfrom
feat/deepseek-provider-and-telegram-threading

Conversation

@jasonli0226

@jasonli0226 jasonli0226 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Summary

DeepSeek as a first-class provider

  • Register DeepSeek in the shared provider registry (model prefixes, DEEPSEEK_API_KEY, default base URL/model, pricing)
  • Route deepseek through OpenAIProvider with the DeepSeek base URL
  • Surface DeepSeek in provider-config env sync, prisma seed, the interactive installer, .env.example, and README docs (also marks Gemini/Kimi as Available)

Telegram reply threading + edit-in-place tool status

  • New reply_to_mode channel config (off / first / all, default first) — outbound responses thread back to the user's original message via reply_parameters, with allow_sending_without_reply for resilience when the anchor is deleted
  • ChannelAdapter.sendMessage now returns the platform message id; new optional editMessage implemented by Telegram (editMessageText with MarkdownV2/plain-text fallbacks)
  • Message router consolidates consecutive tool-progress bubbles into a single status message edited in place; adapters without editMessage (web, WhatsApp) transparently fall back to appending new messages
  • Outbound metadata is now typed via OutboundMessageMetadata

- Register DeepSeek in the shared provider registry with model
  prefixes, env key, default base URL/model, and pricing
- Route 'deepseek' through OpenAIProvider with the DeepSeek base URL
- Surface DeepSeek in provider-config env sync, prisma seed, the
  interactive installer, .env.example, and README provider docs
- Mark Gemini and Kimi as Available in the README provider table
- Add reply_to_mode (off/first/all, default first) to the Telegram
  adapter, mapping the inbound message id to reply_parameters with
  allow_sending_without_reply for resilience
- Type outbound metadata via OutboundMessageMetadata and thread
  replyToMessageId from the message router on all response sends
- Change ChannelAdapter.sendMessage to return the platform message id
  and add optional editMessage; Telegram implements it via
  editMessageText with MarkdownV2/plain-text fallbacks
- Consolidate consecutive tool-progress bubbles in the router by
  editing one status message in place, falling back to fresh sends
  for adapters without editMessage (web, WhatsApp)
@jasonli0226 jasonli0226 merged commit 5c5b194 into main Jun 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants