@@ -144,19 +144,20 @@ pub struct AcpClient {
144144 observer_agent_index : Option < usize > ,
145145 /// Best-effort context attached to raw ACP wire events.
146146 observer_context : ObserverContext ,
147- /// Goose-specific: most recently observed `_meta.goose.activeRunId` from
148- /// a `session/update` notification of kind `session_info_update`.
147+ /// Most recently observed `_meta.goose.activeRunId` from a
148+ /// `session/update` notification of kind `session_info_update`.
149149 ///
150- /// Goose emits this whenever it starts or clears an active prompt run
150+ /// Both goose and buzz-agent emit `session_info_update` with this field;
151+ /// goose emits it whenever it starts or clears an active prompt run
151152 /// (`crates/goose/src/acp/server.rs:2277` `send_active_run_update`).
152153 /// Required as `expectedRunId` when calling the non-standard
153154 /// `_goose/unstable/session/steer` method to inject a message into an
154155 /// in-flight turn without cancelling it.
155156 ///
156157 /// `None` until the first `session_info_update` arrives, or after the
157- /// run clears (goose emits `activeRunId: null` at end of turn). Other
158- /// agents will simply never populate this — readers must treat `None`
159- /// as "no active run to steer into" and fall back to cancel+merge.
158+ /// run clears (goose/buzz-agent emit `activeRunId: null` at end of turn).
159+ /// Other agents may leave this unset — readers must treat `None` as
160+ /// "no active run to steer into" and fall back to cancel+merge.
160161 active_run_id : Option < String > ,
161162 /// Per-turn channel for receiving goose-native non-cancelling steer
162163 /// requests from the main loop. Installed by
@@ -490,8 +491,9 @@ impl AcpClient {
490491 /// Most recently observed goose `_meta.goose.activeRunId` from a
491492 /// `session_info_update`, if any.
492493 ///
493- /// Goose-only: other agents leave this `None` for the lifetime of the
494- /// client. Read directly by `read_until_response_with_idle_timeout`'s
494+ /// Both goose and buzz-agent emit `session_info_update`; other agents
495+ /// leave this `None` for the lifetime of the client. Read directly by
496+ /// `read_until_response_with_idle_timeout`'s
495497 /// steer arm at write time (see [`crate::pool::SteerRequest`] for
496498 /// why the read loop owns this); production callers do not need this
497499 /// accessor. Kept as `pub` so tests can introspect the field.
@@ -1266,11 +1268,11 @@ impl AcpClient {
12661268 false
12671269 }
12681270 "session_info_update" => {
1269- // Goose-only as of writing: `_meta.goose.activeRunId` carries
1270- // the id of the currently-active prompt run, or `null` when
1271- // the run has cleared. Other agents don't emit this field;
1272- // for them `active_run_id` stays `None` and steer callers
1273- // will fall back to cancel+merge.
1271+ // Both goose and buzz-agent emit `session_info_update` with
1272+ // `_meta.goose.activeRunId`: the id of the currently-active
1273+ // prompt run, or `null` when the run has cleared. Other agents
1274+ // don't emit this field; for them `active_run_id` stays `None`
1275+ // and steer callers will fall back to cancel+merge.
12741276 //
12751277 // Per the ACP `SessionInfoUpdate` schema, `_meta` is a field
12761278 // on the update object itself — nested inside `update`, not
0 commit comments