Skip to main content

agentic_time/
lib.rs

1//! # AgenticTime
2//!
3//! Temporal reasoning for AI agents. Models durations, deadlines,
4//! schedules, sequences, and decay in a single `.atime` file.
5
6pub mod deadline;
7pub mod decay;
8pub mod duration;
9pub mod error;
10pub mod file_format;
11pub mod indexes;
12pub mod inventions;
13pub mod query_engine;
14pub mod schedule;
15pub mod sequence;
16pub mod write_engine;
17
18pub use deadline::{Consequence, Deadline, DeadlineStatus, DeadlineType};
19pub use decay::{DecayModel, DecayType};
20pub use duration::{DurationEstimate, DurationSource};
21pub use error::{TimeError, TimeResult};
22pub use file_format::{EntityType, FileHeader, TimeFile};
23pub use indexes::{DeadlineIndex, DecayIndex, SequenceIndex};
24pub use query_engine::{QueryEngine, TimeSlot, TimeStats};
25pub use schedule::{
26    Priority, Recurrence, RecurrenceEnd, RecurrencePattern, Schedule, ScheduleStatus,
27};
28pub use sequence::{Sequence, SequenceStatus, SequenceStep, StepStatus};
29pub use write_engine::{UpdateReport, WriteEngine};
30
31use serde::{Deserialize, Serialize};
32use uuid::Uuid;
33
34/// Unique identifier for temporal entities.
35#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
36pub struct TemporalId(pub Uuid);
37
38impl TemporalId {
39    /// Generate a new random temporal ID.
40    pub fn new() -> Self {
41        Self(Uuid::new_v4())
42    }
43}
44
45impl Default for TemporalId {
46    fn default() -> Self {
47        Self::new()
48    }
49}
50
51impl std::fmt::Display for TemporalId {
52    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
53        write!(f, "{}", self.0)
54    }
55}
56
57impl std::str::FromStr for TemporalId {
58    type Err = uuid::Error;
59
60    fn from_str(s: &str) -> Result<Self, Self::Err> {
61        Ok(Self(Uuid::parse_str(s)?))
62    }
63}