microclaw_engine/config/
autonomy.rs1use super::*;
2
3pub(crate) fn default_sleep_time_idle_hours() -> u64 {
4 6
5}
6
7pub(crate) fn default_sleep_time_min_interval_hours() -> u64 {
8 24
9}
10
11pub(crate) fn default_sleep_time_similarity_threshold() -> f64 {
12 0.82
13}
14
15pub(crate) fn default_sleep_time_max_archived_per_pass() -> usize {
16 20
17}
18
19#[derive(Clone, Debug, Serialize, Deserialize)]
26pub struct SleepTimeConfig {
27 #[serde(default)]
28 pub enabled: bool,
29 #[serde(default = "default_sleep_time_idle_hours")]
31 pub idle_hours: u64,
32 #[serde(default = "default_sleep_time_min_interval_hours")]
34 pub min_interval_hours: u64,
35 #[serde(default = "default_sleep_time_similarity_threshold")]
38 pub similarity_threshold: f64,
39 #[serde(default = "default_sleep_time_max_archived_per_pass")]
41 pub max_archived_per_pass: usize,
42}
43
44impl Default for SleepTimeConfig {
45 fn default() -> Self {
46 Self {
47 enabled: false,
48 idle_hours: default_sleep_time_idle_hours(),
49 min_interval_hours: default_sleep_time_min_interval_hours(),
50 similarity_threshold: default_sleep_time_similarity_threshold(),
51 max_archived_per_pass: default_sleep_time_max_archived_per_pass(),
52 }
53 }
54}
55
56pub(crate) fn default_heartbeat_interval_mins() -> u64 {
57 30
58}
59
60pub(crate) fn default_heartbeat_max_chars() -> usize {
61 8000
62}
63
64#[derive(Clone, Debug, Serialize, Deserialize)]
70pub struct HeartbeatConfig {
71 #[serde(default)]
72 pub enabled: bool,
73 #[serde(default = "default_heartbeat_interval_mins")]
75 pub interval_mins: u64,
76 #[serde(default = "default_heartbeat_max_chars")]
78 pub max_chars: usize,
79}
80
81impl Default for HeartbeatConfig {
82 fn default() -> Self {
83 Self {
84 enabled: false,
85 interval_mins: default_heartbeat_interval_mins(),
86 max_chars: default_heartbeat_max_chars(),
87 }
88 }
89}
90
91pub(crate) fn default_idle_checkin_idle_hours() -> u64 {
92 24
93}
94
95pub(crate) fn default_idle_checkin_min_interval_hours() -> u64 {
96 24
97}
98
99#[derive(Clone, Debug, Serialize, Deserialize)]
104pub struct IdleCheckinConfig {
105 #[serde(default)]
106 pub enabled: bool,
107 #[serde(default = "default_idle_checkin_idle_hours")]
109 pub idle_hours: u64,
110 #[serde(default = "default_idle_checkin_min_interval_hours")]
112 pub min_interval_hours: u64,
113}
114
115impl Default for IdleCheckinConfig {
116 fn default() -> Self {
117 Self {
118 enabled: false,
119 idle_hours: default_idle_checkin_idle_hours(),
120 min_interval_hours: default_idle_checkin_min_interval_hours(),
121 }
122 }
123}
124
125pub(crate) fn default_interjection_min_interval_secs() -> u64 {
126 900
127}
128
129pub(crate) fn default_interjection_lookback_mins() -> u64 {
130 10
131}
132
133#[derive(Clone, Debug, Serialize, Deserialize)]
138pub struct InterjectionConfig {
139 #[serde(default)]
140 pub enabled: bool,
141 #[serde(default = "default_interjection_min_interval_secs")]
143 pub min_interval_secs: u64,
144 #[serde(default = "default_interjection_lookback_mins")]
146 pub lookback_mins: u64,
147}
148
149impl Default for InterjectionConfig {
150 fn default() -> Self {
151 Self {
152 enabled: false,
153 min_interval_secs: default_interjection_min_interval_secs(),
154 lookback_mins: default_interjection_lookback_mins(),
155 }
156 }
157}