1#![deny(unsafe_code)]
30
31pub mod admin;
32pub mod checkpoint;
33pub mod coordinator;
34pub mod driver;
35pub mod engine;
36pub mod error;
37pub mod external;
38pub mod freshness;
39pub mod fs;
40pub mod lock;
41pub mod pipe;
42pub mod recovery;
43pub mod registry;
44pub mod settings;
45pub mod source;
46pub mod workspace;
47
48pub use admin::{DiskStatus, RepoStatus, SyncStatus, repos_status, sync_status};
49pub use checkpoint::{CheckpointResult, finish_checkpoint, process_checkpoint};
50pub use coordinator::{Coordinator, SyncInSummary, SyncOutSummary};
51pub use driver::{AttachResult, attach_source, reconcile_changes};
52pub use engine::{DocBytes, EngineClient, InProcessEngineClient};
53pub use error::{Error, Result};
54pub use external::ExternalSource;
55pub use freshness::{
56 DiskDrift, SweepPlan, SweepResult, detect_disk_drift, freshness_sweep, rebuild_file_stats,
57 record_file_stat, sweep_plan,
58};
59pub use fs::{FileStat, FileSystem, MemFileSystem, RealFileSystem, is_ignored_dir};
60pub use lock::{WatchLease, WriterLock, WriterLockOptions, pid_alive, with_writer_lock};
61pub use omgbase_store::{ChangesPage, CommitDigest, DeleteOutcome, DigestRevision, ObserveOutcome};
62pub use recovery::{RecoveryResult, recover_repo};
63pub use registry::{
64 AdapterRow, SourceRow, attach, create_source, delete_source, detach, ensure_adapter,
65 ensure_repo, list_adapters, list_sources, render_config_flags, source_by_name,
66 sources_for_repo,
67};
68pub use settings::{
69 Settings, deep_merge, repo_own_settings, resolve_settings, workspace_settings,
70 write_repo_settings, write_workspace_settings,
71};
72pub use source::{
73 Readiness, SourceCapabilities, SourceEntry, SourceIdentity, SourceItem, SyncSource, WatchEvent,
74 wait_ready,
75};
76pub use workspace::{RepoRow, RepoSelection, Workspace, select_repo};
77
78pub const SPEC_VERSION: &str = "1.2";
80
81pub const PROTOCOL_VERSION: u64 = 1;
83
84#[must_use]
87pub fn now_ts() -> String {
88 let ms = std::time::SystemTime::now()
89 .duration_since(std::time::UNIX_EPOCH)
90 .map(|d| i64::try_from(d.as_millis()).unwrap_or(i64::MAX))
91 .unwrap_or(0);
92 omgbase_store::time::format_ms(ms)
93}