From 611f1656a3b30383fb3c555e8a443e6da9cfd9d8 Mon Sep 17 00:00:00 2001 From: Hare Date: Fri, 10 Jul 2026 03:58:45 +0900 Subject: [PATCH] profile: inherit default model for roles --- crates/workspace-server/src/hosts.rs | 14 +++++++++++++- resources/profiles/coder.dcdl | 24 +++++++++++++----------- resources/profiles/companion.dcdl | 24 +++++++++++++----------- resources/profiles/intake.dcdl | 24 +++++++++++++----------- resources/profiles/orchestrator.dcdl | 24 +++++++++++++----------- resources/profiles/reviewer.dcdl | 24 +++++++++++++----------- 6 files changed, 78 insertions(+), 56 deletions(-) diff --git a/crates/workspace-server/src/hosts.rs b/crates/workspace-server/src/hosts.rs index e7f7611c..a3c737b8 100644 --- a/crates/workspace-server/src/hosts.rs +++ b/crates/workspace-server/src/hosts.rs @@ -2755,10 +2755,18 @@ fn default_profile_source_archive( include_str!("../../../resources/profiles/reviewer.dcdl").to_string(), ); + let mut imports = BTreeMap::new(); + for slug in ["companion", "intake", "orchestrator", "coder", "reviewer"] { + imports.insert( + format!("profiles/{slug}.dcdl\0./default.dcdl"), + "profiles/default.dcdl".to_string(), + ); + } + ProfileSourceArchive::build(ProfileSourceArchiveInput { id: "builtin-decodal-profiles-v1".to_string(), entrypoints, - imports: BTreeMap::new(), + imports, sources, }) .map_err(|err| err.to_string()) @@ -3340,6 +3348,10 @@ mod tests { .resolve_profile(&selector_key, root.path(), "embedded-test-worker") .unwrap(); assert_eq!(manifest.worker.name, "embedded-test-worker"); + assert_eq!( + manifest.model.ref_.as_deref(), + Some("codex-oauth/gpt-5.5") + ); } } diff --git a/resources/profiles/coder.dcdl b/resources/profiles/coder.dcdl index 6e6e241b..c59288ec 100644 --- a/resources/profiles/coder.dcdl +++ b/resources/profiles/coder.dcdl @@ -1,12 +1,14 @@ -slug = "coder"; -description = "Ticket implementation coder profile."; -scope = "workspace_write"; +import "./default.dcdl" // { + slug = "coder"; + description = "Ticket implementation coder profile."; + scope = "workspace_write"; -feature = { - task = { enabled = true; }; - memory = { enabled = true; }; - web = { enabled = true; }; - workers = { enabled = false; }; - ticket = { enabled = false; access = "lifecycle"; }; - ticket_orchestration = { enabled = false; }; -}; + feature = { + task = { enabled = true; }; + memory = { enabled = true; }; + web = { enabled = true; }; + workers = { enabled = false; }; + ticket = { enabled = false; access = "lifecycle"; }; + ticket_orchestration = { enabled = false; }; + }; +} diff --git a/resources/profiles/companion.dcdl b/resources/profiles/companion.dcdl index e18736d9..2b0b6623 100644 --- a/resources/profiles/companion.dcdl +++ b/resources/profiles/companion.dcdl @@ -1,12 +1,14 @@ -slug = "companion"; -description = "Workspace companion profile."; -scope = "workspace_write"; +import "./default.dcdl" // { + slug = "companion"; + description = "Workspace companion profile."; + scope = "workspace_write"; -feature = { - task = { enabled = true; }; - memory = { enabled = true; }; - web = { enabled = true; }; - workers = { enabled = true; }; - ticket = { enabled = false; access = "lifecycle"; }; - ticket_orchestration = { enabled = false; }; -}; + feature = { + task = { enabled = true; }; + memory = { enabled = true; }; + web = { enabled = true; }; + workers = { enabled = true; }; + ticket = { enabled = false; access = "lifecycle"; }; + ticket_orchestration = { enabled = false; }; + }; +} diff --git a/resources/profiles/intake.dcdl b/resources/profiles/intake.dcdl index ae2c1d72..e4c7a799 100644 --- a/resources/profiles/intake.dcdl +++ b/resources/profiles/intake.dcdl @@ -1,12 +1,14 @@ -slug = "intake"; -description = "Ticket intake profile."; -scope = "workspace_write"; +import "./default.dcdl" // { + slug = "intake"; + description = "Ticket intake profile."; + scope = "workspace_write"; -feature = { - task = { enabled = false; }; - memory = { enabled = true; }; - web = { enabled = true; }; - workers = { enabled = false; }; - ticket = { enabled = true; access = "lifecycle"; }; - ticket_orchestration = { enabled = false; }; -}; + feature = { + task = { enabled = true; }; + memory = { enabled = true; }; + web = { enabled = true; }; + workers = { enabled = false; }; + ticket = { enabled = true; access = "lifecycle"; }; + ticket_orchestration = { enabled = false; }; + }; +} diff --git a/resources/profiles/orchestrator.dcdl b/resources/profiles/orchestrator.dcdl index 0012818c..c40224eb 100644 --- a/resources/profiles/orchestrator.dcdl +++ b/resources/profiles/orchestrator.dcdl @@ -1,12 +1,14 @@ -slug = "orchestrator"; -description = "Ticket orchestrator profile."; -scope = "workspace_write"; +import "./default.dcdl" // { + slug = "orchestrator"; + description = "Ticket orchestrator profile."; + scope = "workspace_write"; -feature = { - task = { enabled = true; }; - memory = { enabled = true; }; - web = { enabled = true; }; - workers = { enabled = true; }; - ticket = { enabled = true; access = "lifecycle"; }; - ticket_orchestration = { enabled = true; }; -}; + feature = { + task = { enabled = true; }; + memory = { enabled = true; }; + web = { enabled = true; }; + workers = { enabled = true; }; + ticket = { enabled = true; access = "lifecycle"; }; + ticket_orchestration = { enabled = true; }; + }; +} diff --git a/resources/profiles/reviewer.dcdl b/resources/profiles/reviewer.dcdl index 91c41e5c..732fb2a0 100644 --- a/resources/profiles/reviewer.dcdl +++ b/resources/profiles/reviewer.dcdl @@ -1,12 +1,14 @@ -slug = "reviewer"; -description = "Ticket review profile."; -scope = "workspace_read"; +import "./default.dcdl" // { + slug = "reviewer"; + description = "Ticket review profile."; + scope = "workspace_read"; -feature = { - task = { enabled = true; }; - memory = { enabled = true; }; - web = { enabled = true; }; - workers = { enabled = false; }; - ticket = { enabled = false; access = "lifecycle"; }; - ticket_orchestration = { enabled = false; }; -}; + feature = { + task = { enabled = true; }; + memory = { enabled = true; }; + web = { enabled = true; }; + workers = { enabled = false; }; + ticket = { enabled = false; access = "lifecycle"; }; + ticket_orchestration = { enabled = false; }; + }; +}