Skip to main content

agentic_reality/engine/query/
environment.rs

1//! Environment query operations.
2
3use crate::engine::query::QueryEngine;
4use crate::types::environment::*;
5use crate::types::error::{RealityError, RealityResult};
6
7impl<'a> QueryEngine<'a> {
8    pub fn get_environment(&self) -> RealityResult<&EnvironmentMedium> {
9        self.engine
10            .environment_store
11            .medium
12            .as_ref()
13            .ok_or_else(|| RealityError::NotInitialized("environment".into()))
14    }
15
16    pub fn get_environment_type(&self) -> RealityResult<&EnvironmentType> {
17        Ok(&self.get_environment()?.environment_type)
18    }
19
20    pub fn get_environment_state(&self) -> RealityResult<&EnvironmentState> {
21        Ok(&self.get_environment()?.current_state)
22    }
23
24    pub fn get_mood(&self) -> RealityResult<EnvironmentMood> {
25        Ok(self.get_environment()?.current_state.mood)
26    }
27
28    pub fn get_physics(&self) -> RealityResult<&EnvironmentPhysics> {
29        Ok(&self.get_environment()?.physics)
30    }
31
32    pub fn get_incidents(&self) -> RealityResult<&[ActiveIncident]> {
33        Ok(&self.get_environment()?.current_state.incidents)
34    }
35
36    pub fn get_fingerprint(&self) -> RealityResult<&ContextFingerprint> {
37        self.engine
38            .environment_store
39            .fingerprint
40            .as_ref()
41            .ok_or_else(|| RealityError::NotInitialized("context fingerprint".into()))
42    }
43
44    pub fn has_context_shifted(&self) -> bool {
45        self.engine
46            .environment_store
47            .fingerprint
48            .as_ref()
49            .map(|f| f.stability != ContextStability::Stable)
50            .unwrap_or(false)
51    }
52}