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    SchemaValidateParams,
67    SchemaValidateResult,
68    TransactionBatchParams,
69    TransactionBatchResult,
70    TransactionCommitParams,
71    TransactionCommitResult,
72    TransactionRollbackParams,
73    TransactionRollbackResult,
74    TransactionStartParams,
75    TransactionStartResult,
76    UpdateParams,
77    // Method name constants
78    ENGINE_HANDSHAKE,
79    QUERY_COUNT,
80    QUERY_CREATE,
81    QUERY_CREATE_MANY,
82    QUERY_DELETE,
83    QUERY_FIND_FIRST,
84    QUERY_FIND_FIRST_OR_THROW,
85    QUERY_FIND_MANY,
86    QUERY_FIND_UNIQUE,
87    QUERY_FIND_UNIQUE_OR_THROW,
88    QUERY_GROUP_BY,
89    QUERY_UPDATE,
90    SCHEMA_VALIDATE,
91    TRANSACTION_BATCH,
92    TRANSACTION_COMMIT,
93    TRANSACTION_ROLLBACK,
94    TRANSACTION_START,
95};
96pub use version::{ProtocolVersion, MIN_PROTOCOL_VERSION, PROTOCOL_VERSION};
97pub use wire::{RpcError, RpcId, RpcRequest, RpcResponse};