GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — feat: let web UI chats ask questions without ending the turn by ibetitsmike · Pull Request #31310 · coder/coder Conversation
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: 6b48421c38
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
905fb04 to
f7d3973
Compare
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Here are some automated review suggestions for this pull request.
Reviewed commit: f7d3973a2f
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
@codex review |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Documentation CheckBlocking
Suggestions this round (non-blocking), as inline comments:
Design notes
Findings for agents- id: learner-1 persona: learner class: suggestion blocking: false file: docs/coder-agents/architecture.md line: 157 quote: "`propose_plan` and `ask_user_question` are exposed while plan mode is active." evidence: - docs/coder-agents/architecture.md:163-168 - coderd/x/chatd/turn_environment.go:724-728 rule: null problem: A reader can briefly conclude ask_user_question is plan-mode-only from this grouped sentence, corrected only eight lines later. fix: "`propose_plan` is exposed only while plan mode is active. `ask_user_question` is exposed in plan mode, and also outside plan mode in chats created from the Coder dashboard." verified: true - id: learner-2 persona: learner class: suggestion blocking: false file: docs/coder-agents/architecture.md line: 167 quote: "Coder also sends the chat owner a web push notification when such a question opens." evidence: - coderd/x/chatd/turn_environment.go:1224-1225 - coderd/x/chatd/chatd.go:2682 rule: null problem: The unqualified claim overstates a guaranteed delivery when web push is not configured. fix: "When web push notifications are enabled, Coder also sends the chat owner a push notification when such a question opens." verified: true Automated review via Coder Agents. Reply to a finding's thread with the reason if the finding is wrong. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
1dc6bce to
8addf7d
Compare
Outside plan mode, root chats created from the web UI get an async ask_user_question. The call returns at once with an "async" marker, the agent keeps working, and the answer arrives later as a user message whose first line names the call. The chat owner gets one web push per question, sent only after the step that holds the result commits. Options now carry only a label: the schema asks for one short, complete answer and drops the description field. Plan mode and chats created through the API keep the blocking tool. Refs CODAGT-1460
…label-only question options without a placeholder
…label-only question options with a story
… sees The paragraph said the answer names the tool call, which only holds once the web UI adds the call line later in the stack, and it described the tool's call mechanics instead of what happens in the chat.
…raph This page's tools table and the paragraph above name each tool, so the paragraph about ask_user_question names it too. The only wrong claim was that the answer names the tool call, which the web UI does not do until later in the stack.
8addf7d to
563300c
Compare
…an mode This PR exposes ask_user_question outside plan mode in dashboard chats, so the tools table and the plan mode note no longer call it plan-mode-only. The architecture page names Coder as the actor.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| | `ask_user_question` | Asks the user structured clarification questions. | | ||
|
|
||
| `propose_plan` and `ask_user_question` are only exposed while plan mode is active. | ||
| `propose_plan` and `ask_user_question` are exposed while plan mode is active. |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This grouped sentence states that propose_plan and ask_user_question are exposed while plan mode is active, but the next paragraph (163-168) makes clear ask_user_question is also exposed outside plan mode for dashboard chats. A reader who reads the tools column and this sentence first can briefly conclude ask_user_question is plan-mode-only, and is only corrected eight lines later. Since the two tools no longer share the same availability, consider splitting the sentence so the dashboard case is clear at first mention (Newcomer).
| `propose_plan` and `ask_user_question` are exposed while plan mode is active. | |
| `propose_plan` is exposed only while plan mode is active. `ask_user_question` is exposed in plan mode, and also outside plan mode in chats created from the Coder dashboard. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| In chats created from the Coder dashboard, Coder also exposes `ask_user_question` outside plan mode. | ||
| There it returns at once, and the agent keeps working. | ||
| The answer arrives later as a user message. | ||
| Coder also sends the chat owner a web push notification when such a question opens. |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This states the chat owner gets a web push notification as a certainty, but delivery is best-effort and config-dependent: dispatchQuestionPush returns immediately when web push is not configured, and delivery runs in the background. A reader who configures no web push (or has no push subscription) gets no notification and has no way to know why. Consider qualifying it (Newcomer).
| Coder also sends the chat owner a web push notification when such a question opens. | |
| When web push notifications are enabled, Coder also sends the chat owner a push notification when such a question opens. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Approving. The chatd side and the overall direction look good to me.
This stack is based on e746555 (6 Nov). I merged the steer stack (CODAGT-1140) on 9 Nov, after this stack was cut, and it made steer the default busy_behavior for chat messages. So this one's on me.
What that changes for this stack:
submitChatTurn with no busy_behavior (handleSendAskUserQuestionResponse in AgentChatPage.tsx), and on main an empty busy_behavior now means steer. After a rebase, an answer sent while the agent works reaches the model before its next model call in the same turn. It no longer waits for the turn to end.docs/coder-agents/index.md conflicts). The frontend PRs conflict with the steer queue code in chatQueueReconciliation.ts and chatStore.ts, and #31294 changes the "Send now" path, which the steer stack redesigned.Could we rebase the whole stack onto current main, update the PR body, and re-run the "answer while the agent works" UAT with steer before any of it merges? Steer should make this feature better, since an answer can now change the running turn instead of arriving after it.
Generated by an agent on behalf of the user
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
A thought on the ask_user_question descriptions in chattool/askuserquestion.go. It is a direction to consider, not a required change.
The async description is 815 characters, and about half of it repeats text that the model already sees elsewhere:
status already tells the model not to wait and to continue with other work, and it gives the answer prefix with the call ID.header, question and 2 to 4 options, and the handler rejects any other count.label description already says how to write an option.Could the descriptions carry only what the model needs before it calls the tool, and leave the rest to the schema and the result? That is: what the tool does, when to use it, that the answer arrives later, and that a new question replaces an unanswered one. Guidance that matters only after the call, such as "if you cannot continue, end your turn", could live in the status text. The model reads it at the moment it decides whether to stop, and it costs tokens only in chats that call the tool. The last two sentences of the plan mode description repeat the schema in the same way.
For scale, Codex's async equivalent (request_user_input_async) is about 560 characters, and its blocking request_user_input is about 120. A rough cut along these lines puts the async description near 320 characters.
If the option guidance is repeated because models ignored the label description without it, that is a good reason to keep it. Nobody has run an eval on either wording, so this is about less repetition, not a proven improvement.
Generated by an agent on behalf of the user
Sorry, something went wrong.
There was an error while loading. Please reload this page.
9e7a2487
Deployed
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.