sqry_daemon_protocol/lib.rs
1//! `sqry-daemon-protocol` — sqryd daemon wire types + framing codec.
2//!
3//! This is a **leaf crate** with no dependencies on any other `sqry-*`
4//! crate. Both the sqryd daemon itself (`sqry-daemon`) and the
5//! client-side crates that need to speak the wire format
6//! (`sqry-daemon-client`, `sqry-lsp`, `sqry-mcp`) depend on this crate
7//! without creating a dependency cycle.
8//!
9//! # Module layout
10//!
11//! - [`framing`] — 4-byte little-endian length-prefix codec
12//! ([`framing::read_frame`] / [`framing::write_frame`] plus typed
13//! JSON wrappers and [`framing::FrameError`]).
14//! - [`protocol`] — wire types: [`DaemonHello`], [`DaemonHelloResponse`],
15//! [`ShimProtocol`], [`ShimRegister`], [`ShimRegisterAck`],
16//! [`ResponseEnvelope`], [`ResponseMeta`], [`WorkspaceState`],
17//! [`JsonRpcVersion`], [`JsonRpcId`], [`JsonRpcRequest`],
18//! [`JsonRpcResponse`], [`JsonRpcPayload`], [`JsonRpcError`].
19//! - [`revision`] — revision-aware workspace selectors, identities,
20//! artifact ids, resident status, and daemon management payloads.
21//!
22//! # First-frame discrimination
23//!
24//! The router in `sqry-daemon` shape-discriminates the very first
25//! frame between [`DaemonHello`] (CLI / JSON-RPC clients) and
26//! [`ShimRegister`] (Phase 8c shim byte-pump clients). All four
27//! first-frame structs — [`DaemonHello`], [`DaemonHelloResponse`],
28//! [`ShimRegister`], [`ShimRegisterAck`] — carry
29//! `#[serde(deny_unknown_fields)]` so that a first frame matching
30//! neither shape is rejected with `-32600 Invalid Request` rather than
31//! being silently routed to the wrong path.
32
33pub mod framing;
34pub mod protocol;
35pub mod revision;
36
37pub use protocol::{
38 CancelRebuildResult, DaemonHello, DaemonHelloResponse, ENVELOPE_VERSION, JsonRpcError,
39 JsonRpcId, JsonRpcPayload, JsonRpcRequest, JsonRpcResponse, JsonRpcVersion, LoadResult,
40 LogicalWorkspaceWire, QueryRequest, QueryResult, RebuildResult, RebuildStatus,
41 ResponseEnvelope, ResponseMeta, SearchItem, SearchMode, SearchRequest, SearchResult,
42 ShimProtocol, ShimRegister, ShimRegisterAck, SourceRootBinding, WorkspaceId,
43 WorkspaceIndexStatus, WorkspaceSourceRootStatus, WorkspaceState,
44};
45pub use revision::{
46 ArtifactId, ArtifactInputDigest, ListRevisionsRequest, ListRevisionsResult,
47 LoadRevisionRequest, LoadRevisionResult, ObjectFormat, PruneRefusal, PruneRevisionCandidate,
48 PruneRevisionsRequest, PruneRevisionsResult, PruneWorktreeCandidate, RepositoryIdentity,
49 ResidentHandleKind, ResolvedRevision, RevisionId, RevisionLoadState, RevisionQueryMetadata,
50 RevisionQueryTarget, RevisionSelector, RevisionStatus, RevisionStatusRequest, SourceByteMode,
51 UnloadRevisionRequest, UnloadRevisionResult,
52};