Codex Handbook
app-server-protocol/src/protocol/v2/experimental_feature.rs 90 lines
use schemars::JsonSchema;use serde::Deserialize;use serde::Serialize;use std::collections::BTreeMap;use ts_rs::TS;#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct ExperimentalFeatureListParams {    /// Opaque pagination cursor returned by a previous call.    #[ts(optional = nullable)]    pub cursor: Option<String>,    /// Optional page size; defaults to a reasonable server-side value.    #[ts(optional = nullable)]    pub limit: Option<u32>,    /// Optional loaded thread id. Pass this when showing feature state for an    /// existing thread so enablement is computed from that thread's refreshed    /// config, including project-local config for the thread's cwd.    #[ts(optional = nullable)]    pub thread_id: Option<String>,}#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub enum ExperimentalFeatureStage {    /// Feature is available for user testing and feedback.    Beta,    /// Feature is still being built and not ready for broad use.    UnderDevelopment,    /// Feature is production-ready.    Stable,    /// Feature is deprecated and should be avoided.    Deprecated,    /// Feature flag is retained only for backwards compatibility.    Removed,}#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct ExperimentalFeature {    /// Stable key used in config.toml and CLI flag toggles.    pub name: String,    /// Lifecycle stage of this feature flag.    pub stage: ExperimentalFeatureStage,    /// User-facing display name shown in the experimental features UI.    /// Null when this feature is not in beta.    pub display_name: Option<String>,    /// Short summary describing what the feature does.    /// Null when this feature is not in beta.    pub description: Option<String>,    /// Announcement copy shown to users when the feature is introduced.    /// Null when this feature is not in beta.    pub announcement: Option<String>,    /// Whether this feature is currently enabled in the loaded config.    pub enabled: bool,    /// Whether this feature is enabled by default.    pub default_enabled: bool,}#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct ExperimentalFeatureListResponse {    pub data: Vec<ExperimentalFeature>,    /// Opaque cursor to pass to the next call to continue after the last item.    /// If None, there are no more items to return.    pub next_cursor: Option<String>,}#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct ExperimentalFeatureEnablementSetParams {    /// Process-wide runtime feature enablement keyed by canonical feature name.    ///    /// Only named features are updated. Omitted features are left unchanged.    /// Send an empty map for a no-op.    pub enablement: BTreeMap<String, bool>,}#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct ExperimentalFeatureEnablementSetResponse {    /// Feature enablement entries updated by this request.    pub enablement: BTreeMap<String, bool>,}