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