Skip to content

feat(remote-dsh): queue next-run prompts and tolerate empty reasoning blocks - #30

Merged
icodesign merged 1 commit into
mainfrom
feat/remote-dsh-next-run-empty-reasoning
Oct 6, 2026
Merged

icodesign merged 1 commit into
mainfrom
feat/remote-dsh-next-run-empty-reasoning

Conversation

@icodesign

Copy link
Copy Markdown
Owner

Summary

Next-run queue and withdrawal

  • Add next_run prompt delivery: a prompt sent while a run is active is held by the driver and started as a new run once the active run completes.
  • Add orbis.sessions.withdrawQueuedInput so a held input can be withdrawn before it starts.
  • The DSH driver advertises the prompt.next_run and prompt.queue.withdraw capabilities.

Empty text/reasoning blocks

  • Skip empty text and reasoning blocks when projecting DSH messages; a block without a string text is still a protocol error.
  • DSH keeps these blocks so replayState.blocks stays index-aligned. deepseek-v4-flash at low reasoning effort returns { type: "reasoning", text: "" } with a signature-only replay entry.
  • Previously this failed orbis.sessions.sync with DSH reasoning block is invalid. Opening the session failed, and a turn never settled on mobile. This is the issue reported by a DSH Android user, and it reproduces on 0.2.0-rc.2.

The changeset bumps @orbisapp/remote-dsh as a minor release.

Compatibility

Older Orbis apps reject a driver that reports capabilities they don't know (Driver capabilities contains an unknown capability). After this release, mobile builds made before the next-run client changes cannot connect to an updated plugin until they update too.

Test plan

  • pnpm run check:core: release checks; backend 21, transport 63, protocol 35, node-store 4, and remote-dsh core 77 tests pass.
  • pnpm run check:dsh: bundle, typechecks, and 27 files / 180 tests pass. New tests cover a recorded signature-only reasoning message and a reasoning block missing text.
  • Projected the real failing session log (25 events) with the fixed adapter; no errors.
  • Real device: an Android dev build against serve:dsh on DSH 0.2.0-rc.2. The stuck session synced and later turns completed.

🤖 Generated with Claude Code

… blocks

Add `next_run` prompt delivery and queued-input withdrawal across the
backend contract, v2 protocol, and DSH adapter. The DSH driver holds a
prompt sent while a run is active and starts it as a new run afterwards;
a held input can be withdrawn through `orbis.sessions.withdrawQueuedInput`.

Skip empty text and reasoning blocks when projecting DSH messages. DSH
keeps them so `replayState.blocks` stays index-aligned, and DeepSeek at
low reasoning effort returns a signature-only reasoning block; rejecting
it failed `orbis.sessions.sync` for the whole session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@icodesign
icodesign merged commit 05c2a37 into main Oct 6, 2026
5 checks passed
@icodesign
icodesign deleted the feat/remote-dsh-next-run-empty-reasoning branch October 6, 2026 14:26
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.

1 participant