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);