Pending AskUserQuestions: park + external answer side-channel #19

Merged
ClaudiuSchuster merged 1 commit from oss-oo/dispatch-questions-ions20260924 into main 2026-09-24 18:25:25 +00:00
Owner

AskUserQuestion tool calls arrive as interaction/requestUserInput client requests (verified against the installed zcode.cjs; full forensics in docs/PROTOCOL.md). The dispatcher now parks them into the result JSON and questions/<session>.pending.json, and forwards an external <session>.answer.json to the newest re-announce envelope (~1 s) — the turn continues exactly like a desktop-clicked answer.

  • ZCODE_DISPATCH_ANSWERABLE=1 (set by the observatory steer console): runtime preferences answer askUserQuestionAutoResolutionEnabled: false → no 5-minute empty-answer deadline; the parked question waits for the external answer. Default keeps unattended behavior; an external answer still wins inside the window.
  • Stale re-announces after our own answer are dropped; side-channel files cleaned on answer, turn end, timeout, exit (dispatcherPid identifies SIGKILL leftovers).
  • ZCODE_DISPATCH_CONFIG_DIR overrides the config/stream dir in dispatch.py + stream.py (tests and fixtures stop touching the live ~/.config/zcode-dispatch).
  • Offline functional test (fake-server question mode) covers park, answer, forward, prefs, cleanup.

Gates: make functional green locally (3/3), pinned Super-Linter slim-v8.7.0 EXIT 0 with the CI linter set. Consumer PR (observatory question cards + answering UI + steer queue-until-idle) follows on top of this.

AskUserQuestion tool calls arrive as `interaction/requestUserInput` client requests (verified against the installed zcode.cjs; full forensics in docs/PROTOCOL.md). The dispatcher now parks them into the result JSON and `questions/<session>.pending.json`, and forwards an external `<session>.answer.json` to the newest re-announce envelope (~1 s) — the turn continues exactly like a desktop-clicked answer. - `ZCODE_DISPATCH_ANSWERABLE=1` (set by the observatory steer console): runtime preferences answer `askUserQuestionAutoResolutionEnabled: false` → no 5-minute empty-answer deadline; the parked question waits for the external answer. Default keeps unattended behavior; an external answer still wins inside the window. - Stale re-announces after our own answer are dropped; side-channel files cleaned on answer, turn end, timeout, exit (`dispatcherPid` identifies SIGKILL leftovers). - `ZCODE_DISPATCH_CONFIG_DIR` overrides the config/stream dir in dispatch.py + stream.py (tests and fixtures stop touching the live `~/.config/zcode-dispatch`). - Offline functional test (fake-server question mode) covers park, answer, forward, prefs, cleanup. Gates: `make functional` green locally (3/3), pinned Super-Linter slim-v8.7.0 EXIT 0 with the CI linter set. Consumer PR (observatory question cards + answering UI + steer queue-until-idle) follows on top of this.
Pending AskUserQuestions: park + external answer side-channel
All checks were successful
Checks / Functional checks (pull_request) Successful in 39s
68248d0bf9
AskUserQuestion tool calls arrive as interaction/requestUserInput client
requests. The dispatcher now parks them (result JSON pendingQuestion +
questions/<session>.pending.json) and forwards an external answer file
(<session>.answer.json) to the newest re-announce envelope within ~1 s,
so the turn continues exactly like a desktop-clicked answer.

ZCODE_DISPATCH_ANSWERABLE=1 answers runtime preferences with
askUserQuestionAutoResolutionEnabled false — the app-server's 5-minute
empty-answer auto-resolution is off and a parked question waits for the
external answer; the default keeps today's unattended behavior (an
external answer still wins inside the window). Stale re-announces after
our own answer are dropped; side-channel files are cleaned on answer,
turn end, timeout, and exit (dispatcherPid identifies SIGKILL leftovers).

ZCODE_DISPATCH_CONFIG_DIR now overrides the config/stream dir for both
dispatch.py and stream.py (tests and fixture runs stop touching the live
~/.config/zcode-dispatch). Offline functional test covers park, answer,
forward, prefs, and cleanup via a new fake-server question mode.

Protocol forensics (registry, wire schemas, timings, DB part shapes,
desktop non-answerability) documented in docs/PROTOCOL.md.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OSS-Singularity/zcode-dispatch!19
No description provided.