Repository navigation
feat(server): session-scoped elicitation sink for API/server runtimes (#3584) - #3625
Merged
Merged
Conversation
aheritier
force-pushed
the
feat/tui-background-elicitations
branch
from
July 15, 2026 19:33
d2926c8 to
4b4ed27
Compare
aheritier
force-pushed
the
feat/server-session-elicitation-sink
branch
from
July 15, 2026 19:33
85124bc to
836e723
Compare
aheritier
force-pushed
the
feat/server-session-elicitation-sink
branch
from
July 15, 2026 20:32
836e723 to
3c7d997
Compare
aheritier
force-pushed
the
feat/tui-background-elicitations
branch
from
July 15, 2026 20:47
af5ba07 to
f445d3e
Compare
aheritier
force-pushed
the
feat/server-session-elicitation-sink
branch
from
July 15, 2026 20:47
3c7d997 to
a91131a
Compare
aheritier
force-pushed
the
feat/server-session-elicitation-sink
branch
from
July 16, 2026 08:05
a91131a to
53f2f40
Compare
aheritier
marked this pull request as ready for review
July 16, 2026 08:07
melmennaoui
approved these changes
Jul 16, 2026
Sayt-0
approved these changes
Jul 16, 2026
Contributor
|
@aheritier some commits are not signed can you check ? |
dgageot
approved these changes
Jul 16, 2026
aheritier
force-pushed
the
feat/server-session-elicitation-sink
branch
from
July 16, 2026 10:04
53f2f40 to
affcf18
Compare
Register a session-scoped elicitation sink on every API/server runtime so that background elicitations are routed to a lazily-created session event log rather than being fast-declined by the headless path (which fires when no sink is registered). Previously only the TUI registered an OnElicitationRequest sink, meaning every API-created runtime had none. The headless elicitation handler therefore declined all background elicitations immediately, even when a remote SSE client could have answered them via `POST .../elicitation`. The session-scoped event log is now created on demand the first time an out-of-band event is raised, making the session's `GET .../events` stream replayable without requiring an attached `--listen` runtime. Tests pin the lazy-creation behaviour and confirm that repeated sink invocations accumulate events rather than overwriting an existing event log. Documentation is updated to reflect that `GET .../events` is also available for any API-created session that has raised at least one out-of-band event. Closes: #3584
aheritier
force-pushed
the
feat/server-session-elicitation-sink
branch
from
July 16, 2026 10:05
affcf18 to
6a685c8
Compare
social4hyq
pushed a commit
to social4hyq/homebrew-core
that referenced
this pull request
Sep 20, 2026
docker-agent 1.111.0 Created-by: HarmonybrewBot Commit-by: HarmonybrewBot Merged-by: HarmonybrewBot Description: Created by `brew bump` --- Created with `brew bump-formula-pr`.<details> <summary>release notes</summary> <pre>This release adds a new scheduler toolset, inline Mermaid diagram rendering, model switching in the lean TUI, project config autodiscovery, and a range of bug fixes and performance improvements across the agent, TUI, and server. ## What's New - Adds a built-in `scheduler` toolset with `create_schedule`, `list_schedules`, and `cancel_schedule` tools, enabling agents to schedule instructions to run once at a time, after a delay, or on a recurring interval - Adds prompt cache miss warnings via an opt-in `warn_on_cache_miss` user setting that emits notifications when cached input tokens are absent after the first session response - Adds inline Mermaid diagram rendering in the TUI - Adds model switching (`/model`) to the lean TUI and shares fuzzy model search between the lean and full TUIs - Adds autodiscovery of `docker-agent.yaml`, `docker-agent.yml`, and `docker-agent.hcl` project config files for no-argument local `docker agent run` - Surfaces background-job elicitation (user-input) requests in the TUI, ensuring each request opens exactly one dialog regardless of which runtime delivers it - Makes a custom `base_url` on a model automatically imply `bypass_models_gateway: true`, removing the need to set it explicitly ## Improvements - Improves session cost details in the TUI: aligns layout, color-codes cost percentages per message, groups averages together, and puts "Total" on its own line - Speeds up model switcher credential discovery by deduplicating credential names and resolving lookups concurrently, reducing model-picker latency - Parallelizes toolset startup and prefetches the MCP catalog off the load critical path, reducing agent startup time ## Bug Fixes - Fixes glob wildcard matching in permissions so `*` and `?` span path separators (`/`) in argument values such as file paths and URLs - Fixes a bug where setting `defer_all: true` on a toolset caused the toolset's custom `Instructions` to be permanently dropped from the agent's context - Fixes `SafetyPolicy` not persisting across turns, causing users to be re-prompted for tool approvals they had already opted into - Fixes background elicitations over the API so requests from concurrent background jobs are replayable and answerable instead of being auto-declined - Fixes Anthropic cache breakpoints exceeding the hard limit of 4 when deferred tools are present, which caused API errors at runtime - Fixes the TUI editor not regaining focus after external editing (`Ctrl+G`), which caused Enter to route to the transcript instead of sending the composed message - Fixes the scheduler schema so `type: scheduler` is accepted in agent config files (was previously rejected by JSON schema validation) - Fixes foreground elicitations being delivered twice into the app event stream - Fixes a mutex unlock in the scheduler's `setRuntime` method to use `defer` for safer lock release - Fixes VCR cassette path normalization for portable prompt-file matching - Fixes CI workflow YAML indentation that caused all CI runs to fail before any job could start ## Technical Changes - Adds `MapSlice` fan-out helper in the concurrent utilities package and uses it for parallel toolset operations - Serializes interactive OAuth flows across toolsets to prevent concurrent conflicts - Brings the documentation portal to WCAG 2.1 AA conformance across light and dark themes and adds a pa11y-ci CI gate to maintain it - Adds new documentation pages for the scheduler toolset, sandbox templates, custom commands, user settings, context and compaction guide, and fixes stale command syntax in the Named Commands docs --- ## What's Changed * docs: update CHANGELOG.md for v1.110.0 by @docker-read-write[bot] in docker/docker-agent#3665 * fix: repair CI workflow YAML and failing AgentsMd e2e test on main by @dgageot in docker/docker-agent#3666 * feat(tools): add "scheduler" toolset to run instructions on a time or recurring interval by @dwin-gharibi in docker/docker-agent#3632 * fix(config): add scheduler toolset to agent-schema.json type enum by @aheritier in docker/docker-agent#3670 * feat: custom base_url implies bypass_models_gateway by @dgageot in docker/docker-agent#3667 * feat: add prompt cache miss warnings by @rumpl in docker/docker-agent#3671 * Improve session cost details by @rumpl in docker/docker-agent#3672 * perf: speed up model switcher credential discovery by @rumpl in docker/docker-agent#3673 * Add model switching to the lean TUI by @rumpl in docker/docker-agent#3674 * feat(tui,app): surface & correlate background-job elicitations (#3584) by @aheritier in docker/docker-agent#3624 * chore: bump go-isatty, openai-go, and libopenapi by @dgageot in docker/docker-agent#3675 * ci: bump golangci-lint-action to v9.3.0 and fix DeferMutexUnlock lint offense by @dgageot in docker/docker-agent#3676 * ci: bump pinned actions to latest same-major versions by @dgageot in docker/docker-agent#3677 * feat(server): session-scoped elicitation sink for API/server runtimes (#3584) by @aheritier in docker/docker-agent#3625 * Render Mermaid diagrams inline by @rumpl in docker/docker-agent#3679 * fix(server): surface background elicitations over API by @Sayt-0 in docker/docker-agent#3678 * fix(teamloader): preserve deferred toolset instructions by @Piyush0049 in docker/docker-agent#3680 * fix(permissions): match glob wildcards across path separators by @parveshsaini in docker/docker-agent#3605 * docs(agents): fix stale command syntax and sub_agents claim in Named Commands by @aheritier in docker/docker-agent#3684 * docs(sandbox): document Docker Sandboxes integration and published sbx templates by @aheritier in docker/docker-agent#3682 * docs: surface orphan pages and add compaction, commands, and user-settings docs by @aheritier in docker/docker-agent#3683 * fix(docs): WCAG 2.1 AA accessibility remediation for the docs portal by @aheritier in docker/docker-agent#3687 * fix(tui): refocus the editor after external editing so Enter sends the content by @dgageot in docker/docker-agent#3690 * Implements the path-aware, two-tier documentation accessibility CI gate by @aheritier in docker/docker-agent#3691 * feat(run): autodiscover project agent config by @HajimohammadiNet in docker/docker-agent#3681 * perf: parallelize toolset startup and prefetch MCP catalog by @dgageot in docker/docker-agent#3688 * fix(anthropic): keep cache breakpoints within Anthropic's limit of 4 with deferred tools by @dgageot in docker/docker-agent#3692 * fix(docs): render --link-hover on light-mode callout-link hover by @aheritier in docker/docker-agent#3693 * build(deps): bump the pip group across 1 directory with 2 updates by @dependabot[bot] in docker/docker-agent#3697 * fix(session): persist SafetyPolicy across turns by @trungutt in docker/docker-agent#3685 ## New Contributors * @parveshsaini made their first contribution in docker/docker-agent#3605 * @HajimohammadiNet made their first contribution in docker/docker-agent#3681 **Full Changelog**: docker/docker-agent@v1.110.0...v1.111.0 </pre> <p>View the full release notes at <a href="https://github.com/docker/docker-agent/releases/tag/v1.111.0">https://github.com/docker/docker-agent/releases/tag/v1.111.0</a>.</p> </details> <hr> See merge request: Harmonybrew/homebrew-core!14465
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.
feat(server): session-scoped elicitation sink for API/server runtimes (#3584)
Summary
Lets elicitation (user-input) requests raised by API/server-created runtimes — including background jobs — reach a connected client, instead of being misclassified as headless and silently fast-declined. Part 4 (top) of the #3584 stack.
Stacked on the TUI/app PR — review the diff against that branch.
What changed
runtimeForSessionregisters a per-sessionOnElicitationRequestsink that appends elicitation events to a lazily created session event log, replayable viaGET /api/sessions/:id/events./eventsstream receivessession_exitedand terminates rather than blocking forever./eventsout-of-band elicitation flow on API-created sessions, and the answer-vs-raise wording on the POST endpoint.Testing
/eventsstream; server-side background elicitations surface instead of fast-declining.task dev+-race— green.