Expand description
Compile-time extension framework for systemprompt.io.
Built on the inventory crate, this crate lets extension authors
declare schemas, API routes, scheduled jobs, and provider
implementations using the Extension trait and the
register_extension! macro. The runtime collects every registration
at startup, validates dependencies, and merges the resulting wiring
into the host application.
§Authoring an extension
ⓘ
use systemprompt_extension::prelude::*;
#[derive(Default)]
struct MyExtension;
impl Extension for MyExtension {
fn metadata(&self) -> ExtensionMetadata {
ExtensionMetadata { id: "my-ext", name: "My Extension", version: "0.1.0" }
}
}
register_extension!(MyExtension);§Module map
metadata,router,migration— value types describing the extension surface.- The
Extensiontrait and theregister_extension!macro form the core extensibility contract. build— build-script helper that generatesExtension::migrations()fromschema/migrations/*.sqlfiles, paired with theextension_migrations!macro.registry— runtime store of registered extensions, built frominventorysubmissions at startup.capabilities—Has*capability traits and theCapabilityContextcomposition helper.error— typed error enums (LoaderError,ConfigError) raised by the registry.
§Feature flags
This crate has no Cargo features; everything compiles into every build.
Copyright (c) systemprompt.io — Business Source License 1.1. See https://systemprompt.io for licensing details.
Re-exports§
pub use context::DynExtensionContext;pub use context::ExtensionContext;pub use error::ConfigError;pub use error::LoaderError;pub use frame_options::FrameOptions;pub use frame_options::FrameOptionsOverride;pub use frame_options::stamp_frame_options;pub use gateway_guard::GatewayDenyKind;pub use gateway_guard::GatewayDenyReason;pub use gateway_guard::GatewayGuardRequest;pub use gateway_guard::GatewayRequestGuard;pub use gateway_guard::GatewayRequestGuardRegistration;pub use gateway_guard::run_gateway_guards;pub use metadata::ExtensionMetadata;pub use metadata::ExtensionRole;pub use metadata::SchemaDefinition;pub use migration::Migration;pub use registry::ExtensionRegistration;pub use registry::ExtensionRegistry;pub use registry::RESERVED_PATHS;pub use router::ExtensionRouter;pub use router::ExtensionRouterConfig;pub use router::SiteAuthConfig;pub use seed::Seed;pub use capabilities::CapabilityContext;pub use capabilities::FullContext;pub use capabilities::HasAnalytics;pub use capabilities::HasConfig;pub use capabilities::HasDatabase;pub use capabilities::HasEventBus;pub use capabilities::HasFingerprint;pub use capabilities::HasHttpClient;pub use capabilities::HasRouteClassifier;pub use capabilities::HasUserService;
Modules§
- build
- Build-script support for extension crates.
- capabilities
Has*capability traits and theCapabilityContextcomposition helper.- context
- Runtime context handed to extensions during router resolution.
- error
- Typed error enums raised by extension registration and configuration.
- frame_
options - Per-route framing policy override for extension routers.
- gateway_
guard - Inventory-collected gateway request guards.
- metadata
- Static metadata, schema, and role-definition value types.
- migration
- Schema migration value type.
- prelude
- registry
- Extension registry that stores extensions as
Arc<dyn Extension>. - router
- Router and site-auth configuration value types.
- runtime_
config - Process-level injection of extensions registered outside of the
inventorylinker collector. - seed
- Idempotent post-migration data fixtures (
Seeds).
Macros§
- extension_
migrations - Expand to the body of
Extension::migrations, generated fromschema/migrations/NNN_<name>.sqlfiles bybuild::emit_migrations. - register_
extension - register_
gateway_ guard - Register a
GatewayRequestGuardimplementation with the gateway.