mirror of
https://github.com/openai/codex.git
synced 2026-10-20 17:38:45 +00:00
Move service tier helpers out of data types
This commit is contained in:
@@ -355,47 +355,41 @@ pub const SERVICE_TIER_FLEX: &str = "flex";
|
||||
#[ts(type = "string")]
|
||||
pub struct ServiceTier(String);
|
||||
|
||||
impl ServiceTier {
|
||||
pub fn new(id: impl Into<String>) -> Self {
|
||||
Self(id.into())
|
||||
}
|
||||
pub fn priority_service_tier() -> ServiceTier {
|
||||
ServiceTier::from(SERVICE_TIER_PRIORITY)
|
||||
}
|
||||
|
||||
pub fn as_str(&self) -> &str {
|
||||
self.0.as_str()
|
||||
}
|
||||
pub fn flex_service_tier() -> ServiceTier {
|
||||
ServiceTier::from(SERVICE_TIER_FLEX)
|
||||
}
|
||||
|
||||
pub fn priority() -> Self {
|
||||
Self::new(SERVICE_TIER_PRIORITY)
|
||||
}
|
||||
pub fn service_tier_id(service_tier: &ServiceTier) -> &str {
|
||||
service_tier.as_ref()
|
||||
}
|
||||
|
||||
pub fn flex() -> Self {
|
||||
Self::new(SERVICE_TIER_FLEX)
|
||||
}
|
||||
pub fn is_priority_service_tier(service_tier: &ServiceTier) -> bool {
|
||||
service_tier_id(service_tier) == SERVICE_TIER_PRIORITY
|
||||
}
|
||||
|
||||
pub fn is_priority(&self) -> bool {
|
||||
self.as_str() == SERVICE_TIER_PRIORITY
|
||||
}
|
||||
|
||||
pub fn is_flex(&self) -> bool {
|
||||
self.as_str() == SERVICE_TIER_FLEX
|
||||
}
|
||||
pub fn is_flex_service_tier(service_tier: &ServiceTier) -> bool {
|
||||
service_tier_id(service_tier) == SERVICE_TIER_FLEX
|
||||
}
|
||||
|
||||
impl AsRef<str> for ServiceTier {
|
||||
fn as_ref(&self) -> &str {
|
||||
self.as_str()
|
||||
self.0.as_str()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&str> for ServiceTier {
|
||||
fn from(value: &str) -> Self {
|
||||
Self::new(value)
|
||||
Self(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<String> for ServiceTier {
|
||||
fn from(value: String) -> Self {
|
||||
Self::new(value)
|
||||
Self(value)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,7 +401,7 @@ impl From<ServiceTier> for String {
|
||||
|
||||
impl std::fmt::Display for ServiceTier {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str(self.as_str())
|
||||
f.write_str(service_tier_id(self))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ use crate::config_types::Personality;
|
||||
use crate::config_types::ReasoningSummary;
|
||||
use crate::config_types::ServiceTier;
|
||||
use crate::config_types::Verbosity;
|
||||
use crate::config_types::priority_service_tier;
|
||||
|
||||
const PERSONALITY_PLACEHOLDER: &str = "{{ personality }}";
|
||||
|
||||
@@ -469,19 +470,24 @@ impl From<ModelInfo> for ModelPreset {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn model_supports_service_tier(model: &ModelPreset, service_tier: &ServiceTier) -> bool {
|
||||
model
|
||||
.service_tiers
|
||||
.iter()
|
||||
.any(|tier| tier.id == *service_tier)
|
||||
}
|
||||
|
||||
pub fn model_service_tier<'a>(
|
||||
model: &'a ModelPreset,
|
||||
service_tier: &ServiceTier,
|
||||
) -> Option<&'a ModelServiceTier> {
|
||||
model
|
||||
.service_tiers
|
||||
.iter()
|
||||
.find(|tier| tier.id == *service_tier)
|
||||
}
|
||||
|
||||
impl ModelPreset {
|
||||
pub fn supports_service_tier(&self, service_tier: &ServiceTier) -> bool {
|
||||
self.service_tiers
|
||||
.iter()
|
||||
.any(|tier| tier.id == *service_tier)
|
||||
}
|
||||
|
||||
pub fn service_tier(&self, service_tier: &ServiceTier) -> Option<&ModelServiceTier> {
|
||||
self.service_tiers
|
||||
.iter()
|
||||
.find(|tier| tier.id == *service_tier)
|
||||
}
|
||||
|
||||
/// Filter models based on authentication mode.
|
||||
///
|
||||
/// In ChatGPT mode, all models are visible. Otherwise, only API-supported models are shown.
|
||||
@@ -831,7 +837,7 @@ mod tests {
|
||||
message: "Try Spark.".to_string(),
|
||||
}),
|
||||
service_tiers: vec![ModelServiceTier {
|
||||
id: ServiceTier::priority(),
|
||||
id: priority_service_tier(),
|
||||
name: "Fast".to_string(),
|
||||
description: "Fast tier".to_string(),
|
||||
}],
|
||||
@@ -844,6 +850,9 @@ mod tests {
|
||||
message: "Try Spark.".to_string(),
|
||||
})
|
||||
);
|
||||
assert!(preset.supports_service_tier(&ServiceTier::priority()));
|
||||
assert!(model_supports_service_tier(
|
||||
&preset,
|
||||
&priority_service_tier()
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user