Skip to main content

nexo_plugin_manifest/
lib.rs

1//! `nexo-plugin.toml` manifest schema + validator.
2//!
3//! Defines the TOML manifest contract every native Rust nexo plugin
4//! must ship.
5//!
6//! Distinction vs `crates/extensions/<n>/plugin.toml`:
7//! that schema describes **subprocess tool extensions** (stdio /
8//! HTTP MCP servers spawned as separate processes). This schema
9//! describes **native Rust plugins** that link into the daemon
10//! and ship full mini-applications (agents + tools + skills +
11//! channels + advisors + capability gates).
12
13pub mod admin;
14pub mod admin_ui;
15pub mod compat_v1;
16pub mod config_schema;
17pub mod dashboard;
18pub mod discover;
19pub mod error;
20pub mod http;
21pub mod id_regex;
22pub mod manifest;
23pub mod metrics;
24pub mod pairing;
25pub mod poller;
26pub mod public_tunnel;
27pub mod sandbox;
28pub mod validate;
29pub mod visible_when;
30
31pub use discover::{discover_in_root, PLUGIN_MANIFEST_FILENAMES};
32
33pub use admin_ui::{
34    Action, AdminUiMode, Contribution, Field, FieldType, I18nLabel, OnSuccess, OptionsSource,
35    PluginAdminUiSection, RefreshSpec, Screen, SelectOption, ADMIN_RPC_PREFIX, CORE_SLOTS,
36    CURRENT_ADMIN_UI_SCHEMA_VERSION, LUCIDE_SUBSET, VISIBLE_WHEN_MAX_LEN,
37};
38pub use config_schema::{
39    is_validation_bypassed, validate_config, ConfigSchemaError, SKIP_SCHEMA_ENV,
40};
41pub use error::ManifestError;
42pub use manifest::{
43    AdminCapabilities, AdvisorsSection, AgentsSection, BrokerCapability, Capabilities, Capability,
44    CapabilityGateDecl, CapabilityGatesSection, ChannelDecl, ChannelsSection, ConfigSchemaSection,
45    ConfigSection, ConfigShape, ContractsSection, CredentialsSchemaSection, EntrypointSection,
46    ExtendsSection, GateKind, GateRisk, HttpServerCapability, MetaSection, PluginManifest,
47    PluginSection, RequiresSection, SkillsSection, SupervisorSection, ToolsSection, UiHint,
48    UiSection, CURRENT_MANIFEST_VERSION, EXTENDS_SECTIONS, PLUGIN_MANIFEST_FILENAME,
49    SUPERVISOR_STDERR_TAIL_MAX,
50};
51pub use pairing::{PairingFieldDescriptor, PairingKind, PairingSection};
52pub use poller::{PluginPollerSection, PollerLifecycle};
53pub use public_tunnel::PluginPublicTunnelSection;
54pub use sandbox::{
55    contains_state_dir_token, path_under_or_equals_denylist, SandboxNetwork, SandboxPathKind,
56    SandboxSection, SANDBOX_DENYLIST_HOME_SUBPATHS, SANDBOX_DENYLIST_HOST_PATHS,
57    SANDBOX_STATE_DIR_TOKEN,
58};
59pub use visible_when::{
60    eval as eval_visible_when, parse as parse_visible_when, CmpOp, Expr as VisibleWhenExpr,
61    Literal as VisibleWhenLiteral, VisibleWhenError,
62};