From 5d4deb258abb55fc675112b2345e32aebcd742b7 Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 1 Aug 2026 19:34:50 +0900 Subject: [PATCH] server: expose subscription runtime catalog --- crates/workspace-server/src/runtime_subscription.rs | 12 ++++++++++++ .../src/runtime_subscription_tests.rs | 1 + 2 files changed, 13 insertions(+) diff --git a/crates/workspace-server/src/runtime_subscription.rs b/crates/workspace-server/src/runtime_subscription.rs index 94002e5f..69b178ee 100644 --- a/crates/workspace-server/src/runtime_subscription.rs +++ b/crates/workspace-server/src/runtime_subscription.rs @@ -200,6 +200,18 @@ impl RuntimeSubscriptionBroker { } } + pub fn runtime_ids(&self) -> Vec { + let mut runtime_ids = self + .registrations + .read() + .expect("broker registry poisoned") + .keys() + .cloned() + .collect::>(); + runtime_ids.sort(); + runtime_ids + } + pub fn status(&self, runtime_id: &str) -> Option { let status = self .registrations diff --git a/crates/workspace-server/src/runtime_subscription_tests.rs b/crates/workspace-server/src/runtime_subscription_tests.rs index 78a53ab0..48a2287e 100644 --- a/crates/workspace-server/src/runtime_subscription_tests.rs +++ b/crates/workspace-server/src/runtime_subscription_tests.rs @@ -283,6 +283,7 @@ async fn embedded_runtime_uses_in_process_subscription_source() { let worker = runtime.list_workers().unwrap().remove(0); let broker = RuntimeSubscriptionBroker::new("local"); broker.register_embedded_runtime("embedded-worker-runtime", runtime.clone()); + assert_eq!(broker.runtime_ids(), vec!["embedded-worker-runtime"]); let mut subscription = broker .subscribe( "embedded-worker-runtime",