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//!
21//! // Create a handshake request
22//! let request = RpcRequest {
23//!     jsonrpc: "2.0".to_string(),
24//!     id: Some(RpcId::Number(1)),
25//!     method: ENGINE_HANDSHAKE.to_string(),
26//!     params: serde_json::to_value(HandshakeParams {
27//!         protocol_version: PROTOCOL_VERSION,
28//!         client_name: Some("nautilus-js".to_string()),
29//!         client_version: Some("0.1.0".to_string()),
30//!     }).unwrap(),
31//! };
32//!
33//! // Serialize to JSON
34//! let json = serde_json::to_string(&request).unwrap();
35//! ```
36
37#![forbid(unsafe_code)]
38
39pub mod error;
40pub mod methods;
41pub mod version;
42pub mod wire;
43
44pub use error::{ProtocolError, Result};
45pub use methods::{
46    BatchOperation,
47    CountParams,
48    // Request params
49    CreateManyParams,
50    CreateParams,
51    DeleteParams,
52    // Type aliases
53    FindFirstOrThrowParams,
54    FindFirstParams,
55    FindManyParams,
56    FindUniqueOrThrowParams,
57    FindUniqueParams,
58    GroupByParams,
59    HandshakeParams,
60    // Response types
61    HandshakeResult,
62    // Enums
63    IsolationLevel,
64    MutationResult,
65    QueryResult,
66    RawQueryParams,
67    RawStmtQueryParams,
68    SchemaValidateParams,
69    SchemaValidateResult,
70    TransactionBatchParams,
71    TransactionBatchResult,
72    TransactionCommitParams,
73    TransactionCommitResult,
74    TransactionRollbackParams,
75    TransactionRollbackResult,
76    TransactionStartParams,
77    TransactionStartResult,
78    UpdateParams,
79    // Method name constants
80    ENGINE_HANDSHAKE,
81    QUERY_COUNT,
82    QUERY_CREATE,
83    QUERY_CREATE_MANY,
84    QUERY_DELETE,
85    QUERY_FIND_FIRST,
86    QUERY_FIND_FIRST_OR_THROW,
87    QUERY_FIND_MANY,
88    QUERY_FIND_UNIQUE,
89    QUERY_FIND_UNIQUE_OR_THROW,
90    QUERY_GROUP_BY,
91    QUERY_RAW,
92    QUERY_RAW_STMT,
93    QUERY_UPDATE,
94    SCHEMA_VALIDATE,
95    TRANSACTION_BATCH,
96    TRANSACTION_COMMIT,
97    TRANSACTION_ROLLBACK,
98    TRANSACTION_START,
99};
100pub use version::{ProtocolVersion, MIN_PROTOCOL_VERSION, PROTOCOL_VERSION};
101pub use wire::{RpcError, RpcId, RpcRequest, RpcResponse};