Repository navigation
fix(dsh): retain and recover timed Ask User questions - #32
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Timed Ask User questions could disappear from Orbis when DSH's unattended deadline fired: the adapter only retained a foreground waterfall promise and ignored native wait claims and durable continued-question state. The phone now holds the native wait while it owns the question, and reconnecting or restarting the plugin restores continued questions with stable request IDs. Late answers use DSH's native question service and inbox, including PTC sub-calls; queued or claimed replies cannot be submitted twice.
Foreground ownership, question mapping, and durable recovery have separate responsibilities. The mobile subscription documentation is corrected, and a patch changeset is included.
Validation:
0.2.0-rc.2, the built plugin, real encrypted pairing/transport, and official deterministic LLM replay passed three UI scenarios: question continued before opening the phone chat; question held for 13 seconds while the chat stayed open despite a 2-second unattended timeout; and terminate/relaunch/reopen while pending. Each displayed the question, accepted the UI answer once, cleared native pending state, and completed the assistant response. The timed tool was explicitly enabled in the native standard preset.e2e:realpassed: native Agent/Bash execution, live/cursor streaming, no-ACK delivery, process restart, cold projection, and full history. Host identity rotation was not exercised because the isolated credential plugin did not persist a file-backed.env. The keyless overlay now disables plugins by their IDs, removing a stale provider-name guard.pnpm run checkin the public workspace passed (release checks and all core packages).pnpm run check:dshpassed: publishable bundle, production/test typechecks, and 186 tests. Six new native-service regression tests cover wait retention, disconnect/restart recovery, late replies, PTC calls, discard/admission, and unsupported continued cancellation; host transport coverage also exercises snapshot and reply RPCs.git diff --checkpassed. Private rootbun run checkremains blocked by existing mobile-test type-aware lint errors (unresolved@/imports and Jest globals).DSH's current API cannot transfer a still-open question already owned by the desktop, and indefinite questions have no durable continued state. Continued questions support answering/skipping, not cancellation. This repairs the confirmed timed-question gap. Simulator UI is verified, but the reporter's exact TestFlight build and physical phone have not been reproduced, so the issue remains open for that follow-up.
Refs #29