profile: inherit ticket tools across roles
This commit is contained in:
parent
5f651755d8
commit
23234b96ca
|
|
@ -895,7 +895,6 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
false,
|
|
||||||
);
|
);
|
||||||
Some(value)
|
Some(value)
|
||||||
}
|
}
|
||||||
|
|
@ -909,7 +908,6 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
true,
|
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
Some(value)
|
Some(value)
|
||||||
|
|
@ -925,7 +923,6 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
true,
|
|
||||||
);
|
);
|
||||||
Some(value)
|
Some(value)
|
||||||
}
|
}
|
||||||
|
|
@ -940,7 +937,6 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
|
||||||
);
|
);
|
||||||
Some(value)
|
Some(value)
|
||||||
}
|
}
|
||||||
|
|
@ -955,7 +951,6 @@ fn builtin_profile_artifact(label: &str) -> Option<serde_json::Value> {
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
|
||||||
);
|
);
|
||||||
Some(value)
|
Some(value)
|
||||||
}
|
}
|
||||||
|
|
@ -1009,19 +1004,16 @@ fn apply_role_profile(
|
||||||
memory: bool,
|
memory: bool,
|
||||||
web: bool,
|
web: bool,
|
||||||
workers: bool,
|
workers: bool,
|
||||||
ticket: bool,
|
|
||||||
ticket_orchestration: bool,
|
ticket_orchestration: bool,
|
||||||
) {
|
) {
|
||||||
value["slug"] = serde_json::Value::String(slug.to_string());
|
value["slug"] = serde_json::Value::String(slug.to_string());
|
||||||
value["description"] = serde_json::Value::String(description.to_string());
|
value["description"] = serde_json::Value::String(description.to_string());
|
||||||
value["feature"] = serde_json::json!({
|
value["feature"]["task"] = serde_json::json!({ "enabled": task });
|
||||||
"task": { "enabled": task },
|
value["feature"]["memory"] = serde_json::json!({ "enabled": memory });
|
||||||
"memory": { "enabled": memory },
|
value["feature"]["web"] = serde_json::json!({ "enabled": web });
|
||||||
"web": { "enabled": web },
|
value["feature"]["workers"] = serde_json::json!({ "enabled": workers });
|
||||||
"workers": { "enabled": workers },
|
value["feature"]["ticket_orchestration"] =
|
||||||
"ticket": { "enabled": ticket, "access": "lifecycle" },
|
serde_json::json!({ "enabled": ticket_orchestration });
|
||||||
"ticket_orchestration": { "enabled": ticket_orchestration }
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reject_manifest_shaped_profile(value: &serde_json::Value) -> Result<(), ProfileError> {
|
fn reject_manifest_shaped_profile(value: &serde_json::Value) -> Result<(), ProfileError> {
|
||||||
|
|
@ -1441,12 +1433,13 @@ mod tests {
|
||||||
let companion = resolve("companion");
|
let companion = resolve("companion");
|
||||||
assert!(companion.feature.task.enabled);
|
assert!(companion.feature.task.enabled);
|
||||||
assert!(companion.feature.workers.enabled);
|
assert!(companion.feature.workers.enabled);
|
||||||
assert!(!companion.feature.ticket.enabled);
|
|
||||||
assert!(companion.scope.allow.is_empty());
|
assert!(companion.scope.allow.is_empty());
|
||||||
assert!(companion.scope.deny.is_empty());
|
assert!(companion.scope.deny.is_empty());
|
||||||
assert!(companion.delegation_scope.allow.is_empty());
|
assert!(companion.delegation_scope.allow.is_empty());
|
||||||
assert_eq!(companion.model.ref_.as_deref(), Some("codex-oauth/gpt-5.5"));
|
assert_eq!(companion.model.ref_.as_deref(), Some("codex-oauth/gpt-5.5"));
|
||||||
assert!(companion.web.is_some());
|
assert!(companion.web.is_some());
|
||||||
|
assert!(companion.feature.ticket.enabled);
|
||||||
|
assert!(!companion.feature.ticket_orchestration.enabled);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
companion.compaction.as_ref().unwrap().threshold,
|
companion.compaction.as_ref().unwrap().threshold,
|
||||||
Some(240000)
|
Some(240000)
|
||||||
|
|
@ -1497,11 +1490,14 @@ mod tests {
|
||||||
assert_eq!(coder.model.ref_.as_deref(), Some("codex-oauth/gpt-5.5"));
|
assert_eq!(coder.model.ref_.as_deref(), Some("codex-oauth/gpt-5.5"));
|
||||||
assert!(coder.web.is_some());
|
assert!(coder.web.is_some());
|
||||||
assert!(coder.compaction.is_some());
|
assert!(coder.compaction.is_some());
|
||||||
|
assert!(coder.feature.ticket.enabled);
|
||||||
|
assert!(!coder.feature.ticket_orchestration.enabled);
|
||||||
|
|
||||||
let reviewer = resolve("reviewer");
|
let reviewer = resolve("reviewer");
|
||||||
assert!(reviewer.feature.task.enabled);
|
assert!(reviewer.feature.task.enabled);
|
||||||
assert!(!reviewer.feature.workers.enabled);
|
assert!(!reviewer.feature.workers.enabled);
|
||||||
assert!(!reviewer.feature.ticket.enabled);
|
assert!(reviewer.feature.ticket.enabled);
|
||||||
|
assert!(!reviewer.feature.ticket_orchestration.enabled);
|
||||||
assert!(reviewer.scope.allow.is_empty());
|
assert!(reviewer.scope.allow.is_empty());
|
||||||
assert!(reviewer.delegation_scope.allow.is_empty());
|
assert!(reviewer.delegation_scope.allow.is_empty());
|
||||||
assert_eq!(reviewer.model.ref_.as_deref(), Some("codex-oauth/gpt-5.5"));
|
assert_eq!(reviewer.model.ref_.as_deref(), Some("codex-oauth/gpt-5.5"));
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import "./default.dcdl" // {
|
||||||
memory = { enabled = true; };
|
memory = { enabled = true; };
|
||||||
web = { enabled = true; };
|
web = { enabled = true; };
|
||||||
workers = { enabled = false; };
|
workers = { enabled = false; };
|
||||||
ticket = { enabled = false; access = "lifecycle"; };
|
|
||||||
ticket_orchestration = { enabled = false; };
|
ticket_orchestration = { enabled = false; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import "./default.dcdl" // {
|
||||||
memory = { enabled = true; };
|
memory = { enabled = true; };
|
||||||
web = { enabled = true; };
|
web = { enabled = true; };
|
||||||
workers = { enabled = true; };
|
workers = { enabled = true; };
|
||||||
ticket = { enabled = false; access = "lifecycle"; };
|
|
||||||
ticket_orchestration = { enabled = false; };
|
ticket_orchestration = { enabled = false; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import "./default.dcdl" // {
|
||||||
memory = { enabled = true; };
|
memory = { enabled = true; };
|
||||||
web = { enabled = true; };
|
web = { enabled = true; };
|
||||||
workers = { enabled = false; };
|
workers = { enabled = false; };
|
||||||
ticket = { enabled = true; access = "lifecycle"; };
|
|
||||||
ticket_orchestration = { enabled = false; };
|
ticket_orchestration = { enabled = false; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import "./default.dcdl" // {
|
||||||
memory = { enabled = true; };
|
memory = { enabled = true; };
|
||||||
web = { enabled = true; };
|
web = { enabled = true; };
|
||||||
workers = { enabled = true; };
|
workers = { enabled = true; };
|
||||||
ticket = { enabled = true; access = "lifecycle"; };
|
|
||||||
ticket_orchestration = { enabled = true; };
|
ticket_orchestration = { enabled = true; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import "./default.dcdl" // {
|
||||||
memory = { enabled = true; };
|
memory = { enabled = true; };
|
||||||
web = { enabled = true; };
|
web = { enabled = true; };
|
||||||
workers = { enabled = false; };
|
workers = { enabled = false; };
|
||||||
ticket = { enabled = false; access = "lifecycle"; };
|
|
||||||
ticket_orchestration = { enabled = false; };
|
ticket_orchestration = { enabled = false; };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user