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)]
16pub struct ResetOptions {
17    /// Reset profile applied by the reset step.
18    #[serde(default = "default_profile")]
19    pub profile: ResetProfile,
20    /// Reapply fixture and scenario context after reset.
21    #[serde(default)]
22    pub preserve_host_context: bool,
23    /// Preserve the active actor ID after reset.
24    #[serde(default)]
25    pub preserve_actor_id: bool,
26    /// Keep the temp storage path across rebuilds.
27    #[serde(default = "default_true")]
28    pub preserve_storage: bool,
29    /// Whether spawner registry state should be rebuilt.
30    #[serde(default = "default_true")]
31    pub reset_spawner_registry: bool,
32    /// Whether observability state should be recreated.
33    #[serde(default = "default_true")]
34    pub reset_observability: bool,
35    /// Delete temp persistence before rebuilding.
36    #[serde(default)]
37    pub delete_persistence: bool,
38}
39
40impl Default for ResetOptions {
41    fn default() -> Self {
42        Self {
43            profile: ResetProfile::FullRuntime,
44            preserve_host_context: false,
45            preserve_actor_id: false,
46            preserve_storage: true,
47            reset_spawner_registry: true,
48            reset_observability: true,
49            delete_persistence: false,
50        }
51    }
52}
53
54fn default_profile() -> ResetProfile {
55    ResetProfile::FullRuntime
56}
57
58fn default_true() -> bool {
59    true
60}