alma 0.1.1

A Bevy-native modal text editor with Vim-style navigation.
Documentation
//! Static proposal handling policy.

use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

/// Static proposal handling policy for one plugin.
#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct PluginProposalPolicy {
    /// Review mode for buffer edit proposals produced by this plugin.
    pub buffer_edits: PluginProposalReviewMode,
}

impl PluginProposalPolicy {
    /// Returns the configured buffer edit proposal review mode.
    #[must_use]
    pub const fn buffer_edit_review_mode(self) -> PluginProposalReviewMode {
        self.buffer_edits
    }
}

/// Review mode for plugin proposals before owner mutation.
#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum PluginProposalReviewMode {
    /// Apply immediately through the owning editor boundary after lane admission.
    #[default]
    AutoApply,
    /// Keep proposals pending until an explicit apply or reject request arrives.
    ManualReview,
}