agentic_reality/engine/query/
resource.rs1use crate::engine::query::QueryEngine;
4use crate::types::error::{RealityError, RealityResult};
5use crate::types::resource::*;
6
7impl<'a> QueryEngine<'a> {
8 pub fn get_body(&self) -> RealityResult<&ResourceBody> {
9 self.engine
10 .resource_store
11 .body
12 .as_ref()
13 .ok_or_else(|| RealityError::NotInitialized("resource body".into()))
14 }
15
16 pub fn get_mind(&self) -> RealityResult<&MindCapacity> {
17 Ok(&self.get_body()?.mind)
18 }
19
20 pub fn get_energy(&self) -> RealityResult<&ProcessingEnergy> {
21 Ok(&self.get_body()?.energy)
22 }
23
24 pub fn get_reach(&self) -> RealityResult<&NetworkReach> {
25 Ok(&self.get_body()?.reach)
26 }
27
28 pub fn get_storage(&self) -> RealityResult<&StorageCapacity> {
29 Ok(&self.get_body()?.storage)
30 }
31
32 pub fn get_visual(&self) -> RealityResult<Option<&GpuCapacity>> {
33 Ok(self.get_body()?.visual.as_ref())
34 }
35
36 pub fn get_sensations(&self) -> RealityResult<&[ResourceSensation]> {
37 Ok(&self.get_body()?.sensations)
38 }
39
40 pub fn get_pressure_gradient(&self) -> RealityResult<&ResourcePressureGradient> {
41 self.engine
42 .resource_store
43 .pressure_gradient
44 .as_ref()
45 .ok_or_else(|| RealityError::NotInitialized("pressure gradient".into()))
46 }
47
48 pub fn get_bottleneck(&self) -> Option<ResourceType> {
49 self.engine
50 .resource_store
51 .pressure_gradient
52 .as_ref()
53 .and_then(|g| g.bottleneck)
54 }
55
56 pub fn get_capabilities(&self) -> RealityResult<&CapabilityMap> {
57 self.engine
58 .resource_store
59 .capabilities
60 .as_ref()
61 .ok_or_else(|| RealityError::NotInitialized("capabilities".into()))
62 }
63
64 pub fn can_do(&self, capability: &str) -> bool {
65 self.engine
66 .resource_store
67 .capabilities
68 .as_ref()
69 .map(|m| {
70 m.capabilities
71 .iter()
72 .any(|c| c.name == capability && c.available)
73 })
74 .unwrap_or(false)
75 }
76
77 pub fn get_cost(&self) -> RealityResult<&CostConsciousness> {
78 self.engine
79 .resource_store
80 .cost
81 .as_ref()
82 .ok_or_else(|| RealityError::NotInitialized("cost consciousness".into()))
83 }
84}