Skip to main content

ai_agents_eval/
reset.rs

1use serde::{Deserialize, Serialize};
2
3/// Preset reset strategies for eval reset steps.
4#[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/// Options controlling an eval reset step.
15#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(deny_unknown_fields)]
17pub struct ResetOptions {
18    /// Reset profile applied by the reset step.
19    #[serde(default = "default_profile")]
20    pub profile: ResetProfile,
21    /// Reapply fixture and scenario context after reset.
22    #[serde(default)]
23    pub preserve_host_context: bool,
24    /// Preserve the active actor ID after reset.
25    #[serde(default)]
26    pub preserve_actor_id: bool,
27    /// Keep the temp storage path across rebuilds.
28    #[serde(default = "default_true")]
29    pub preserve_storage: bool,
30    /// Whether spawner registry state should be rebuilt.
31    #[serde(default = "default_true")]
32    pub reset_spawner_registry: bool,
33    /// Whether observability state should be recreated.
34    #[serde(default = "default_true")]
35    pub reset_observability: bool,
36    /// Delete temp persistence before rebuilding.
37    #[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}