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};