Skip to main content

commit_wizard/engine/models/policy/
ai.rs

1use crate::engine::models::{policy::enforcement::AiProvider, runtime::ResolvedConfig};
2
3#[derive(Debug, Clone)]
4pub struct AiCommandsModel {
5    pub commit: bool,
6    pub changelog: bool,
7    pub release_prepare: bool,
8}
9
10#[derive(Debug, Clone)]
11pub struct AiModel {
12    pub enabled: bool,
13    pub provider: AiProvider,
14    pub commands: AiCommandsModel,
15}
16
17impl Default for AiModel {
18    fn default() -> Self {
19        Self {
20            enabled: false,
21            provider: AiProvider::Copilot,
22            commands: AiCommandsModel {
23                commit: false,
24                changelog: false,
25                release_prepare: false,
26            },
27        }
28    }
29}
30
31impl AiModel {
32    pub fn from_config(config: &ResolvedConfig) -> Self {
33        let base = &config.base;
34
35        Self {
36            enabled: base.ai_enabled(),
37            provider: base.ai_provider(),
38            commands: AiCommandsModel {
39                commit: base.ai_commit_enabled(),
40                changelog: base.ai_changelog_enabled(),
41                release_prepare: base.ai_release_prepare_enabled(),
42            },
43        }
44    }
45}