Skip to main content

stynx_code_config/domain/
config.rs

1use 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}