Skip to main content

graphrefly/
lib.rs

1//! # GraphReFly — Rust clean-slate package (`graphrefly-rs`, lib `graphrefly`)
2//!
3//! Reactive **universal reduction layer**: high fan-in/fan-out → information
4//! reduction → push. Not LLM-limited; performance first-class (D1).
5//!
6//! ## Authority — the truth lives in `~/src/graphrefly`
7//!
8//! This crate is the Rust **implementation**. The language-neutral authority —
9//! protocol spec, decisions, formal model, conformance scenarios — is in the
10//! `graphrefly` design repo. On any disagreement, **that repo wins**.
11//!
12//! | Concern | Source of truth |
13//! |---|---|
14//! | Decisions (D#) | `~/src/graphrefly/decisions/decisions.jsonl` |
15//! | Protocol rules (宪法) | `~/src/graphrefly/spec/rules.jsonl` |
16//! | Conformance (parity) | `~/src/graphrefly/spec/conformance.jsonl` |
17//! | Formal model | `~/src/graphrefly/formal/*.tla` |
18//! | Phase plan | `~/src/graphrefly/plan/phases.jsonl` |
19//!
20//! Sibling self-contained packages: `@graphrefly/ts` (`~/src/graphrefly-ts`),
21//! `@graphrefly/py` (`~/src/graphrefly-py`). Cross-language = a coarse wire
22//! bridge, never in-process (D32, no cross-language peer-deps).
23//!
24//! Rust package docs are intentionally package-local: rustdoc, examples, crate
25//! README material, release notes, and docs.rs output live with this repo. The
26//! shared public website/blog/docs architecture for graphrefly.dev lives in
27//! `~/src/graphrefly` under D563; this crate may link there, but does not mirror
28//! shared public docs by hand.
29//!
30//! ## Floor (cite, never violate)
31//!
32//! - **D22** — a graph is a single-thread causal/concurrency domain. This crate
33//!   is therefore `!Send + !Sync`: state lives behind `Rc<RefCell<…>>`, **not**
34//!   `Arc<Mutex<…>>`. The actor model is dropped. Parallelism = pool callback or
35//!   multi-graph + wire bridge.
36//! - **F-SYNC-CORE** — the wave-protocol core is synchronous; `dispatcher.invoke`
37//!   is `fn(&Ctx)` returning `()`. Async lives only in pools (LocalAsync) and the
38//!   wire bridge.
39//! - **F-DISPATCH-ALL** — every node fn goes through the dispatcher; no inline-fn
40//!   bypass.
41//! - **D4** — 8-verb closed set (node/graph/batch/state + producer/derived/effect/
42//!   mount). Operators are `node` sugar, per-language, never in parity (D6/D24).
43//! - **D8** — the fn boundary is `ctx.up(msgs)` / `ctx.down(msgs)`; one `msgs`
44//!   array = one wave. `ctx.up` is control-tier only (R-ctx-up).
45//!
46//! ## Clean-slate scope (what this crate builds)
47//!
48//! A self-contained Rust package (D32): protocol + node + dispatcher (LocalSync +
49//! LocalAsync pools) + ctx + batch + rewire, graph-layer Rust API, graph-owned
50//! 8-verb sugar, find/describe/observe/profile, operators, sources, storage
51//! helpers, app-infra helpers, environment adapters, and wire-bridge helpers.
52//! Operators remain per-language graph-layer sugar (D6/D24), not protocol verbs.
53//!
54//! > **Status:** the Rust package-local API surface is implemented in this crate;
55//! > the language-neutral authority remains `~/src/graphrefly`. Use this rustdoc
56//! > for Rust API syntax and package-local behavior notes, and use the shared
57//! > authority repo for protocol rules and cross-runtime conformance status.
58
59#![forbid(unsafe_code)]
60#![deny(missing_docs)]
61
62pub mod adapters;
63pub mod async_driver;
64pub mod batch;
65pub mod cascading_cache;
66pub mod checkpoint;
67pub mod combinators;
68pub mod composition;
69pub mod cqrs;
70pub mod ctx;
71pub mod data_structures;
72pub mod diagnostics;
73pub mod dispatcher;
74pub mod environment;
75pub mod graph;
76pub mod higher_order;
77#[doc(hidden)]
78pub mod host_boundary;
79mod identity;
80pub mod json;
81pub mod messaging;
82pub mod node;
83pub mod operators;
84pub mod patterns;
85pub mod process;
86pub mod protocol;
87pub mod render;
88pub mod resilience;
89pub mod scheduled_readiness;
90pub mod solutions;
91pub mod sources;
92pub mod storage;
93pub mod time;
94mod versioning;
95pub mod work_queue;
96#[cfg(feature = "tokio-worker")]
97pub mod worker;
98
99pub use adapters::agentic_memory_storage::{
100    agentic_memory_record_change_frame, agentic_memory_record_snapshot_frame,
101    agentic_memory_records_snapshot_key, load_agentic_memory_records_state,
102    open_persistent_agentic_memory_records, persist_agentic_memory_records,
103    AgenticMemoryRecordsPersistence, AgenticMemoryRecordsPersistenceCursor,
104    AgenticMemoryRecordsPersistenceErrorFact, AgenticMemoryRecordsPersistenceStatus,
105    AgenticMemoryRecordsPersistenceStatusFact, AgenticMemoryRecordsRestoreState,
106    LoadAgenticMemoryRecordsStateOptions, OpenPersistentAgenticMemoryRecords,
107    OpenPersistentAgenticMemoryRecordsOptions, PersistAgenticMemoryRecordsOptions,
108    AGENTIC_MEMORY_RECORD_CHANGE_FORMAT, AGENTIC_MEMORY_RECORD_SNAPSHOT_FORMAT,
109    AGENTIC_MEMORY_RECORD_STORAGE_FRAME_VERSION,
110};
111pub use adapters::bridge::{
112    remote_call, remote_call_with_options, remote_responder, remote_responder_handler, wire_bridge,
113    wire_bridge_envelope, wire_bridge_idempotency_key, wire_edge_group, RemoteCallBundle,
114    RemoteCallError, RemoteCallOptions, RemoteCallRequest, RemoteCallResponse, RemoteCallResult,
115    RemoteCallStatus, RemoteCallStatusState, RemoteCallTimeout, RemoteResponderBundle,
116    RemoteResponderEvent, RemoteResponderHandlerDefinition, RemoteResponderOptions,
117    RemoteResponderStatus, RemoteResponderStatusState, WireBridgeAck, WireBridgeAttempt,
118    WireBridgeBundle, WireBridgeCommand, WireBridgeEnvelope, WireBridgeEnvelopeError,
119    WireBridgeEnvelopeInput, WireBridgeEnvelopeType, WireBridgeEvent, WireBridgeInbound,
120    WireBridgeIngress, WireBridgeMetadata, WireBridgeNack, WireBridgeOptions, WireBridgePayload,
121    WireBridgeReceipt, WireBridgeStatus, WireBridgeStatusState, WireEdgeGroupBundle,
122    WireEdgeGroupEdge, WireEdgeGroupIssue, WireEdgeGroupIssueCode, WireEdgeGroupOptions,
123    WireEdgeGroupStatus, WireEdgeGroupStatusState,
124};
125pub use adapters::bridge_protobuf::{
126    decode_canonical_wire_bridge_envelope, decode_canonical_wire_edge_frame,
127    decode_wire_bridge_protobuf_bytes, encode_canonical_wire_bridge_envelope,
128    encode_canonical_wire_edge_frame, encode_wire_bridge_protobuf_bytes, CanonicalProtobufError,
129    CanonicalProtobufErrorCategory, CanonicalWireBridgeDataBody, CanonicalWireBridgeEnvelope,
130    CanonicalWireBridgeMetadata, CanonicalWireBridgePayload, CanonicalWireEdgeFrame,
131    CanonicalWireEdgeKind, WireBridgeProtobufDataBody, WireBridgeProtobufDecode,
132    WireBridgeProtobufEncode, WireBridgeProtobufEnvelope, WireBridgeProtobufHelperShape,
133    WireBridgeProtobufIssue, WireBridgeProtobufPayload, WireBridgeProtobufStatus,
134    WireBridgeProtobufStatusKind, WIRE_BRIDGE_PROTOBUF_HELPER_SHAPE,
135};
136pub use adapters::environment::{
137    to_http, to_http_with_options, to_process, to_process_with_options, to_websocket,
138    to_websocket_with_options, websocket_session, websocket_session_with_options,
139    OutboundAdapterOptions, OutboundBundle, OutboundEvent, OutboundState, OutboundStatus,
140    WebSocketSessionBundle, WebSocketSessionCommand, WebSocketSessionInbound,
141    WebSocketSessionLifecycle, WebSocketSessionOptions, WebSocketSessionOutbound,
142    WebSocketSessionSendPolicy, WebSocketSessionStateKind, WebSocketSessionStatus,
143};
144pub use adapters::reactive_collection_storage::{
145    open_persistent_reactive_index, open_persistent_reactive_list, open_persistent_reactive_log,
146    open_persistent_reactive_map, persist_reactive_index, persist_reactive_list,
147    persist_reactive_log, persist_reactive_map, OpenPersistentReactiveIndex,
148    OpenPersistentReactiveIndexOptions, OpenPersistentReactiveList,
149    OpenPersistentReactiveListOptions, OpenPersistentReactiveLog, OpenPersistentReactiveLogOptions,
150    OpenPersistentReactiveMap, OpenPersistentReactiveMapOptions, PersistReactiveCollectionOptions,
151    ReactiveCollectionPersistence, ReactiveCollectionPersistenceCursor,
152    ReactiveCollectionPersistenceErrorFact, ReactiveCollectionPersistenceStatus,
153    ReactiveCollectionPersistenceStatusFact,
154};
155#[cfg(feature = "tokio")]
156pub use async_driver::TokioLocalDriver;
157pub use async_driver::{DriverCancel, LocalAsyncDriver};
158pub use batch::{batch, BatchCtx};
159pub use cascading_cache::{
160    reactive_cascading_cache, CascadingCacheEvent, CascadingCachePolicy, CascadingCacheStatus,
161    ReactiveCascadingCache, ReactiveCascadingCacheLoadFn, ReactiveCascadingCacheOptions,
162};
163pub use checkpoint::{
164    default_restore_registry, restore_graph, restore_registry, restored_opts, GraphCheckpoint,
165    GraphCheckpointCtxState, GraphCheckpointEdge, GraphCheckpointFactory, GraphCheckpointJson,
166    GraphCheckpointLifecycle, GraphCheckpointMount, GraphCheckpointNode, GraphCheckpointTerminal,
167    GraphCheckpointValue, GraphRestoreDefinition, GraphRestoreDescriptor, GraphRestoreEntry,
168    GraphRestoreError, GraphRestoreRegistry, GraphRestoreResult, MapJsonRestoreDescriptor,
169    RestoreDefineCtx, RestoreGraphOptions, RestoreNodeDefinition, RestoreNodeKind,
170    StateRestoreDescriptor, GRAPH_CHECKPOINT_VERSION,
171};
172
173#[doc(hidden)]
174pub mod __binding_private {
175    pub use crate::checkpoint::register_checkpoint_json_encoder;
176}
177pub use combinators::{
178    buffer, buffer_count, combine, combine_latest, concat, race, sample, take_until,
179    with_latest_from, zip,
180};
181pub use composition::{
182    pipe, stratify, stratify_branch, Pipe, Stratified, StratifyOptions, StratifyRule,
183};
184pub use cqrs::{
185    cqrs, cqrs_command_handler, cqrs_projection, cqrs_with_options, CqrsAuditOutcome,
186    CqrsAuditRecord, CqrsBundle, CqrsCommand, CqrsCommandHandlerDefinition, CqrsCursor,
187    CqrsDedupePolicy, CqrsDedupeSnapshot, CqrsDedupeWindow, CqrsError, CqrsErrorCode, CqrsEvent,
188    CqrsEventDraft, CqrsOptions, CqrsProjection, CqrsProjectionError, CqrsProjectionErrorCode,
189    CqrsProjectionFrame, CqrsProjectionOptions, CqrsProjectionReducer, CqrsProjectionStatus,
190    CqrsProjectionStatusState, CqrsRuntimeFact, CqrsStatus, CqrsStatusState,
191};
192pub use ctx::{Ctx, DeferredCtx, DepTerminal, WaveData};
193pub use data_structures::{
194    merge_reactive_logs, reactive_index, reactive_list, reactive_log, reactive_map,
195    restore_reactive_index, restore_reactive_list, restore_reactive_log, restore_reactive_map,
196    scan_log, IndexChange, IndexRow, ListChange, LogChange, MapChange, ReactiveIndex,
197    ReactiveIndexOptions, ReactiveList, ReactiveListOptions, ReactiveLog, ReactiveLogOptions,
198    ReactiveMap, ReactiveMapOptions, ReactiveView,
199};
200pub use diagnostics::{
201    explain_path, profile_summary, profile_summary_from_snapshots, reachable, topology_diff,
202    validate_no_islands, CausalChain, CausalStep, DescribeChangeset, DescribeEvent,
203    ExplainPathOptions, ExplainPathReason, IslandReport, ProfileSummary, ProfileSummaryNode,
204    ProfileSummaryOptions, ProfileSummaryStatus, ReachableDirection, ReachableOptions,
205    ReachableResult, ValidateNoIslandsResult,
206};
207pub use dispatcher::{default_dispatcher, Dispatcher, PoolKind};
208#[cfg(feature = "tokio-http")]
209pub use environment::TokioHttpDriver;
210#[cfg(feature = "tokio-http-stream")]
211pub use environment::TokioHttpStreamDriver;
212#[cfg(feature = "tokio")]
213pub use environment::TokioProcessDriver;
214#[cfg(feature = "tokio-websocket")]
215pub use environment::TokioWebSocketDriver;
216pub use environment::{
217    EnvironmentDrivers, HttpRequest, HttpResponse, HttpStreamDriverEvent, HttpStreamHead,
218    LocalHttpDriver, LocalHttpStreamDriver, LocalProcessDriver, LocalSseDriver,
219    LocalWebSocketDriver, LocalWebSocketSession, LocalWebhookDriver, ProcessCommand, ProcessResult,
220    SseDriverEvent, SseEvent, SseRequest, WebSocketDriverEvent, WebSocketEvent, WebSocketRequest,
221    WebSocketSend, WebSocketSendResult, WebhookDriverEvent, WebhookEvent, WebhookRegistration,
222};
223pub use graph::{
224    graph, graph_opts, DescribeEdge, DescribeNode, DescribeOpts, DescribeSnapshot, DescribeValue,
225    Explain, Graph, GraphNode, GraphNodeOpts, GraphObserver, GraphOptions, GraphTopologyObserver,
226    NodeProfile, ObserveEvent, ObserveMessage, ObserveStream, Profile, RestoreFactoryMeta,
227    TopologyEvent, TopologyEventKind, TopologyGroup, TopologyGroupOptions, TopologyStream, Values,
228};
229pub use higher_order::{
230    concat_map, exhaust_map, flat_map, merge_map, merge_map_with_options, repeat, switch_map,
231    MergeMapOptions,
232};
233pub use json::{
234    assert_decimal_integer_string, assert_non_negative_decimal_integer_string,
235    decimal_string_to_i128, i128_to_decimal_string, is_decimal_integer_string,
236    is_non_negative_decimal_integer_string, json_codec_for, non_negative_decimal_string_to_u128,
237    stable_json_string, strict_canonical_json_bytes, strict_json_codec_for, strict_json_decode,
238    u128_to_non_negative_decimal_string, Codec, DecimalIntegerString, JsonCodec, JsonCodecError,
239    JsonCodecResult, JsonValue, NonNegativeDecimalIntegerString, StrictJsonCodec,
240};
241pub use messaging::{
242    event_message, is_json_schema_valid, message_bus, to_topic, validate_json_schema,
243    validate_topic_message_payload, DataIssue, EventMessage, EventMessageOptions, JsonSchema,
244    JsonSchemaAdditionalProperties, JsonSchemaItems, JsonSchemaType, JsonSchemaTypeSpec,
245    JsonSchemaValidationError, JsonSchemaValidationResult, MessageBus, MessageBusAvailablePage,
246    MessageBusAvailableParams, MessageBusCatalogEntry, MessageBusCatalogPage,
247    MessageBusCatalogParams, MessageBusCommand, MessageBusCursor, MessageBusDeadLetterEntry,
248    MessageBusDeadLetterPage, MessageBusDeadLetterParams, MessageBusDedupeAction,
249    MessageBusDedupePolicy, MessageBusOptions, MessageBusPullProjection, MessageBusRetentionPolicy,
250    MessageBusStatus, MessageBusStatusKind, MessageBusSubscription, MessageBusSubscriptionFrom,
251    MessageBusSubscriptionOptions, MessageBusTopicPage, MessageBusTopicParams,
252    MessageBusTopicPolicy, MessageBusTopicProjection, MessageEnvelope, ToTopicBundle, TopicMessage,
253    CONTEXT_TOPIC, DEFERRED_TOPIC, INJECTIONS_TOPIC, PROMPTS_TOPIC, RESPONSES_TOPIC, SPAWNS_TOPIC,
254    STANDARD_TOPICS, TODOS_TOPIC,
255};
256pub use node::{Core, Node, NodeOpts, Pausable, Status};
257pub use operators::{
258    catch_error, distinct_until_changed, element_at, filter, find, first, first_any, init_node,
259    last, last_any, map, merge, on_first_data, on_first_data_where, pairwise, reduce, rescue, scan,
260    settle, settle_by, skip, take, take_while, tap, tap_first, valve, Operator,
261};
262pub use patterns::{
263    admission_filter_3d, admission_scored, cosine_similarity, filter_memory_fragments,
264    knowledge_graph_reducer_bundle, memory_fragment_matches_query, memory_fragment_valid_at,
265    memory_retrieval_bundle, shard_by_tenant, validate_memory_fragment, AdmissionScore3DFn,
266    AdmissionScore3DOptions, AdmissionScoreFn, AdmissionScoredOptions, AdmissionScores,
267    AdmissionThresholds, CollectionEntry, FactId, FactStore, KnowledgeAssertion,
268    KnowledgeAssertionObject, KnowledgeGraphCursor, KnowledgeGraphEntity, KnowledgeGraphError,
269    KnowledgeGraphErrorCode, KnowledgeGraphIndex, KnowledgeGraphPolicy,
270    KnowledgeGraphReducerBundle, KnowledgeGraphReducerBundleOptions, KnowledgeGraphRelation,
271    KnowledgeGraphSnapshot, KnowledgeGraphStatus, KnowledgeGraphStatusState, KnowledgeGraphTopic,
272    MemoryAnswer, MemoryFragment, MemoryFragmentValidation, MemoryQuery, MemoryRetrievalBundle,
273    MemoryRetrievalBundleOptions, MemoryRetrievalCursor, MemoryRetrievalError,
274    MemoryRetrievalErrorCode, MemoryRetrievalFact, MemoryRetrievalIndex, MemoryRetrievalQuery,
275    MemoryRetrievalSnapshot, MemoryRetrievalStatus, MemoryRetrievalStatusState, OutcomeSignal,
276    RankedCollectionEntry, RetrievalEntry, RetrievalEntrySource, RetrievalQuery, RetrievalTrace,
277    ShardByFn, ShardByTenantConfig, ShardByTenantOptions, ShardKey, StoreReadHandle, TenantShardFn,
278    VectorSearchResult,
279};
280pub use process::{
281    process_bundle, process_effect_runner, ProcessAuditOutcome, ProcessAuditRecord, ProcessBundle,
282    ProcessBundleOptions, ProcessCursor, ProcessEffectCommandPayload, ProcessEffectCommandType,
283    ProcessEffectOutcome, ProcessEffectOutcomeKind, ProcessEffectRequest,
284    ProcessEffectRequestDraft, ProcessEffectRunnerBundle, ProcessEffectRunnerError,
285    ProcessEffectRunnerErrorCode, ProcessEffectRunnerOptions, ProcessEffectRunnerStatus,
286    ProcessEffectRunnerStatusState, ProcessError, ProcessErrorCode, ProcessEvent,
287    ProcessEventDraft, ProcessReducer, ProcessReducerFn, ProcessReduction, ProcessRuntimeFact,
288    ProcessStatus, ProcessStatusState,
289};
290pub use protocol::{AnyValue, GraphError, Handle, LockId, Message, PullDemand, Tier, Wave};
291pub use render::{
292    describe_to_ascii, describe_to_d2, describe_to_d2_with_direction, describe_to_json,
293    describe_to_mermaid, describe_to_mermaid_url, describe_to_mermaid_with_direction,
294    describe_to_pretty, mermaid_live_url, DiagramDirection,
295};
296pub use resilience::{
297    breaker_status_node, rate_limit_bundle, retry_status_node, timeout_bundle, BackoffPolicy,
298    BreakerState, BreakerStatus, RateLimitBundle, RateLimitStatus, RetryEvent, RetryPolicy,
299    RetryState, RetryStatus, TimeoutBundle, TimeoutStatus,
300};
301pub use scheduled_readiness::{
302    parse_scheduled_readiness_requested, scheduled_readiness_projector,
303    ScheduledReadinessAuditRecord, ScheduledReadinessBundle, ScheduledReadinessClock,
304    ScheduledReadinessOptions, ScheduledReadinessOverdue, ScheduledReadinessPending,
305    ScheduledReadinessReady, ScheduledReadinessRequested, ScheduledReadinessStatus,
306    ScheduledReadinessStatusState, ScheduledReadinessViews, SourceRef,
307};
308pub use solutions::{
309    agentic_memory_bundle, agentic_memory_consolidation_bundle,
310    agentic_memory_context_packing_bundle, agentic_memory_kg_projection_bundle,
311    agentic_memory_record_frame, agentic_memory_record_frame_codec,
312    agentic_memory_retention_bundle, validate_agentic_memory_artifact_kind,
313    validate_agentic_memory_kind, validate_agentic_memory_persistence_level,
314    validate_agentic_memory_record, validate_agentic_memory_scope, AgenticMemoryArtifactKind,
315    AgenticMemoryBundle, AgenticMemoryBundleOptions, AgenticMemoryConsolidationBundle,
316    AgenticMemoryConsolidationBundleOptions, AgenticMemoryConsolidationCommand,
317    AgenticMemoryConsolidationCommandKind, AgenticMemoryConsolidationCursor,
318    AgenticMemoryConsolidationOutcome, AgenticMemoryConsolidationRecordDraft,
319    AgenticMemoryConsolidationRequest, AgenticMemoryConsolidationResult,
320    AgenticMemoryConsolidationResultState, AgenticMemoryConsolidationSnapshot,
321    AgenticMemoryConsolidationStatus, AgenticMemoryContext, AgenticMemoryContextEntry,
322    AgenticMemoryContextPackingBundle, AgenticMemoryContextPackingBundleOptions,
323    AgenticMemoryContextPackingCursor, AgenticMemoryContextPackingPolicy,
324    AgenticMemoryContextPackingSnapshot, AgenticMemoryContextPackingStatus, AgenticMemoryCursor,
325    AgenticMemoryError, AgenticMemoryErrorCode, AgenticMemoryFieldValidation,
326    AgenticMemoryKgAssertionDraft, AgenticMemoryKgProjectionBundle,
327    AgenticMemoryKgProjectionBundleOptions, AgenticMemoryKgProjectionCursor,
328    AgenticMemoryKgProjectionSnapshot, AgenticMemoryKgProjectionStatus, AgenticMemoryKind,
329    AgenticMemoryPackedContext, AgenticMemoryPersistenceLevel, AgenticMemoryProjection,
330    AgenticMemoryRecord, AgenticMemoryRecordFrame, AgenticMemoryRecordFrameCodec,
331    AgenticMemoryRecordMetadata, AgenticMemoryRecordValidation, AgenticMemoryRetentionBundle,
332    AgenticMemoryRetentionBundleOptions, AgenticMemoryRetentionCommand,
333    AgenticMemoryRetentionCommandKind, AgenticMemoryRetentionCursor,
334    AgenticMemoryRetentionSnapshot, AgenticMemoryRetentionStatus, AgenticMemoryScope,
335    AgenticMemorySourceProjection, AgenticMemoryStatus, AgenticMemoryStatusState,
336    AgenticMemoryTextProjection, AGENTIC_MEMORY_RECORD_FRAME_FORMAT,
337    AGENTIC_MEMORY_RECORD_FRAME_VERSION,
338};
339pub use sources::{
340    empty, first_sync_value_from, from_cron, from_cron_with_options, from_fs_watch,
341    from_fs_watch_with_options, from_git_hook, from_git_hook_with_options, from_http,
342    from_http_with_options, from_iter, from_process, from_sse, from_sse_with_options, from_timer,
343    from_webhook, from_webhook_with_options, from_websocket, from_websocket_with_options,
344    future_local, interval, matches_cron, never, of, parse_cron, run_process,
345    run_process_with_options, single_sync_value_from, stream_local, throw_error, timer,
346    CronInstant, CronParseError, CronSchedule, CronTick, FromCronOptions, FromFsWatchOptions,
347    FromGitHookOptions, FsEvent, FsEventKind, GitEvent, GitHookType, SyncValueFromError,
348};
349pub use storage::{
350    append_log_key, append_log_storage, assert_wal_frame, change_envelope_codec, codec_kv_storage,
351    content_addressed_kv, content_addressed_storage, dict_kv, envelope_change, file_append_log,
352    file_backend, file_kv, load_reactive_index_state, load_reactive_list_state,
353    load_reactive_log_state, load_reactive_map_state, memory_append_log, memory_kv,
354    memory_multi_writer_append_log, multi_writer_append_log_storage, now_ns, observe_event_frame,
355    observe_event_frame_codec, reactive_collection_change_frame,
356    reactive_collection_change_frame_codec, reactive_collection_snapshot_frame,
357    reactive_collection_snapshot_frame_codec, reactive_collection_snapshot_key,
358    read_append_log_page, read_observe_event_log_page, read_through_kv, tiered_read_through,
359    verify_wal_frame_checksum, wal_frame, wal_frame_checksum, wal_frame_codec, wal_frame_key,
360    wal_frame_prefix, AppendLogEntry, AppendLogPage, AppendLogReadOptions, AppendLogStorage,
361    AppendLogStorageTier, ByteStorageBackend, ChangeEnvelope, ChangeEnvelopeCodec,
362    ChangeEnvelopeOptions, ChangeLifecycle, CodecKvStorage, ContentAddressedKeyContext,
363    ContentAddressedKv, ContentAddressedKvOptions, ContentAddressedMode, ContentAddressedStorage,
364    ContentAddressedStorageOptions, FileAppendLogOptions, FileBackend, FileBackendOptions, FileKv,
365    KvGeneration, KvStorageTier, KvVersionedRead, LoadReactiveCollectionStateOptions, MemoryKv,
366    MultiWriterAppendLogStorage, ObserveEventFrame, ObserveEventFrameCodec,
367    ObserveEventFrameOptions, ObserveEventLogPage, PromotionPolicy, ReactiveCollectionChangeFrame,
368    ReactiveCollectionChangeFrameCodec, ReactiveCollectionChangesRestoreMeta,
369    ReactiveCollectionKind, ReactiveCollectionRestoreSource, ReactiveCollectionRestoreState,
370    ReactiveCollectionSnapshotFrame, ReactiveCollectionSnapshotFrameCodec,
371    ReactiveCollectionSnapshotRestoreMeta, ReactiveIndexRestoreState, ReactiveListRestoreState,
372    ReactiveLogRestoreState, ReactiveMapRestoreState, ReadThroughErrorContext, ReadThroughErrorFn,
373    ReadThroughErrorStage, ReadThroughLoadFn, ReadThroughLookupFact, ReadThroughLookupTier,
374    ReadThroughMissContext, ReadThroughMissFn, ReadThroughOutcome, ReadThroughPromotionFact,
375    StorageError, StorageResult, TieredReadThroughOptions, TieredReadThroughResult,
376    TieredReadThroughStatus, WalFrame, WalFrameBody, WalFrameCodec, WalFrameOptions,
377    WalFrameTimestampNs, APPEND_LOG_SEQ_PAD, REACTIVE_COLLECTION_CHANGE_FORMAT,
378    REACTIVE_COLLECTION_FRAME_VERSION, REACTIVE_COLLECTION_SNAPSHOT_FORMAT, WAL_FORMAT_VERSION,
379    WAL_FRAME_SEQ_PAD, WAL_KEY_SEGMENT,
380};
381pub use time::{
382    audit, audit_time, buffer_time, debounce, debounce_time, delay, throttle, throttle_time,
383    timeout,
384};
385pub use versioning::{
386    default_node_version_hash, NodeVersion, NodeVersionHashFn, NodeVersioningPolicy,
387    ResolvedNodeVersioningPolicy,
388};
389pub use work_queue::readiness::{
390    work_queue_lease_expiration_command, work_queue_lease_expiration_command_projector,
391    work_queue_readiness_handoff_projector, work_queue_scheduled_readiness_projector,
392    WorkQueueLeaseExpirationCommandProjectorOptions, WorkQueueReadinessCandidate,
393    WorkQueueReadinessCandidateKind, WorkQueueReadinessHandoffBundle,
394    WorkQueueReadinessHandoffOptions, WorkQueueReadinessScheduleKind, WorkQueueReadinessStatus,
395    WorkQueueReadinessStatusState, WorkQueueReadinessViews, WorkQueueScheduledReadinessBundle,
396    WorkQueueScheduledReadinessOptions,
397};
398pub use work_queue::{
399    work_queue, WorkQueue, WorkQueueActiveLease, WorkQueueAvailableItem, WorkQueueAvailablePage,
400    WorkQueueAvailableParams, WorkQueueAvailableProjection, WorkQueueClaimOptions,
401    WorkQueueCommand, WorkQueueDeadLetterPage, WorkQueueDeadLetterParams, WorkQueueDerivedState,
402    WorkQueueMessageBusRef, WorkQueueOptions, WorkQueueProjection, WorkQueueRecord,
403    WorkQueueStatus, WorkQueueStatusKind, WorkQueueSubmit, WorkQueueSubmitOptions,
404    WorkQueueWorkSnapshot,
405};
406#[cfg(feature = "tokio-worker")]
407pub use worker::worker_derived;