fix(sessions): stop reporting a dispatched prompt that never landed
`prompt_async` answers 204 as soon as OpenCode forks the run and reports every later failure only on the session event stream, so an unusable model, agent, or variant produced a session with no message while the result still claimed `promptDispatched: true`. Validate an explicitly requested model, agent, and variant against the directory's own agent and provider lists before any session, worktree, or goal is created, and confirm a new user message actually reached the session before reporting the dispatch. A failed or empty lookup never turns a valid selection into a rejection.
This commit is contained in:
@@ -32,7 +32,15 @@ other.
|
||||
requires observed activity or a newly completed assistant message.
|
||||
- Timeout and cancellation are failures, never authoritative idle results.
|
||||
- Validation that protects side effects runs before session creation or
|
||||
dispatch.
|
||||
dispatch. An explicitly requested model, agent, or variant is checked against
|
||||
the directory's own OpenCode agent and provider lists before any session,
|
||||
worktree, or goal is created, because `prompt_async` accepts an unusable
|
||||
selection and then fails only on the event stream. A failed or empty lookup
|
||||
never turns a valid selection into a rejection.
|
||||
- `promptDispatched` reports an observed dispatch, never an accepted request.
|
||||
After `prompt_async` the service confirms a new user message reached the
|
||||
session; when it does not, the result reports `promptDispatched: false` with
|
||||
`promptError` instead of claiming success.
|
||||
- Send and fork dispatches without an explicit model/agent/variant reuse the
|
||||
target session's last user-message selection before falling back to the
|
||||
configured defaults; only session creation resolves defaults directly.
|
||||
|
||||
Reference in New Issue
Block a user