Skip to main content

Module matrixrpc

Module matrixrpc 

Source
Expand description

MatrixRPC - Dynamic Extension Protocol

A JSON-RPC 2.0 based protocol for dynamic extension communication. Supports both Stdio and TCP transport modes.

§Architecture

+----------------+     +----------------+     +----------------+
|   Extension    | <--|   Transport    |<-->|   Host/App     |
|   (Plugin)     | -->|   (Stdio/TCP)  | -->|   (Core)       |
+----------------+     +----------------+     +----------------+

§Components

  • protocol: JSON-RPC 2.0 types (Request, Response, Error, etc.)
  • transport: Communication layer (Stdio, TCP)
  • config: Configuration loading (matrixrpc.toml)
  • service: Extension service data models
  • registry: Service registration and discovery
  • lifecycle: Connection and lifecycle management
  • router: Tool and node routing logic
  • executor: Tool and node execution with transport
  • callback: AI, tool, and context callback handling
  • gateway: Unified entry point coordinating all components

§Example

use matrixcode_core::matrixrpc::{ExtensionGateway, ServiceRegistrationRequest};
use matrixcode_core::matrixrpc::transport::{StdioTransport, Transport};
use matrixcode_core::matrixrpc::protocol::JsonRpcRequest;
use serde_json::json;

#[tokio::main]
async fn main() -> std::io::Result<()> {
    // Create extension gateway
    let gateway = ExtensionGateway::new();

    // Register a service
    let request = ServiceRegistrationRequest::new("my-plugin", "1.0.0");
    let service_id = gateway.register_service(request).await.unwrap();

    // Create a stdio transport
    let mut transport = StdioTransport::new();

    // Send a request
    let request = JsonRpcRequest::new("initialize")
        .params(json!({"version": "1.0"}));
    transport.send(&request.into()).await?;

    // Receive response
    if let Some(response) = transport.receive().await? {
        println!("Response: {:?}", response);
    }

    Ok(())
}

Re-exports§

pub use config::ConfigError;
pub use config::GlobalConfig;
pub use config::MatrixRpcConfig;
pub use config::ServiceDefinition;
pub use config::ServiceTransportType;
pub use config::CONFIG_FILE_NAME;
pub use executor::ExecutionConfig;
pub use executor::NodeExecutionConfig;
pub use executor::NodeExecutionResult;
pub use executor::NodeExecutionStatus;
pub use executor::NodeExecutor;
pub use executor::NodeExecutorError;
pub use executor::RetryStrategy;
pub use executor::ToolExecutor;
pub use executor::ToolExecutorError;
pub use gateway::ExtensionGateway;
pub use gateway::GatewayConfig;
pub use gateway::GatewayError;
pub use gateway::GatewayEvent;
pub use gateway::GatewayStats;
pub use gateway::ServiceRegistrationRequest;
pub use lifecycle::LifecycleConfig;
pub use lifecycle::LifecycleError;
pub use lifecycle::LifecycleEvent;
pub use lifecycle::LifecycleManager;
pub use protocol::ErrorCode;
pub use protocol::JsonRpcError;
pub use protocol::JsonRpcId;
pub use protocol::JsonRpcMessage;
pub use protocol::JsonRpcRequest;
pub use protocol::JsonRpcResponse;
pub use registry::RegistryBuilder;
pub use registry::RegistryError;
pub use registry::RegistryService;
pub use registry::RegistryStats;
pub use registry::ServiceFilter;
pub use router::NodeCapability;
pub use router::NodeContext;
pub use router::NodeDefinition;
pub use router::NodeRouter;
pub use router::NodeRouterError;
pub use router::NodeRouteResult;
pub use router::NodeType;
pub use router::ToolDefinition;
pub use router::ToolRouter;
pub use router::ToolRouterError;
pub use router::ToolRouteResult;
pub use service::Capability;
pub use service::ExtensionService;
pub use service::RegistrationInfo;
pub use service::ServiceId;
pub use service::ServiceStatus;
pub use service::TransportConfig;
pub use service::TransportType;
pub use transport::FrameCodec;
pub use transport::StdioTransport;
pub use transport::Transport;
pub use transport::TransportConfig as TransportSettings;
pub use callback::CallbackConfig;
pub use callback::CallbackError;
pub use callback::CallbackHandler;
pub use callback::CallbackResult;
pub use callback::CallbackType;
pub use callback::AiCallbackHandler;
pub use callback::AiCallbackRequest;
pub use callback::AiCallbackResult;
pub use callback::ToolCallbackHandler;
pub use callback::ToolCallbackRequest;
pub use callback::ToolCallbackResult;
pub use callback::ContextCallbackHandler;
pub use callback::ContextCallbackRequest;
pub use callback::ContextCallbackResult;
pub use callback::ContextOperation;
pub use callback::SecurityValidator;
pub use callback::SecurityError;
pub use callback::TokenInfo;
pub use callback::ValidationResult;

Modules§

callback
Callback Module
config
MatrixRPC Configuration
executor
Executor Module
gateway
Extension Gateway
lifecycle
Lifecycle Management Module
protocol
JSON-RPC 2.0 Protocol Types
registry
Registry Service Module
router
Router Module
service
MatrixRPC Extension Service Data Models
transport
Transport Layer for MatrixRPC