commit-wizard 0.0.2

A lightweight CLI assistant for Conventional Commits, semantic versioning, and changelog automation.
Documentation
use crate::engine::models::{policy::enforcement::AiProvider, runtime::ResolvedConfig};

#[derive(Debug, Clone)]
pub struct AiCommandsModel {
    pub commit: bool,
    pub changelog: bool,
    pub release_prepare: bool,
}

#[derive(Debug, Clone)]
pub struct AiModel {
    pub enabled: bool,
    pub provider: AiProvider,
    pub commands: AiCommandsModel,
}

impl Default for AiModel {
    fn default() -> Self {
        Self {
            enabled: false,
            provider: AiProvider::Copilot,
            commands: AiCommandsModel {
                commit: false,
                changelog: false,
                release_prepare: false,
            },
        }
    }
}

impl AiModel {
    pub fn from_config(config: &ResolvedConfig) -> Self {
        let base = &config.base;

        Self {
            enabled: base.ai_enabled(),
            provider: base.ai_provider(),
            commands: AiCommandsModel {
                commit: base.ai_commit_enabled(),
                changelog: base.ai_changelog_enabled(),
                release_prepare: base.ai_release_prepare_enabled(),
            },
        }
    }
}