flags.rs

  1use crate::{EnumFeatureFlag, FeatureFlag, PresenceFlag, register_feature_flag};
  2
  3pub struct NotebookFeatureFlag;
  4
  5impl FeatureFlag for NotebookFeatureFlag {
  6    const NAME: &'static str = "notebooks";
  7    type Value = PresenceFlag;
  8}
  9register_feature_flag!(NotebookFeatureFlag);
 10
 11pub struct PanicFeatureFlag;
 12
 13impl FeatureFlag for PanicFeatureFlag {
 14    const NAME: &'static str = "panic";
 15    type Value = PresenceFlag;
 16}
 17register_feature_flag!(PanicFeatureFlag);
 18
 19/// A feature flag for granting access to beta ACP features.
 20///
 21/// We reuse this feature flag for new betas, so don't delete it if it is not currently in use.
 22pub struct AcpBetaFeatureFlag;
 23
 24impl FeatureFlag for AcpBetaFeatureFlag {
 25    const NAME: &'static str = "acp-beta";
 26    type Value = PresenceFlag;
 27}
 28register_feature_flag!(AcpBetaFeatureFlag);
 29
 30pub struct AgentSharingFeatureFlag;
 31
 32impl FeatureFlag for AgentSharingFeatureFlag {
 33    const NAME: &'static str = "agent-sharing";
 34    type Value = PresenceFlag;
 35}
 36register_feature_flag!(AgentSharingFeatureFlag);
 37
 38pub struct DiffReviewFeatureFlag;
 39
 40impl FeatureFlag for DiffReviewFeatureFlag {
 41    const NAME: &'static str = "diff-review";
 42    type Value = PresenceFlag;
 43
 44    fn enabled_for_staff() -> bool {
 45        false
 46    }
 47}
 48register_feature_flag!(DiffReviewFeatureFlag);
 49
 50pub struct StreamingEditFileToolFeatureFlag;
 51
 52impl FeatureFlag for StreamingEditFileToolFeatureFlag {
 53    const NAME: &'static str = "streaming-edit-file-tool";
 54    type Value = PresenceFlag;
 55
 56    fn enabled_for_staff() -> bool {
 57        true
 58    }
 59}
 60register_feature_flag!(StreamingEditFileToolFeatureFlag);
 61
 62pub struct UpdatePlanToolFeatureFlag;
 63
 64impl FeatureFlag for UpdatePlanToolFeatureFlag {
 65    const NAME: &'static str = "update-plan-tool";
 66    type Value = PresenceFlag;
 67
 68    fn enabled_for_staff() -> bool {
 69        false
 70    }
 71}
 72register_feature_flag!(UpdatePlanToolFeatureFlag);
 73
 74pub struct ProjectPanelUndoRedoFeatureFlag;
 75
 76impl FeatureFlag for ProjectPanelUndoRedoFeatureFlag {
 77    const NAME: &'static str = "project-panel-undo-redo";
 78    type Value = PresenceFlag;
 79
 80    fn enabled_for_staff() -> bool {
 81        true
 82    }
 83}
 84register_feature_flag!(ProjectPanelUndoRedoFeatureFlag);
 85
 86/// Controls how agent thread worktree chips are labeled in the sidebar.
 87#[derive(Clone, Copy, PartialEq, Eq, Debug, EnumFeatureFlag)]
 88pub enum AgentThreadWorktreeLabel {
 89    #[default]
 90    Both,
 91    Worktree,
 92    Branch,
 93}
 94
 95pub struct AgentThreadWorktreeLabelFlag;
 96
 97impl FeatureFlag for AgentThreadWorktreeLabelFlag {
 98    const NAME: &'static str = "agent-thread-worktree-label";
 99    type Value = AgentThreadWorktreeLabel;
100
101    fn enabled_for_staff() -> bool {
102        false
103    }
104}
105register_feature_flag!(AgentThreadWorktreeLabelFlag);