From 83bda3dfb237af60c2ab00e3b5bc4f43acb67f25 Mon Sep 17 00:00:00 2001 From: Hare Date: Wed, 26 Aug 2026 22:06:34 +0900 Subject: [PATCH] fix: restore companion subworker control --- crates/manifest/src/profile.rs | 6 ++++-- crates/worker/src/controller.rs | 8 -------- crates/workspace-server/src/hosts.rs | 2 ++ resources/profiles/companion.dcdl | 1 - 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/crates/manifest/src/profile.rs b/crates/manifest/src/profile.rs index 83576db3..b7494ce6 100644 --- a/crates/manifest/src/profile.rs +++ b/crates/manifest/src/profile.rs @@ -946,7 +946,7 @@ fn apply_role_profile( value["feature"]["sub_worker"] = serde_json::json!({ "enabled": sub_worker }); value["feature"]["flow"] = serde_json::json!({ "enabled": slug == "coder" }); value["feature"]["worker"] = serde_json::json!({ - "enabled": matches!(slug, "companion" | "orchestrator"), + "enabled": slug == "orchestrator", "direct_spawn": slug != "orchestrator" }); value["feature"]["manage_workdir"] = serde_json::json!({ @@ -1408,7 +1408,7 @@ mod tests { } #[test] - fn builtin_companion_can_manage_workdirs() { + fn builtin_companion_uses_sub_worker_control_without_worker_control() { let tmp = TempDir::new().unwrap(); let resolved = ProfileResolver::new() .with_workspace_base(tmp.path()) @@ -1419,6 +1419,8 @@ mod tests { .unwrap(); assert!(resolved.manifest.feature.manage_workdir.enabled); + assert!(resolved.manifest.feature.sub_worker.enabled); + assert!(!resolved.manifest.feature.worker.enabled); } #[test] diff --git a/crates/worker/src/controller.rs b/crates/worker/src/controller.rs index 11570500..8e538bb3 100644 --- a/crates/worker/src/controller.rs +++ b/crates/worker/src/controller.rs @@ -983,14 +983,6 @@ where if feature_config.sub_worker.enabled { worker.register_worker_orchestration_instruction(); - if !feature_config.worker.enabled { - feature_registry.add_module( - crate::feature::builtin::manage_worker::sub_worker_control_feature( - worker.workspace_client_handle(), - spawned_registry.clone(), - ), - ); - } } let host_worker_observation_provider = worker.worker_observation_provider(); diff --git a/crates/workspace-server/src/hosts.rs b/crates/workspace-server/src/hosts.rs index 7eab485b..6ff649e7 100644 --- a/crates/workspace-server/src/hosts.rs +++ b/crates/workspace-server/src/hosts.rs @@ -4409,6 +4409,8 @@ mod tests { .resolve_profile("builtin:companion", root.path(), "embedded-test-companion") .unwrap(); assert!(companion.feature.manage_workdir.enabled); + assert!(companion.feature.sub_worker.enabled); + assert!(!companion.feature.worker.enabled); } #[test] diff --git a/resources/profiles/companion.dcdl b/resources/profiles/companion.dcdl index 3a6732b6..d3720e3a 100644 --- a/resources/profiles/companion.dcdl +++ b/resources/profiles/companion.dcdl @@ -8,7 +8,6 @@ import "./base.dcdl" // { memory = { enabled = true; }; web = { enabled = true; }; sub_worker = { enabled = true; }; - worker = { enabled = true; }; manage_workdir = { enabled = true; }; ticket = { enabled = true; authoring = true; thread = true; }; };