1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5#[serde(rename_all = "snake_case")]
6pub enum ResetProfile {
7 Conversation,
8 Session,
9 FullRuntime,
10 EvalAttempt,
11 Persistence,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(deny_unknown_fields)]
17pub struct ResetOptions {
18 #[serde(default = "default_profile")]
20 pub profile: ResetProfile,
21 #[serde(default)]
23 pub preserve_host_context: bool,
24 #[serde(default)]
26 pub preserve_actor_id: bool,
27 #[serde(default = "default_true")]
29 pub preserve_storage: bool,
30 #[serde(default = "default_true")]
32 pub reset_spawner_registry: bool,
33 #[serde(default = "default_true")]
35 pub reset_observability: bool,
36 #[serde(default)]
38 pub delete_persistence: bool,
39}
40
41impl Default for ResetOptions {
42 fn default() -> Self {
43 Self {
44 profile: ResetProfile::FullRuntime,
45 preserve_host_context: false,
46 preserve_actor_id: false,
47 preserve_storage: true,
48 reset_spawner_registry: true,
49 reset_observability: true,
50 delete_persistence: false,
51 }
52 }
53}
54
55fn default_profile() -> ResetProfile {
56 ResetProfile::FullRuntime
57}
58
59fn default_true() -> bool {
60 true
61}