Skip to main content

Crate systemprompt_extension

Crate systemprompt_extension 

Source
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

§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 the CapabilityContext composition 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 inventory linker collector.
seed
Idempotent post-migration data fixtures (Seeds).

Macros§

extension_migrations
Expand to the body of Extension::migrations, generated from schema/migrations/NNN_<name>.sql files by build::emit_migrations.
register_extension
register_gateway_guard
Register a GatewayRequestGuard implementation with the gateway.

Structs§

AssetDefinition
AssetDefinitionBuilder

Enums§

AssetType

Traits§

AssetPaths
Extension