objective: add read tools
This commit is contained in:
@@ -85,6 +85,8 @@ pub struct FeatureConfigPartial {
|
||||
#[serde(default)]
|
||||
pub workers: Option<FeatureFlagConfigPartial>,
|
||||
#[serde(default)]
|
||||
pub objective: Option<FeatureFlagConfigPartial>,
|
||||
#[serde(default)]
|
||||
pub ticket: Option<TicketFeatureConfigPartial>,
|
||||
#[serde(default)]
|
||||
pub plugins: Option<FeatureFlagConfigPartial>,
|
||||
@@ -97,6 +99,11 @@ impl FeatureConfigPartial {
|
||||
memory: merge_option(self.memory, other.memory, MemoryFeatureConfigPartial::merge),
|
||||
web: merge_option(self.web, other.web, FeatureFlagConfigPartial::merge),
|
||||
workers: merge_option(self.workers, other.workers, FeatureFlagConfigPartial::merge),
|
||||
objective: merge_option(
|
||||
self.objective,
|
||||
other.objective,
|
||||
FeatureFlagConfigPartial::merge,
|
||||
),
|
||||
ticket: merge_option(self.ticket, other.ticket, TicketFeatureConfigPartial::merge),
|
||||
plugins: merge_option(self.plugins, other.plugins, FeatureFlagConfigPartial::merge),
|
||||
}
|
||||
@@ -169,6 +176,10 @@ impl From<FeatureConfigPartial> for FeatureConfig {
|
||||
.workers
|
||||
.map(FeatureFlagConfig::from)
|
||||
.unwrap_or_default(),
|
||||
objective: value
|
||||
.objective
|
||||
.map(FeatureFlagConfig::from)
|
||||
.unwrap_or_default(),
|
||||
ticket: value
|
||||
.ticket
|
||||
.map(TicketFeatureConfig::from)
|
||||
@@ -246,6 +257,7 @@ impl From<FeatureConfig> for FeatureConfigPartial {
|
||||
memory: Some(value.memory.into()),
|
||||
web: Some(value.web.into()),
|
||||
workers: Some(value.workers.into()),
|
||||
objective: Some(value.objective.into()),
|
||||
ticket: Some(value.ticket.into()),
|
||||
plugins: Some(value.plugins.into()),
|
||||
}
|
||||
@@ -1791,6 +1803,7 @@ worker_max_turns = 7
|
||||
assert!(!manifest.feature.memory.enabled);
|
||||
assert!(!manifest.feature.web.enabled);
|
||||
assert!(!manifest.feature.workers.enabled);
|
||||
assert!(!manifest.feature.objective.enabled);
|
||||
assert!(!manifest.feature.ticket.enabled);
|
||||
}
|
||||
|
||||
@@ -1842,6 +1855,7 @@ orchestration_control = false
|
||||
assert!(!manifest.feature.ticket.orchestration_control);
|
||||
assert!(!manifest.feature.memory.enabled);
|
||||
assert!(!manifest.feature.memory.staging);
|
||||
assert!(!manifest.feature.objective.enabled);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -1869,6 +1883,9 @@ orchestration_control = true
|
||||
[feature.memory]
|
||||
staging = true
|
||||
|
||||
[feature.objective]
|
||||
enabled = true
|
||||
|
||||
[feature.web]
|
||||
enabled = true
|
||||
"#,
|
||||
@@ -1906,6 +1923,7 @@ enabled = true
|
||||
assert!(manifest.feature.ticket.thread);
|
||||
assert!(!manifest.feature.ticket.intake);
|
||||
assert!(manifest.feature.ticket.orchestration_control);
|
||||
assert!(manifest.feature.objective.enabled);
|
||||
assert!(manifest.feature.web.enabled);
|
||||
assert!(!manifest.feature.workers.enabled);
|
||||
}
|
||||
|
||||
@@ -113,6 +113,8 @@ pub struct FeatureConfig {
|
||||
#[serde(default)]
|
||||
pub workers: FeatureFlagConfig,
|
||||
#[serde(default)]
|
||||
pub objective: FeatureFlagConfig,
|
||||
#[serde(default)]
|
||||
pub ticket: TicketFeatureConfig,
|
||||
#[serde(default)]
|
||||
pub plugins: FeatureFlagConfig,
|
||||
@@ -125,6 +127,7 @@ impl Default for FeatureConfig {
|
||||
memory: MemoryFeatureConfig::disabled(),
|
||||
web: FeatureFlagConfig::disabled(),
|
||||
workers: FeatureFlagConfig::disabled(),
|
||||
objective: FeatureFlagConfig::disabled(),
|
||||
ticket: TicketFeatureConfig::default(),
|
||||
plugins: FeatureFlagConfig::disabled(),
|
||||
}
|
||||
|
||||
@@ -962,6 +962,7 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||
value["feature"]["memory"] = serde_json::json!({ "enabled": true, "staging": true });
|
||||
value["feature"]["web"] = serde_json::json!({ "enabled": false });
|
||||
value["feature"]["workers"] = serde_json::json!({ "enabled": false });
|
||||
value["feature"]["objective"] = serde_json::json!({ "enabled": false });
|
||||
value["feature"]["ticket"] = serde_json::json!({ "enabled": false, "thread": false });
|
||||
Some(value)
|
||||
}
|
||||
@@ -987,6 +988,7 @@ fn builtin_default_profile_artifact() -> serde_json::Value {
|
||||
"memory": { "enabled": true },
|
||||
"web": { "enabled": true },
|
||||
"workers": { "enabled": true },
|
||||
"objective": { "enabled": true },
|
||||
"ticket": { "enabled": true, "authoring": true, "thread": true }
|
||||
},
|
||||
"memory": {
|
||||
@@ -1457,6 +1459,7 @@ mod tests {
|
||||
assert_eq!(resolved.manifest.worker.name, "arbitrary-worker-name");
|
||||
assert!(resolved.manifest.feature.memory.enabled);
|
||||
assert!(resolved.manifest.feature.memory.staging);
|
||||
assert!(!resolved.manifest.feature.objective.enabled);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -1484,6 +1487,7 @@ mod tests {
|
||||
assert!(companion.feature.ticket.enabled);
|
||||
assert!(companion.feature.ticket.authoring);
|
||||
assert!(companion.feature.ticket.thread);
|
||||
assert!(companion.feature.objective.enabled);
|
||||
assert!(!companion.feature.ticket.intake);
|
||||
assert!(!companion.feature.ticket.orchestration_control);
|
||||
assert_eq!(
|
||||
@@ -1510,6 +1514,7 @@ mod tests {
|
||||
assert!(intake.feature.ticket.enabled);
|
||||
assert!(intake.feature.ticket.authoring);
|
||||
assert!(intake.feature.ticket.thread);
|
||||
assert!(intake.feature.objective.enabled);
|
||||
assert!(intake.feature.ticket.intake);
|
||||
assert!(!intake.feature.ticket.orchestration_control);
|
||||
assert!(intake.scope.allow.is_empty());
|
||||
@@ -1525,6 +1530,7 @@ mod tests {
|
||||
assert!(orchestrator.feature.ticket.enabled);
|
||||
assert!(!orchestrator.feature.ticket.authoring);
|
||||
assert!(orchestrator.feature.ticket.thread);
|
||||
assert!(orchestrator.feature.objective.enabled);
|
||||
assert!(!orchestrator.feature.ticket.intake);
|
||||
assert!(orchestrator.feature.ticket.orchestration_control);
|
||||
assert!(orchestrator.scope.allow.is_empty());
|
||||
@@ -1548,6 +1554,7 @@ mod tests {
|
||||
assert!(coder.feature.ticket.enabled);
|
||||
assert!(!coder.feature.ticket.authoring);
|
||||
assert!(coder.feature.ticket.thread);
|
||||
assert!(coder.feature.objective.enabled);
|
||||
assert!(!coder.feature.ticket.intake);
|
||||
assert!(!coder.feature.ticket.orchestration_control);
|
||||
let reviewer = resolve("reviewer");
|
||||
@@ -1557,6 +1564,7 @@ mod tests {
|
||||
assert!(reviewer.feature.ticket.enabled);
|
||||
assert!(!reviewer.feature.ticket.authoring);
|
||||
assert!(reviewer.feature.ticket.thread);
|
||||
assert!(reviewer.feature.objective.enabled);
|
||||
assert!(!reviewer.feature.ticket.intake);
|
||||
assert!(!reviewer.feature.ticket.orchestration_control);
|
||||
assert!(reviewer.scope.allow.is_empty());
|
||||
|
||||
Reference in New Issue
Block a user