Skip to main content

plexus_core/
lib.rs

1//! Hub Core - Core infrastructure for building Plexus RPC servers
2//!
3//! This crate provides:
4//! - `DynamicHub` - Dynamic routing hub for activations (implements Plexus RPC protocol)
5//! - `Activation` - Trait for implementing activations
6//! - `PlexusMcpBridge` - MCP server integration
7//! - `Handle` - Typed references to activation method results
8//!
9//! # Example
10//!
11//! ```rust,no_run
12//! use plexus_core::plexus::DynamicHub;
13//! use plexus_core::activations::echo::Echo;
14//! use plexus_core::activations::health::Health;
15//! use std::sync::Arc;
16//!
17//! let hub = Arc::new(
18//!     DynamicHub::new("myapp")
19//!         .register(Health::new())
20//!         .register(Echo::new())
21//! );
22//! ```
23
24pub mod activations;
25pub mod builder;
26pub mod mcp_bridge;
27pub mod plexus;
28pub mod plugin_system;
29pub mod request;
30pub mod serde_helpers;
31pub mod types;
32
33// Re-export commonly used items
34pub use builder::build_example_hub;
35pub use mcp_bridge::PlexusMcpBridge;
36#[allow(deprecated)]
37pub use plexus::{
38    Activation, ChildCapabilities, ChildRouter, DeprecationInfo, DynamicHub, MethodRole,
39    PlexusError, ReturnShape, PLEXUS_NOTIF_METHOD,
40};
41pub use types::{Envelope, Handle, HandleParseError, HandleResolutionParams, Origin};
42
43// Re-export schemars under a stable private path so PlexusRequest derive-generated code
44// can reference the real schemars::JsonSchema trait without requiring the caller to have
45// schemars in their own dependencies.
46#[doc(hidden)]
47pub use schemars as __schemars;
48
49// Proc-macro re-exports.
50// Use as `plexus_core::activation` / `plexus_core::method`, or via a
51// `plexus = { package = "plexus-core" }` Cargo alias as `plexus::activation` / `plexus::method`.
52pub use plexus_macros::activation;
53pub use plexus_macros::method;
54#[allow(deprecated)]
55#[deprecated(since = "0.5.0", note = "Use `plexus_core::activation` instead")]
56pub use plexus_macros::hub_methods;
57#[allow(deprecated)]
58#[deprecated(since = "0.5.0", note = "Use `plexus_core::method` instead")]
59pub use plexus_macros::hub_method;