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::{
47    EdgeInsertIfAbsentOutcome, GraphGuardValueKind, GraphStatementGuard,
48    GraphStatementGuardFailure, GraphStatementGuardFailureReason, GraphStore,
49};
50pub use khive_types::vector::{
51    decode_f32_le, decode_f32_native, encode_f32_le, encode_f32_native, VectorCodecError,
52};
53pub use note::{FilterOp, Note, NoteFilter, NoteStore, NoteVisibility, SortDir};
54pub use request_context::{
55    await_request_read_phase, capture_request_read_context, effective_request_read_deadline,
56    ensure_request_read_active, inherit_request_read_cancellation, inherit_request_read_context,
57    request_read_is_cancelled, request_read_timeout_from_env, scope_request_read_cancellation,
58    scope_request_read_deadline, scope_request_read_deadline_at,
59    wait_for_request_read_cancellation, RequestReadContext, RequestReadDeadline,
60    RequestReadStopReason, DEFAULT_REQUEST_READ_TIMEOUT_SECS,
61};
62pub use sparse::{SparseStore, SparseStoreFactory};
63pub use sql::{AtomicUnitOp, BoxFuture, SqlAccess, SqlReader, SqlWriter, TopLevelMaintenance};
64pub use telemetry::{
65    ChannelBackoffArmedPayload, ChannelBackoffResetPayload, ChannelHeartbeatPersistFailedPayload,
66    ChannelPollFailedPayload, ChannelPollStartedPayload, ChannelPollSucceededPayload,
67    CheckpointOutcomeRecordedPayload, ConfigLockedPayload, LifecycleEvent, PhaseCancelledPayload,
68    PhaseCompletedPayload, PhaseStartedPayload,
69};
70pub use text::{TextSearch, TextSearchFactory};
71pub use types::StorageResult;
72pub use vectors::{VectorStore, VectorStoreFactory};
73
74pub use types::{
75    BatchWriteError, BatchWriteErrorClass, BatchWriteErrorCount, BatchWriteRetryability,
76    BatchWriteSummary, BoundedCount, DeleteMode, DirectedNeighborHit, Direction, Edge, EdgeFilter,
77    EdgeSeekPage, EdgeSortField, EdgeUpsertDisposition, EdgeUpsertRefusal, EdgeUpsertRequest,
78    EdgeUpsertResult, GraphPath, GuardedBatchOutcome, GuardedBatchRefusal, GuardedEdgeBatchRefusal,
79    GuardedEdgeBatchUpsertOutcome, GuardedEdgeUpsertOutcome, GuardedWriteOutcome,
80    IndexRebuildScope, LimitReport, LinkId, MissingEndpoints, NeighborCursor, NeighborHit,
81    NeighborQuery, OrphanSweepConfig, OrphanSweepResult, Page, PageRequest, PathNode,
82    PropertyFilter, PropertyOp, SeekCursor, SeekPage, SortDirection, SortOrder, SparseRecord,
83    SparseSearchHit, SparseSearchRequest, SparseVector, SqlRow, SqlStatement, SqlValue,
84    TextDocument, TextFilter, TextGatherMode, TextIndexStats, TextQueryMode, TextSearchHit,
85    TextSearchOptions, TextSearchRequest, TextTermStats, TextTermStatsRequest, TimeRange,
86    TraversalExecutionBudget, TraversalOptions, TraversalRequest, VectorIndexKind,
87    VectorMetadataFilter, VectorRecord, VectorScanEntry, VectorScanPage, VectorScanRequest,
88    VectorSearchHit, VectorSearchRequest, VectorStoreCapabilities, VectorStoreInfo,
89    DEFAULT_TRAVERSAL_LIMIT, MAX_BATCH_WRITE_ERROR_DETAILS, MAX_BATCH_WRITE_ERROR_MESSAGE_CHARS,
90    MAX_SPARSE_SEARCH_TOP_K, MAX_TRAVERSAL_DEPTH, MAX_TRAVERSAL_LIMIT, MAX_TRAVERSAL_MILLIS,
91    MAX_TRAVERSAL_ROOTS, MAX_TRAVERSAL_WORK,
92};
93
94pub use khive_types::{
95    AgentRecord, AgentState, EdgeCategory, EdgeRelation, EventOutcome, SubstrateKind,
96    TerminalReason,
97};
98
99/// The current time as microseconds since the Unix epoch, the unit stored
100/// rows use for their timestamps.
101pub fn now_micros() -> i64 {
102    chrono::Utc::now().timestamp_micros()
103}