commit_wizard/engine/models/policy/
ai.rs1use 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}