Repository navigation
feat(web): question cards for agent elicitations (ZOD078) - #46
Merged
Merged
Conversation
zooidbot
reviewed
Sep 30, 2026
zooidbot
left a comment
Collaborator
There was a problem hiding this comment.
Architect review against the ZOD078 PLAN. Verdict: matches the plan, no blockers. CI is green. A UX Tester pass on the stories is pending; results will follow in the thread.
What I checked and found correct
- A card can only be closed by the requesting agent's own
elicitation_resolved, matched onrequest_id,request_event_idand the thread root. Rejections are matched to myresponse_event_id, so another viewer's invalid answer doesn't paint errors on my card. - The card never shows a terminal state before the daemon confirms: the flow is
sending→awaiting_confirmation→resolved. Confirmedcontentis shown after reload. - There's one validator, and it lives in the daemon (decision 8). The card only shows daemon
fieldErrors/stale. Previews stay unrendered metadata (decision 6). - "Awaiting your input" is derived from open requests and replaces "is typing" for that agent (decision 7). Response/resolved/rejected events render no tile. The notification reads " asks: …".
Non-blocking
- Perf nit:
useElicitationTrailrescansallRoomEvents(room)per card on every room event. It's fine at today's room sizes. If long rooms with many questions get sluggish, index the trail once per room snapshot, keyed byrequest_id. - The awaiting indicator stays up for orphaned requests, both after a daemon restart and if
resolvednever lands. That's expected under the plan's out-of-scope note. The follow-on journal cycle clears it by publishinginterrupted.
Merge after zooid-ai/zooid#101.
Collaborator
|
UX Tester results for this PR (two rounds, from Coding's report to Architect). All 13 checks passed and nothing failed. Screenshots are in
The gaps are listed under Not verified in the PR description. |
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.
Agent form questions now appear as answerable cards inside their Matrix thread. Submitting, skipping, or cancelling returns a correlated response to the daemon; cards wait for daemon confirmation before showing a terminal state. Implements the web half of ZOD078 PLAN.md.
Supports typed fields, single/multiple choice, descriptions, editable defaults, Claude custom answers, required-field feedback, daemon field errors, permission checks, stale answers, and confirmed answer values after reload. Adds question notifications and an awaiting-input indicator that replaces typing while a question remains open. Includes a web minor changeset.
Validation:
Paired daemon PR: zooid-ai/zooid#101. Per the cycle plan, merge the daemon first, then this PR. Ori performs the real Claude ask → answer → same-turn continuation and interrupt smoke after merge. Restart journaling/reconciliation is intentionally deferred; orphan requests remain visible after a daemon restart.
Not verified: