Skip to content

fix: refine RFD child models after a load, and retry a failed model update - #1434

Merged
nikita-ashihmin merged 1 commit into
agentclientprotocol:mainfrom
nikita-ashihmin:nikita.ashikhmin/subagent-model-rfd-refine
Oct 26, 2026
Merged

nikita-ashihmin merged 1 commit into
agentclientprotocol:mainfrom
nikita-ashihmin:nikita.ashikhmin/subagent-model-rfd-refine

Conversation

@nikita-ashihmin

Copy link
Copy Markdown
Collaborator

Summary

Follow-up to #1433, which was merged before these review fixes landed.

  • RFD child models after a load. On a real session/load (session not live in this process), fix: do not hold an AIR load replay until the CLI starts #1433 also gave RfdSubagentReplay no model list, so after the load response currentStates could not map a child's model to the root session's model entry. RFD children kept the raw model ID. The replay now reads the session's models when needed; only the in-replay mapping is off while the load replays.
  • Retry after a failed publish. reportModel skipped a model that matched the stored options, which are written before the publish. A failed publish then blocked every later report of the same model. It now compares with the last model the client actually received.
  • Failed load replay. The replayed child models are also dropped when the replay itself fails.
  • The buffer of an unannounced child collapses only model reports from reportModel; other config updates stay as they are.

Tests

  • replayRfd gained a load option that replays like a real load; "sends the model of each child's responses, and after the load response only a changed entry" uses it (fails without the fix).
  • A retry after a failed publish, for the RFD and AIR forms.
  • "refines an ended AIR child's model" now goes through the load path.
  • npm run build, npm run check, npm run test:run: 3323 passed, 30 skipped.

Related

…pdate

- RFD: a load replay maps no model to the session's model list, which the
  CLI start brings later. The replay now still gets the session's models,
  so the current states after the load response map each child's model
  to the root entry, as before agentclientprotocol#1433.
- `reportModel` skips a model only when the client got it. A publication
  that failed does not block the next report.
- A failed load replay also forgets its replayed AIR child models.
- The buffer of a child that is not announced collapses only the model
  reports of `reportModel`. Any other configuration update waits as it is.
@nikita-ashihmin
nikita-ashihmin merged commit 9a8bf71 into agentclientprotocol:main Oct 26, 2026
2 checks passed
benbrandt pushed a commit that referenced this pull request Oct 26, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.96.0](v0.95.0...v0.96.0)
(2026-10-26)


### Features

* report SendMessage delegations as linked session messages
([#1424](#1424))
([739dde3](739dde3))
* report the model of each native subagent
([#1432](#1432))
([c319e5e](c319e5e))


### Bug Fixes

* do not hold an AIR load replay until the CLI starts
([#1433](#1433))
([eb9d63e](eb9d63e))
* refine RFD child models after a load, and retry a failed model update
([#1434](#1434))
([9a8bf71](9a8bf71))
* send subagents' current state after a load response
([#1423](#1423))
([17a967b](17a967b))
* update to Claude Code 2.1.310
([#1435](#1435))
([2f3c6bb](2f3c6bb))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant