Skip to main content

nautilus_protocol/
lib.rs

1//! # Nautilus Protocol
2//!
3//! JSON-RPC 2.0 protocol for multi-language Nautilus clients.
4//!
5//! This crate defines the stable wire format for communication between:
6//! - Language-specific clients (JavaScript, Python, etc.)
7//! - The Nautilus engine (Rust binary running over stdin/stdout)
8//!
9//! ## Protocol Overview
10//!
11//! - **Transport**: Line-delimited JSON over stdin/stdout
12//! - **Format**: JSON-RPC 2.0
13//! - **Versioning**: Protocol version included in every request
14//!
15//! ## Example Usage
16//!
17//! ```rust
18//! use nautilus_protocol::*;
19//! use serde_json::json;
20//! let request = RpcRequest {
21//!     jsonrpc: "2.0".to_string(),
22//!     id: Some(RpcId::Number(1)),
23//!     method: ENGINE_HANDSHAKE.to_string(),
24//!     params: serde_json::to_value(HandshakeParams {
25//!         protocol_version: PROTOCOL_VERSION,
26//!         client_name: Some("nautilus-js".to_string()),
27//!         client_version: Some("0.1.0".to_string()),
28//!     }).unwrap(),
29//! };
30//! let json = serde_json::to_string(&request).unwrap();
31//! ```
32
33#![forbid(unsafe_code)]
34
35pub mod error;
36pub mod methods;
37pub mod version;
38pub mod wire;
39
40pub use error::{BatchOperationErrorData, ProtocolError, ProtocolErrorCause, Result};
41pub use methods::{
42    BatchOperation, CountParams, CreateManyParams, CreateParams, DeleteParams,
43    FindFirstOrThrowParams, FindFirstParams, FindManyParams, FindUniqueOrThrowParams,
44    FindUniqueParams, GroupByParams, HandshakeParams, HandshakeResult, IsolationLevel,
45    MutationResult, QueryResult, RawQueryParams, RawStmtQueryParams, SchemaValidateParams,
46    SchemaValidateResult, TransactionBatchParams, TransactionBatchResult, TransactionCommitParams,
47    TransactionCommitResult, TransactionRollbackParams, TransactionRollbackResult,
48    TransactionStartParams, TransactionStartResult, UpdateParams, ENGINE_HANDSHAKE, QUERY_COUNT,
49    QUERY_CREATE, QUERY_CREATE_MANY, QUERY_DELETE, QUERY_FIND_FIRST, QUERY_FIND_FIRST_OR_THROW,
50    QUERY_FIND_MANY, QUERY_FIND_UNIQUE, QUERY_FIND_UNIQUE_OR_THROW, QUERY_GROUP_BY, QUERY_RAW,
51    QUERY_RAW_STMT, QUERY_UPDATE, SCHEMA_VALIDATE, TRANSACTION_BATCH, TRANSACTION_COMMIT,
52    TRANSACTION_ROLLBACK, TRANSACTION_START,
53};
54pub use version::{ProtocolVersion, MIN_PROTOCOL_VERSION, PROTOCOL_VERSION};
55pub use wire::{RpcError, RpcId, RpcRequest, RpcResponse};