stynx_code_config/domain/
config.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4pub struct Settings {
5 #[serde(default)]
6 pub permissions: PermissionSettings,
7 #[serde(default)]
8 pub model: Option<String>,
9 #[serde(default)]
10 pub hooks: HooksConfig,
11 #[serde(default)]
12 pub max_turns: Option<usize>,
13 #[serde(default)]
14 pub max_tokens: Option<u32>,
15 #[serde(default)]
16 pub effort: Option<String>,
17
18 #[serde(default)]
19 pub commit_attribution: bool,
20
21 #[serde(default)]
22 pub interns: Vec<InternConfig>,
23
24 #[serde(default)]
25 pub main_provider: Option<String>,
26}
27
28#[derive(Debug, Clone, Default, Serialize, Deserialize)]
29pub struct InternConfig {
30
31 pub name: String,
32
33 pub provider: String,
34
35 pub model: String,
36
37 #[serde(default)]
38 pub description: Option<String>,
39
40 #[serde(default)]
41 pub base_url: Option<String>,
42
43 #[serde(default)]
44 pub api_key_env: Option<String>,
45}
46
47#[derive(Debug, Clone, Default, Serialize, Deserialize)]
48pub struct PermissionSettings {
49 #[serde(default)]
50 pub allow: Vec<String>,
51 #[serde(default)]
52 pub deny: Vec<String>,
53}
54
55#[derive(Debug, Clone, Default, Serialize, Deserialize)]
56pub struct HookEntry {
57 #[serde(default)]
58 pub matcher: Option<String>,
59 pub command: String,
60}
61
62#[derive(Debug, Clone, Default, Serialize, Deserialize)]
63pub struct HooksConfig {
64 #[serde(default, rename = "PreToolUse")]
65 pub pre_tool_use: Vec<HookEntry>,
66 #[serde(default, rename = "PostToolUse")]
67 pub post_tool_use: Vec<HookEntry>,
68 #[serde(default, rename = "Stop")]
69 pub stop: Vec<HookEntry>,
70 #[serde(default, rename = "SessionStart")]
71 pub session_start: Vec<HookEntry>,
72}