Cameron Mcloughlinagent: Re-enable sandbox (#61711)12a19dc3 months agoHistory
148 lines · 3.8 KB · Rust
RawDownload
use crate::{EnumFeatureFlag, FeatureFlag, PresenceFlag, register_feature_flag}; pub struct NotebookFeatureFlag; impl FeatureFlag for NotebookFeatureFlag {    const NAME: &'static str = "notebooks";    type Value = PresenceFlag;}register_feature_flag!(NotebookFeatureFlag); pub struct PanicFeatureFlag; impl FeatureFlag for PanicFeatureFlag {    const NAME: &'static str = "panic";    type Value = PresenceFlag;}register_feature_flag!(PanicFeatureFlag); /// A feature flag for granting access to beta ACP features.////// We reuse this feature flag for new betas, so don't delete it if it is not currently in use.pub struct AcpBetaFeatureFlag; impl FeatureFlag for AcpBetaFeatureFlag {    const NAME: &'static str = "acp-beta";    type Value = PresenceFlag;}register_feature_flag!(AcpBetaFeatureFlag); pub struct DiffReviewFeatureFlag; impl FeatureFlag for DiffReviewFeatureFlag {    const NAME: &'static str = "diff-review";    type Value = PresenceFlag;     fn enabled_for_staff() -> bool {        false    }}register_feature_flag!(DiffReviewFeatureFlag); /// Gates the `create_thread` and `list_agents_and_models` tools, which let/// the agent spawn independent sibling threads that show up in the agent/// panel sidebar.pub struct CreateThreadToolFeatureFlag; impl FeatureFlag for CreateThreadToolFeatureFlag {    const NAME: &'static str = "create-thread-tool";    type Value = PresenceFlag;     fn enabled_for_staff() -> bool {        true    }}register_feature_flag!(CreateThreadToolFeatureFlag); pub struct LspToolFeatureFlag; impl FeatureFlag for LspToolFeatureFlag {    const NAME: &'static str = "lsp-tool";    type Value = PresenceFlag;     fn enabled_for_staff() -> bool {        false    }}register_feature_flag!(LspToolFeatureFlag); pub struct RenameToolFeatureFlag; impl FeatureFlag for RenameToolFeatureFlag {    const NAME: &'static str = "rename-tool";    type Value = PresenceFlag;     fn enabled_for_staff() -> bool {        true    }}register_feature_flag!(RenameToolFeatureFlag); pub struct ProjectPanelUndoRedoFeatureFlag; impl FeatureFlag for ProjectPanelUndoRedoFeatureFlag {    const NAME: &'static str = "project-panel-undo-redo";    type Value = PresenceFlag;     fn enabled_for_staff() -> bool {        true    }     fn enabled_for_all() -> bool {        !matches!(            *release_channel::RELEASE_CHANNEL,            release_channel::ReleaseChannel::Stable        )    }}register_feature_flag!(ProjectPanelUndoRedoFeatureFlag); /// Controls how agent thread worktree chips are labeled in the sidebar.#[derive(Clone, Copy, PartialEq, Eq, Debug, EnumFeatureFlag)]pub enum AgentThreadWorktreeLabel {    #[default]    Both,    Worktree,    Branch,} pub struct AgentThreadWorktreeLabelFlag; impl FeatureFlag for AgentThreadWorktreeLabelFlag {    const NAME: &'static str = "agent-thread-worktree-label";    type Value = AgentThreadWorktreeLabel;     fn enabled_for_staff() -> bool {        false    }}register_feature_flag!(AgentThreadWorktreeLabelFlag); pub struct AutoWatchFeatureFlag; impl FeatureFlag for AutoWatchFeatureFlag {    const NAME: &'static str = "auto-watch-screens";    type Value = PresenceFlag;}register_feature_flag!(AutoWatchFeatureFlag); /// Wraps agent-run terminal commands in an OS-level sandbox where supported,/// and applies the shared per-host network grants to the `fetch` tool and the/// out-of-project write grants to the `create_directory` tool. When off,/// these tools run with the agent's full ambient permissions, as they always/// have.pub struct SandboxingFeatureFlag; impl FeatureFlag for SandboxingFeatureFlag {    const NAME: &'static str = "sandboxing";    type Value = PresenceFlag;     fn enabled_for_all() -> bool {        true    }     fn enabled_for_staff() -> bool {        false    }}register_feature_flag!(SandboxingFeatureFlag);