Skip to main content

khive_storage/
lib.rs

1//! Storage capability traits: `SqlAccess`, `VectorStore`, `TextSearch`,
2//! `GraphStore`, `NoteStore`, `EntityStore`, `EventStore`, `SparseStore`,
3//! `BlobStore`, and `AttachmentStore`.
4
5pub mod agent;
6pub mod attachment;
7pub mod blob;
8pub mod capability;
9pub mod embedding_space;
10pub mod entity;
11mod env;
12pub mod error;
13pub mod event;
14pub mod graph;
15pub mod note;
16pub mod operation_context;
17pub mod request_context;
18pub mod sparse;
19pub mod sql;
20pub mod telemetry;
21#[cfg(feature = "test-support")]
22pub mod test_support;
23pub mod text;
24pub mod tx_registry;
25pub mod types;
26pub mod usage;
27pub mod vectors;
28
29pub use agent::AgentStore;
30pub use attachment::{
31    Attachment, AttachmentReadReport, AttachmentStore, AttachmentSubstrate, NewAttachment,
32};
33pub use blob::{
34    BlobOrphanSweepConfig, BlobOrphanSweepResult, BlobStore, ContentRef, UploadId,
35    MAX_BLOB_WHOLE_BYTES,
36};
37pub use capability::StorageCapability;
38pub use embedding_space::{EmbeddingSpaceIdentity, EmbeddingSpaceIdentityError, EmbeddingSpaceKey};
39pub use entity::{Entity, EntityFilter, EntityStore};
40pub use env::read_env_number;
41pub use error::{CapacityUnavailablePhase, StorageError, WriterTaskRequestState};
42
43pub use event::{
44    Event, EventFilter, EventObservation, EventStore, EventView, ObservationRole, ReferentKind,
45};
46pub use graph::GraphStore;
47pub use khive_types::vector::{
48    decode_f32_le, decode_f32_native, encode_f32_le, encode_f32_native, VectorCodecError,
49};
50pub use note::{FilterOp, Note, NoteFilter, NoteStore, NoteVisibility, SortDir};
51pub use request_context::{
52    await_request_read_phase, capture_request_read_context, effective_request_read_deadline,
53    ensure_request_read_active, inherit_request_read_cancellation, inherit_request_read_context,
54    request_read_is_cancelled, request_read_timeout_from_env, scope_request_read_cancellation,
55    scope_request_read_deadline, scope_request_read_deadline_at,
56    wait_for_request_read_cancellation, RequestReadContext, RequestReadDeadline,
57    RequestReadStopReason, DEFAULT_REQUEST_READ_TIMEOUT_SECS,
58};
59pub use sparse::{SparseStore, SparseStoreFactory};
60pub use sql::{AtomicUnitOp, BoxFuture, SqlAccess, SqlReader, SqlWriter, TopLevelMaintenance};
61pub use telemetry::{
62    ChannelBackoffArmedPayload, ChannelBackoffResetPayload, ChannelHeartbeatPersistFailedPayload,
63    ChannelPollFailedPayload, ChannelPollStartedPayload, ChannelPollSucceededPayload,
64    CheckpointOutcomeRecordedPayload, ConfigLockedPayload, LifecycleEvent, PhaseCancelledPayload,
65    PhaseCompletedPayload, PhaseStartedPayload,
66};
67pub use text::{TextSearch, TextSearchFactory};
68pub use types::StorageResult;
69pub use vectors::{VectorStore, VectorStoreFactory};
70
71pub use types::{
72    BatchWriteError, BatchWriteErrorClass, BatchWriteErrorCount, BatchWriteRetryability,
73    BatchWriteSummary, BoundedCount, DeleteMode, DirectedNeighborHit, Direction, Edge, EdgeFilter,
74    EdgeSeekPage, EdgeSortField, EdgeUpsertDisposition, EdgeUpsertRefusal, EdgeUpsertRequest,
75    EdgeUpsertResult, GraphPath, GuardedBatchOutcome, GuardedBatchRefusal, GuardedEdgeBatchRefusal,
76    GuardedEdgeBatchUpsertOutcome, GuardedEdgeUpsertOutcome, GuardedWriteOutcome,
77    IndexRebuildScope, LimitReport, LinkId, MissingEndpoints, NeighborCursor, NeighborHit,
78    NeighborQuery, OrphanSweepConfig, OrphanSweepResult, Page, PageRequest, PathNode,
79    PropertyFilter, PropertyOp, SeekCursor, SeekPage, SortDirection, SortOrder, SparseRecord,
80    SparseSearchHit, SparseSearchRequest, SparseVector, SqlRow, SqlStatement, SqlValue,
81    TextDocument, TextFilter, TextGatherMode, TextIndexStats, TextQueryMode, TextSearchHit,
82    TextSearchOptions, TextSearchRequest, TextTermStats, TextTermStatsRequest, TimeRange,
83    TraversalExecutionBudget, TraversalOptions, TraversalRequest, VectorIndexKind,
84    VectorMetadataFilter, VectorRecord, VectorScanEntry, VectorScanPage, VectorScanRequest,
85    VectorSearchHit, VectorSearchRequest, VectorStoreCapabilities, VectorStoreInfo,
86    DEFAULT_TRAVERSAL_LIMIT, MAX_BATCH_WRITE_ERROR_DETAILS, MAX_BATCH_WRITE_ERROR_MESSAGE_CHARS,
87    MAX_SPARSE_SEARCH_TOP_K, MAX_TRAVERSAL_DEPTH, MAX_TRAVERSAL_LIMIT, MAX_TRAVERSAL_MILLIS,
88    MAX_TRAVERSAL_ROOTS, MAX_TRAVERSAL_WORK,
89};
90
91pub use khive_types::{
92    AgentRecord, AgentState, EdgeCategory, EdgeRelation, EventOutcome, SubstrateKind,
93    TerminalReason,
94};
95
96/// The current time as microseconds since the Unix epoch, the unit stored
97/// rows use for their timestamps.
98pub fn now_micros() -> i64 {
99    chrono::Utc::now().timestamp_micros()
100}