Repository navigation
feat(acp): adopt schema 1.18.0 with skills, prompt suggestions and speed category - #499
Merged
Merged
Conversation
The connection driver moved the caller's closure through five nested futures and reserved room for it in each. The `connect_with` future therefore grew by five times whatever the closure captured. A closure that captured a v2 `initialize` request and response made it large enough for `clippy::large_futures` to ask callers to box it. Box the `connect_with` closure and its future, and the `with_spawned` task. The connection future now holds captured state at most once. This costs two small allocations per connection. - tests/jsonrpc_connection_builder.rs checks that the future no longer multiplies captured state. - The conductor's v2 initialization tests drop the `Box::pin` wrappers they needed around `connect_with`.
…eed category Bump agent-client-protocol-schema to 1.18.0 (schemas v1.32.0 / v2.0.0-alpha.16). Add three features, each included in `unstable`: - `unstable_prompt_suggestions` forwards the `prompt_suggestions_update` session update and the client's `session.promptSuggestions` capability in v1 and v2. - `unstable_agent_skills` forwards `skill` command entries, `skill` content blocks and their capabilities. They exist in v2 only. - `unstable_speed_config_category` forwards the `speed` config option category. The schema bump also: - Adds the v2 `replay_complete` session update. Testy v2 and the `simple_agent_v2` example send it after a requested replay, also for an empty history, and never without `replayFrom`. The `v2_session_coordination` example uses it to tell replayed history from live updates. - Makes subagents part of v2 without `unstable_subagents`. - Adds `configOptions` on `session/fork` under `unstable_session_fork` and `unstable_session_options`. - Removes the `file` plan type under `unstable_plan_operations` and adds `path` on markdown plans. `InitializeOutcome` allows `clippy::large_enum_variant`, which the larger v2 `InitializeResponse` now triggers. - tests/schema_1_18.rs covers the new wire shapes, and the plan, subagent and Testy v2 tests follow the changes above. - md/protocol-v2.md gains a Schema 1.18 section with the new agent and client rules. It no longer says unknown command types may be shown as plain commands. md/features.md describes the new features.
benbrandt
enabled auto-merge (squash)
November 14, 2026 15:35
benbrandt
force-pushed
the
schema-1.18.0
branch
from
November 14, 2026 15:36
8be9a7c to
b1c4f47
Compare
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.
Bumps
agent-client-protocol-schemato 1.18.0 (schemas v1.32.0 / v2.0.0-alpha.16).Added
unstable:unstable_prompt_suggestions: theprompt_suggestions_updatesession update and the client'ssession.promptSuggestionscapability, in v1 and v2.unstable_agent_skills:skillcommand entries,skillcontent blocks, and thesession.prompt.skillandsession.commands.skillcapabilities. v2 only.unstable_speed_config_category: thespeedconfig option category.replay_completein v2 (SessionUpdate::ReplayComplete).unstable_subagents:subagent_update,session_message,session_message_chunk, theunknownstate,subagentbackground work, andsessiontool call content. v1 still needs the feature.configOptionsonsession/fork, underunstable_session_forkandunstable_session_options.Changed
simple_agent_v2example sendreplay_completeafter a requested replay, also for an empty history, and never withoutreplayFrom. Thev2_session_coordinationexample uses it to tell replayed history from live updates.unstable_plan_operations: thefileplan type is gone, soPlanFileandPlanUpdateContent::fileno longer exist. Markdown plans take an optionalpathinstead.InitializeOutcomeallowsclippy::large_enum_variant, which the larger v2InitializeResponsenow triggers.Connection future size
The first commit is independent of the schema bump.
connect_withmoved the caller's closure through five nested futures and reserved room for it in each, so the returned future grew by five times whatever the closure captured. With the larger 1.18 initialize types, a closure that captured a v2initializerequest and response went over theclippy::large_futuresthreshold, and callers would have had to box the future themselves.connect_withnow boxes the closure and its future, andwith_spawnedboxes its task. Sizes in bytes on aarch64 macOS withunstableandunstable_protocol_v2:connect_with, nothing capturedconnect_withcapturing a v2 initialize request and responsewith_spawnedcapturing 1000 bytesThis costs two small allocations per connection. A test in
tests/jsonrpc_connection_builder.rschecks that captured state is no longer multiplied, and the conductor's v2 initialization tests drop theBox::pinwrappers they needed aroundconnect_with.Tests and docs
tests/schema_1_18.rscovers the new wire shapes. The plan, subagent and Testy v2 tests follow the changes above.md/protocol-v2.mdgains a Schema 1.18 section with the new agent and client rules. It no longer says unknown command types may be shown as plain commands, because the spec now forbids showing them as slash commands.md/features.mddescribes the new features.The other spec prose changes in this release (idempotent
auth/logout,-32602for a repeatedtool_call/cancelorterminal/cancel,thought_levelvalue ordering) needed no SDK code changes. The Schema 1.18 section lists them.just test,cargo clippy --all-targets --all-features, the wasm clippy commands from CI andcargo fmt --checkpass.