Commit Graph
33 Commits
Author SHA1 Message Date
RRRosmontis cde6979f2d feat: resilient delivery, live progress visibility, TG-side answering, /stop /mission /new
Delivery & visibility:
- per-chunk retry with capped backoff on rich/HTML sends; rich failure now
  falls back to HTML instead of dropping the reply
- typing heartbeat: refresh sendChatAction every 4s for the whole turn
  (a single action expires in ~5s, long turns looked dead)
- turn/end error / abort / crash-recovery notices reach Telegram
  (API failures were previously invisible)
- tool/call progress summaries, tool/result failure notices, todo progress
- thinking indicator (one notice per reasoning phase, status only)
- notices prefixed '> ' render as Telegram blockquotes; plain-text fallback
- non-text messages get a hint instead of being silently dropped
- busy feedback: a followup queued mid-turn gets an explicit ack

TG-side answering (dual-path race; UI path untouched, first answer wins):
- ask_user_question questions render with letter options on TG; reply A /
  [A] / A,B (multi) / free text / '1: A' per-line for multi-question
- approval requests (approval/request waterfall) answerable from TG:
  [A] allow once / [B] reject; /cancel closes only the TG side

Commands: /stop (cancel current turn), /mission (todo snapshot + busy state),
/new (create a session in the current workspace and attach)

Persistence: chat→session bindings stored at $DSH_HOME/
telegram-channel-bindings.json (override: DSH_TELEGRAM_BINDINGS_FILE) and
restored on start — hot reloads and restarts no longer drop attachments.

Host seams without public surface yet are reached with documented structural
casts (userQuestions provider wrap, approval/request waterfall).

Tests: 41/41 pass. Two pre-existing environment failures in bridge.test.ts
(/last history mirror, assistant mirror) now pass: the former was fixed by
the rich→HTML fallback, the latter needed an event-loop flush after the
(void) listener call since resilient delivery lengthens the chain.
2026-09-01 16:06:00 +08:00
93f3bec975 feat: use Telegram native Rich Message for assistant replies
Co-authored-by: MuziIsabel <MuziIsabel@users.noreply.github.com>
2026-08-18 18:27:32 +08:00
owoandCursor 819010de1c fix: stabilize /model reasoning-effort selection (v0.3.5)
Keep pending model outside the picker map, omit undefined reasoningEffort in selectModel payload, auto-apply single-effort models, and surface RPC errors.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 22:41:43 +08:00
owoandCursor fb5a334edb feat: /last and bind button for previous Q/A context (v0.3.4)
After attaching a session, show a button and /last command that load the latest human/assistant turn via session.history so phone users can continue with context.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 20:25:07 +08:00
owoandCursor 3566df945b fix: warn when /sessions falls back to live-only list (v0.3.3)
Phone showed 2 sessions because apiProxy catalog failed (pre-0.3.2 inject bug) and live-agent fallback hid cold Web sessions. Surface that mode explicitly.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 20:22:20 +08:00
owoandCursor 5dbe833205 fix: resolve apiProxy via ctx.get for /model (v0.3.2)
Cordis throws on ctx.apiProxy without inject; use ctx.get and declare apiProxy inject so catalog and model APIs work under dsh web.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 20:20:55 +08:00
owoandCursor f433cce24d fix: approve git installs with pnpm repo-level allowBuilds
pnpm 11 no longer accepts package-name-only allowBuilds for github: deps; write the stable git+https key and strip auto-placeholders so one-click install works.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 19:08:44 +08:00
owoandCursor ef0e7f34e3 feat: workspace→session picker and /model switch (v0.3.0)
Align Telegram session list with Web via apiProxy (exclude archived), resume cold sessions on bind, and allow model selection from the phone.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:46:56 +08:00
owoandCursor 9bae1a3702 docs: add hero flowchart as repository main image
Place the product flow diagram at the top of the README for GitHub preview.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:35:21 +08:00
owoandCursor 30d350b923 docs: add mobile and desktop sync screenshots
Show /sessions picker + same-trajectory reply on Telegram and DSH Web.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:18:22 +08:00
owoandCursor 82b56c5dce chore: bump version to 0.2.3
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:11:03 +08:00
owoandCursor c6125807f7 fix: show session title and workspace in /sessions picker
Read cwd from session.header (not only meta) and title from sessionTitle service or session/title events; list details in the message body and richer inline buttons.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:10:43 +08:00
owoandCursor 4bd3832858 docs: add prerequisites and community discoverability section
Document dsh/Node/Telegram requirements (no Python) and the dsh-plugin topic listing path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:06:04 +08:00
owoandCursor 96c46bcb87 fix: irm|iex-safe install.ps1 via scriptblock wrapper
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 18:00:37 +08:00
owoandCursor c71fc916f3 docs: note install.ps1 is irm|iex compatible
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:59:55 +08:00
owoandCursor 7d43bc0cf5 fix: wrap manager in scriptblock so irm|iex works
Invoke-Expression rejects top-level param()/CmdletBinding; install.ps1 now runs & { ... } @args.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:59:40 +08:00
owoandCursor 5da901711d fix: make irm|iex bootstrap download manage.ps1
Top-level param()/CmdletBinding breaks Invoke-Expression; install.ps1 is now a thin launcher.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:57:21 +08:00
owoandCursor 4ac16aa82f feat: turn installer into number menu with start/stop/status
Open install.ps1/sh to choose install, start dsh web in a new window, stop listeners, status, or open the browser.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:53:22 +08:00
owoandCursor f8501a92f8 docs: clarify install.ps1 must run in PowerShell, not CMD
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:47:53 +08:00
owoandCursor 7e839240da docs: point example folder at one-click installer
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:46:15 +08:00
owoandCursor a83af2f33c Simplify install with one-click scripts; honor HTTP(S)_PROXY for Telegram.
Add install.ps1/install.sh, shrink README to script-first flow, register bot commands, and route API calls through undici EnvHttpProxyAgent when a proxy is set (v0.2.2).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:46:01 +08:00
owoandCursor 8ef1622822 fix: ship prebuilt lib and drop prepare for one-click git install
Avoids pnpm allowBuilds block on dsh plugin add; README install steps expanded for first-time users.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:16:25 +08:00
owoandCursor c2c0db7597 feat: remote-control live DSH Web sessions from Telegram
Attach via /sessions picker instead of creating parallel agents; mirror the same session trajectory to phone and Web (Codex-style remote).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 17:11:13 +08:00
owoandCursor dd72f134fb docs: bilingual README with discoverability keywords; fix install URLs for hi-wenw
Remove unpublished phrasing; document mobile/telegram/bot/remove/clear search terms.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:48:53 +08:00
owoandCursor 3a0e73a5bb docs: add open-box install guide and example patch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:38:31 +08:00
owoandCursor 0a4847d955 fix: wire pollingTimeoutSec from config to TelegramClient
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:33:08 +08:00
owoandCursor 27f02b7460 feat: wire Cordis apply lifecycle with soft-fail token check
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:30:48 +08:00
owoandCursor cdfe81cd9e fix: harden bridge session matching and error handling
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:26:06 +08:00
owoandCursor 2b800da381 feat: bridge Telegram updates to harness agents
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:22:46 +08:00
owoandCursor 4a9a41484e feat: add Telegram Bot API fetch client with token redaction
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:08:12 +08:00
owoandCursor db09bc6327 feat: add auth gate and Chinese command parsing
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:04:38 +08:00
owoandCursor a070a77e6b feat: add Telegram HTML format and split helpers
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:00:59 +08:00
owoandCursor f9d8ae7c6f chore: scaffold dsh-telegram-channel package
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 15:57:41 +08:00