From 1d548afd73436a5f25873d9fd779e96d65a5778b Mon Sep 17 00:00:00 2001 From: Barry Cape Date: Fri, 19 Jun 2026 11:23:23 -0400 Subject: [PATCH 1/3] fix(broker): record workspace_id from agent registration response MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Read `workspace_id` from the registration response at both register sites instead of hardcoding `None`, so a join-by-key session records the real workspace instead of the "ws_unknown" fallback — with no extra request. Bumps the `relaycast` SDK to pick up the new field. Requires a published `relaycast` crate that includes `workspace_id` on `CreateAgentResponse` / `Agent` (AgentWorkforce/relaycast#201); the pinned version may need adjusting to whatever release carries it. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/broker/Cargo.toml | 2 +- crates/broker/src/relaycast/auth.rs | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index 9de4398cb..9df397cb9 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -29,7 +29,7 @@ serde_json = "1.0" sha2 = "0.10" shlex = "1.3" thiserror = "2.0" -relaycast = "=3.0.0" +relaycast = "=4.0.0" tokio = { version = "1.44", features = ["full"] } tracing = "0.1" tracing-appender = "0.2" diff --git a/crates/broker/src/relaycast/auth.rs b/crates/broker/src/relaycast/auth.rs index a44fc4814..d5dbaead1 100644 --- a/crates/broker/src/relaycast/auth.rs +++ b/crates/broker/src/relaycast/auth.rs @@ -703,7 +703,7 @@ impl AuthClient { result.id, result.name, result.token, - None, // workspace_id not returned in CreateAgentResponse + result.workspace_id, )); } @@ -721,7 +721,7 @@ impl AuthClient { result.id, result.name, result.token, - None, // workspace_id not returned in CreateAgentResponse + result.workspace_id, )); } Err(RelayError::Api { code, status, .. }) @@ -1068,13 +1068,16 @@ mod tests { unsafe { std::env::set_var("AGENT_RELAY_WORKSPACE_KEY", "rk_live_env"); } + // The register response now carries workspace_id, so a join-by-key + // session records the real workspace instead of the "ws_unknown" + // fallback — no extra lookup required. let register = server.mock(|when, then| { when.method(POST) .path("/v1/agents") .header("authorization", "Bearer rk_live_env"); then.status(200) .header("content-type", "application/json") - .body(r#"{"ok":true,"data":{"id":"a2","name":"lead","token":"at_live_2","status":"online","created_at":"2025-01-01T00:00:00Z"}}"#); + .body(r#"{"ok":true,"data":{"id":"a2","workspace_id":"ws_env","name":"lead","token":"at_live_2","status":"online","created_at":"2025-01-01T00:00:00Z"}}"#); }); let client = AuthClient::new(server.base_url()); @@ -1082,6 +1085,7 @@ mod tests { let session = client.startup_session(Some("lead")).await.unwrap(); assert_eq!(session.token, "at_live_2"); assert_eq!(session.credentials.api_key, "rk_live_env"); + assert_eq!(session.credentials.workspace_id, "ws_env"); register.assert_hits(1); unsafe { From 48b0c10eb09c5b2a82629ea3c3d87fc39d46c458 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 19 Jun 2026 15:24:31 +0000 Subject: [PATCH 2/3] style: auto-format Rust code with cargo fmt --- crates/broker/src/relaycast/auth.rs | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/crates/broker/src/relaycast/auth.rs b/crates/broker/src/relaycast/auth.rs index d5dbaead1..2ea73dac0 100644 --- a/crates/broker/src/relaycast/auth.rs +++ b/crates/broker/src/relaycast/auth.rs @@ -699,12 +699,7 @@ impl AuthClient { .register_or_get_agent(request) .await .map_err(relay_error_to_anyhow)?; - return Ok(( - result.id, - result.name, - result.token, - result.workspace_id, - )); + return Ok((result.id, result.name, result.token, result.workspace_id)); } loop { @@ -717,12 +712,7 @@ impl AuthClient { match relay.register_agent(request).await { Ok(result) => { - return Ok(( - result.id, - result.name, - result.token, - result.workspace_id, - )); + return Ok((result.id, result.name, result.token, result.workspace_id)); } Err(RelayError::Api { code, status, .. }) if is_conflict_code(&code) || status == 409 => From f570b9a6e889ebb0c5d45538d3f2575b8ade84a1 Mon Sep 17 00:00:00 2001 From: Will Washburn Date: Mon, 22 Jun 2026 22:54:07 -0400 Subject: [PATCH 3/3] fix(broker): bump relaycast to 4.1.1 for workspace_id field The published relaycast 4.0.0 did not carry workspace_id on CreateAgentResponse, breaking the broker build. 4.1.1 (already on main) ships the field, so pin to it. --- crates/broker/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index 9df397cb9..c656e6650 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -29,7 +29,7 @@ serde_json = "1.0" sha2 = "0.10" shlex = "1.3" thiserror = "2.0" -relaycast = "=4.0.0" +relaycast = "=4.1.1" tokio = { version = "1.44", features = ["full"] } tracing = "0.1" tracing-appender = "0.2"