flow: own worker flow state in runtime sessions
This commit is contained in:
@@ -85,6 +85,8 @@ pub struct FeatureConfigPartial {
|
||||
#[serde(default)]
|
||||
pub sub_worker: Option<FeatureFlagConfigPartial>,
|
||||
#[serde(default)]
|
||||
pub flow: Option<FeatureFlagConfigPartial>,
|
||||
#[serde(default)]
|
||||
pub worker: Option<FeatureFlagConfigPartial>,
|
||||
#[serde(default)]
|
||||
pub objective: Option<FeatureFlagConfigPartial>,
|
||||
@@ -107,6 +109,7 @@ impl FeatureConfigPartial {
|
||||
other.sub_worker,
|
||||
FeatureFlagConfigPartial::merge,
|
||||
),
|
||||
flow: merge_option(self.flow, other.flow, FeatureFlagConfigPartial::merge),
|
||||
worker: merge_option(self.worker, other.worker, FeatureFlagConfigPartial::merge),
|
||||
objective: merge_option(
|
||||
self.objective,
|
||||
@@ -190,6 +193,7 @@ impl From<FeatureConfigPartial> for FeatureConfig {
|
||||
.sub_worker
|
||||
.map(FeatureFlagConfig::from)
|
||||
.unwrap_or_default(),
|
||||
flow: value.flow.map(FeatureFlagConfig::from).unwrap_or_default(),
|
||||
worker: value
|
||||
.worker
|
||||
.map(FeatureFlagConfig::from)
|
||||
@@ -279,6 +283,7 @@ impl From<FeatureConfig> for FeatureConfigPartial {
|
||||
memory: Some(value.memory.into()),
|
||||
web: Some(value.web.into()),
|
||||
sub_worker: Some(value.sub_worker.into()),
|
||||
flow: Some(value.flow.into()),
|
||||
worker: Some(value.worker.into()),
|
||||
objective: Some(value.objective.into()),
|
||||
manage_workdir: Some(value.manage_workdir.into()),
|
||||
|
||||
@@ -113,6 +113,8 @@ pub struct FeatureConfig {
|
||||
#[serde(default)]
|
||||
pub sub_worker: FeatureFlagConfig,
|
||||
#[serde(default)]
|
||||
pub flow: FeatureFlagConfig,
|
||||
#[serde(default)]
|
||||
pub worker: FeatureFlagConfig,
|
||||
#[serde(default)]
|
||||
pub objective: FeatureFlagConfig,
|
||||
@@ -131,6 +133,7 @@ impl Default for FeatureConfig {
|
||||
memory: MemoryFeatureConfig::disabled(),
|
||||
web: FeatureFlagConfig::disabled(),
|
||||
sub_worker: FeatureFlagConfig::disabled(),
|
||||
flow: FeatureFlagConfig::disabled(),
|
||||
worker: FeatureFlagConfig::disabled(),
|
||||
objective: FeatureFlagConfig::disabled(),
|
||||
manage_workdir: FeatureFlagConfig::disabled(),
|
||||
|
||||
@@ -912,7 +912,7 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
);
|
||||
Some(value)
|
||||
}
|
||||
@@ -999,6 +999,7 @@ fn apply_role_profile(
|
||||
value["feature"]["memory"] = serde_json::json!({ "enabled": memory });
|
||||
value["feature"]["web"] = serde_json::json!({ "enabled": web });
|
||||
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") });
|
||||
value["feature"]["manage_workdir"] = serde_json::json!({ "enabled": slug == "orchestrator" });
|
||||
@@ -1530,7 +1531,8 @@ mod tests {
|
||||
|
||||
let coder = resolve("coder");
|
||||
assert!(coder.feature.task.enabled);
|
||||
assert!(!coder.feature.sub_worker.enabled);
|
||||
assert!(coder.feature.sub_worker.enabled);
|
||||
assert!(coder.feature.flow.enabled);
|
||||
assert!(!coder.feature.worker.enabled);
|
||||
assert!(coder.scope.allow.is_empty());
|
||||
assert!(coder.delegation_scope.allow.is_empty());
|
||||
@@ -1548,6 +1550,7 @@ mod tests {
|
||||
let reviewer = resolve("reviewer");
|
||||
assert!(reviewer.feature.task.enabled);
|
||||
assert!(!reviewer.feature.sub_worker.enabled);
|
||||
assert!(!reviewer.feature.flow.enabled);
|
||||
assert!(!reviewer.feature.worker.enabled);
|
||||
assert!(reviewer.feature.ticket.enabled);
|
||||
assert!(reviewer.feature.ticket.enabled);
|
||||
|
||||
Reference in New Issue
Block a user