Skip to navigation

Trait Plugin Registration Context

View as Markdown

Generated from cargo doc --no-deps -p nemo-relay-builtins -p nemo-relay-diagnostics -p nemo-relay-logging -p nemo-relay-plugin-host -p nemo-relay-codecs -p nemo-relay -p nemo-relay-runtime -p nemo-relay-model-pricing -p nemo-relay-resource-metrics -p nemo-relay-observability -p nemo-relay-adaptive -p nemo-relay-pii-redaction -p nemo-relay-ffi -p nemo-relay-types -p nemo-relay-plugin -p nemo-relay-worker-proto -p nemo-relay-worker.

pub trait PluginRegistrationContext: Send {
Show 27 methods    // Required methods
    fn qualify_name(&self, name: &str) -> String;
    fn register_subscriber(
        &mut self,
        name: &str,
        callback: Arc<dyn Fn(&Event) + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn add_registration(&mut self, registration: PluginRegistration);
    fn record_activation_diagnostic(&mut self, diagnostic: ConfigDiagnostic);
    fn record_nonfatal_activation_failure(
        &mut self,
        component_key: &'static str,
        classification: Classification,
        diagnostic: ConfigDiagnostic,
    );
    fn activation_diagnostics(&self) -> &[ConfigDiagnostic];
    fn register_conditional_middleware_guardrail(
        &mut self,
        name: &str,
        kinds: BTreeSet<RuntimeRegistrationKind>,
        registration_name: &str,
        guardrail: Arc<dyn Fn(&BTreeSet<RuntimeRegistrationKind>, &str) -> Option<String> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_event_metadata_injector(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(Arc<Event>) -> Pin<Box<dyn Future<Output = Result<BTreeMap<String, Value>, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_mark_sanitize_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_scope_sanitize_start_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_scope_sanitize_end_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_llm_request_intercept(
        &mut self,
        name: &str,
        priority: i32,
        break_chain: bool,
        callback: Arc<dyn Fn(String, LlmRequest, Option<AnnotatedLlmRequest>) -> Pin<Box<dyn Future<Output = Result<LlmRequestInterceptOutcome, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_tool_sanitize_request_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_tool_sanitize_response_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_tool_conditional_execution_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Option<String>, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_llm_sanitize_request_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(LlmRequest, LlmSanitizeRequestContext) -> Pin<Box<dyn Future<Output = Result<Option<LlmRequest>, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_llm_sanitize_response_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(Value, LlmSanitizeResponseContext) -> Pin<Box<dyn Future<Output = Result<Option<Value>, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_llm_conditional_execution_guardrail(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<Option<String>, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_llm_execution_intercept(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(&str, LlmRequest, LlmExecutionContext, Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_llm_stream_execution_intercept(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(&str, LlmRequest, LlmExecutionContext, Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<LlmJsonStream, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<LlmJsonStream, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_tool_request_intercept(
        &mut self,
        name: &str,
        priority: i32,
        break_chain: bool,
        callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn register_tool_execution_intercept(
        &mut self,
        name: &str,
        priority: i32,
        callback: Arc<dyn Fn(ToolExecutionContext, Arc<dyn Fn(Value) -> Pin<Box<dyn Future<Output = Result<ToolExecutionResult, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<ToolExecutionInterceptOutcome, FlowError>> + Send>> + Sync + Send>,
    ) -> Result<(), PluginError>;
    fn uses_plugin_component_namespace(&self) -> bool;
    fn with_child_namespace(
        &self,
        name: &str,
    ) -> Box<dyn PluginRegistrationContext>;
    fn into_registrations(self: Box<Self>) -> Vec<PluginRegistration>;
​
    // Provided methods
    fn diagnostics_context(&self) -> Option<&(dyn Any + Sync + Send + 'static)> { ... }
    fn extend_registrations(&mut self, registrations: Vec<PluginRegistration>) { ... }
}

Host capabilities available to plugins during component activation.

Hosts retain ownership of registry mutation, namespacing, rollback, and activation diagnostics. Implementations do not depend on a runtime crate.

Required Methods

qualify_name

fn qualify_name(&self, name: &str) -> String

Qualify a component-local registration name.

register_subscriber

fn register_subscriber(
    &mut self,
    name: &str,
    callback: Arc<dyn Fn(&Event) + Sync + Send>,
) -> Result<(), PluginError>

Install a subscriber and track its rollback.

add_registration

fn add_registration(&mut self, registration: PluginRegistration)

Track an already-created resource’s cleanup operation.

record_activation_diagnostic

fn record_activation_diagnostic(&mut self, diagnostic: ConfigDiagnostic)

Record an activation diagnostic.

record_nonfatal_activation_failure

fn record_nonfatal_activation_failure(
    &mut self,
    component_key: &'static str,
    classification: Classification,
    diagnostic: ConfigDiagnostic,
)

Record an optional exporter initialization failure without aborting activation.

activation_diagnostics

fn activation_diagnostics(&self) -> &[ConfigDiagnostic]

Read activation diagnostics recorded so far.

register_conditional_middleware_guardrail

fn register_conditional_middleware_guardrail(
    &mut self,
    name: &str,
    kinds: BTreeSet<RuntimeRegistrationKind>,
    registration_name: &str,
    guardrail: Arc<dyn Fn(&BTreeSet<RuntimeRegistrationKind>, &str) -> Option<String> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_event_metadata_injector

fn register_event_metadata_injector(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>) -> Pin<Box<dyn Future<Output = Result<BTreeMap<String, Value>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_mark_sanitize_guardrail

fn register_mark_sanitize_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_scope_sanitize_start_guardrail

fn register_scope_sanitize_start_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_scope_sanitize_end_guardrail

fn register_scope_sanitize_end_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_llm_request_intercept

fn register_llm_request_intercept(
    &mut self,
    name: &str,
    priority: i32,
    break_chain: bool,
    callback: Arc<dyn Fn(String, LlmRequest, Option<AnnotatedLlmRequest>) -> Pin<Box<dyn Future<Output = Result<LlmRequestInterceptOutcome, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_tool_sanitize_request_guardrail

fn register_tool_sanitize_request_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_tool_sanitize_response_guardrail

fn register_tool_sanitize_response_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_tool_conditional_execution_guardrail

fn register_tool_conditional_execution_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Option<String>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_llm_sanitize_request_guardrail

fn register_llm_sanitize_request_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(LlmRequest, LlmSanitizeRequestContext) -> Pin<Box<dyn Future<Output = Result<Option<LlmRequest>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_llm_sanitize_response_guardrail

fn register_llm_sanitize_response_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Value, LlmSanitizeResponseContext) -> Pin<Box<dyn Future<Output = Result<Option<Value>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_llm_conditional_execution_guardrail

fn register_llm_conditional_execution_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<Option<String>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_llm_execution_intercept

fn register_llm_execution_intercept(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(&str, LlmRequest, LlmExecutionContext, Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_llm_stream_execution_intercept

fn register_llm_stream_execution_intercept(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(&str, LlmRequest, LlmExecutionContext, Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<LlmJsonStream, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<LlmJsonStream, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_tool_request_intercept

fn register_tool_request_intercept(
    &mut self,
    name: &str,
    priority: i32,
    break_chain: bool,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

register_tool_execution_intercept

fn register_tool_execution_intercept(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(ToolExecutionContext, Arc<dyn Fn(Value) -> Pin<Box<dyn Future<Output = Result<ToolExecutionResult, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<ToolExecutionInterceptOutcome, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

Install middleware and track its rollback.

uses_plugin_component_namespace

fn uses_plugin_component_namespace(&self) -> bool

Whether registration names belong to a plugin component namespace.

with_child_namespace

fn with_child_namespace(&self, name: &str) -> Box<dyn PluginRegistrationContext>

Create an independent registration context nested under this namespace.

into_registrations

fn into_registrations(self: Box<Self>) -> Vec<PluginRegistration>

Consume this context’s cleanup entries.

Provided Methods

diagnostics_context

fn diagnostics_context(&self) -> Option<&(dyn Any + Sync + Send + 'static)>

Optional diagnostic producer context supplied by the embedding runtime.

Runtime-specific components may downcast this handle to their runtime’s diagnostic facade. Shared plugins must tolerate an unavailable context.

extend_registrations

fn extend_registrations(&mut self, registrations: Vec<PluginRegistration>)

Track cleanup entries returned by a nested context or language adapter.

Implementations on Foreign Types

impl PluginRegistrationContext for HostPluginRegistrationContext

impl PluginRegistrationContext for HostPluginRegistrationContext

diagnostics_context

fn diagnostics_context(&self) -> Option<&(dyn Any + Sync + Send + 'static)>

qualify_name

fn qualify_name(&self, name: &str) -> String

register_subscriber

fn register_subscriber(
    &mut self,
    name: &str,
    callback: Arc<dyn Fn(&Event) + Sync + Send>,
) -> Result<(), PluginError>

add_registration

fn add_registration(&mut self, registration: PluginRegistration)

record_activation_diagnostic

fn record_activation_diagnostic(&mut self, diagnostic: ConfigDiagnostic)

record_nonfatal_activation_failure

fn record_nonfatal_activation_failure(
    &mut self,
    component_key: &'static str,
    classification: Classification,
    diagnostic: ConfigDiagnostic,
)

activation_diagnostics

fn activation_diagnostics(&self) -> &[ConfigDiagnostic]

register_conditional_middleware_guardrail

fn register_conditional_middleware_guardrail(
    &mut self,
    name: &str,
    kinds: BTreeSet<RuntimeRegistrationKind>,
    registration_name: &str,
    guardrail: Arc<dyn Fn(&BTreeSet<RuntimeRegistrationKind>, &str) -> Option<String> + Sync + Send>,
) -> Result<(), PluginError>

register_event_metadata_injector

fn register_event_metadata_injector(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>) -> Pin<Box<dyn Future<Output = Result<BTreeMap<String, Value>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_mark_sanitize_guardrail

fn register_mark_sanitize_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_scope_sanitize_start_guardrail

fn register_scope_sanitize_start_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_scope_sanitize_end_guardrail

fn register_scope_sanitize_end_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Arc<Event>, EventSanitizeFields) -> Pin<Box<dyn Future<Output = Result<EventSanitizeFields, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_llm_request_intercept

fn register_llm_request_intercept(
    &mut self,
    name: &str,
    priority: i32,
    break_chain: bool,
    callback: Arc<dyn Fn(String, LlmRequest, Option<AnnotatedLlmRequest>) -> Pin<Box<dyn Future<Output = Result<LlmRequestInterceptOutcome, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_tool_sanitize_request_guardrail

fn register_tool_sanitize_request_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_tool_sanitize_response_guardrail

fn register_tool_sanitize_response_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_tool_conditional_execution_guardrail

fn register_tool_conditional_execution_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Option<String>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_llm_sanitize_request_guardrail

fn register_llm_sanitize_request_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(LlmRequest, LlmSanitizeRequestContext) -> Pin<Box<dyn Future<Output = Result<Option<LlmRequest>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_llm_sanitize_response_guardrail

fn register_llm_sanitize_response_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(Value, LlmSanitizeResponseContext) -> Pin<Box<dyn Future<Output = Result<Option<Value>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_llm_conditional_execution_guardrail

fn register_llm_conditional_execution_guardrail(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<Option<String>, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_llm_execution_intercept

fn register_llm_execution_intercept(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(&str, LlmRequest, LlmExecutionContext, Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_llm_stream_execution_intercept

fn register_llm_stream_execution_intercept(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(&str, LlmRequest, LlmExecutionContext, Arc<dyn Fn(LlmRequest) -> Pin<Box<dyn Future<Output = Result<LlmJsonStream, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<LlmJsonStream, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_tool_request_intercept

fn register_tool_request_intercept(
    &mut self,
    name: &str,
    priority: i32,
    break_chain: bool,
    callback: Arc<dyn Fn(String, Value) -> Pin<Box<dyn Future<Output = Result<Value, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

register_tool_execution_intercept

fn register_tool_execution_intercept(
    &mut self,
    name: &str,
    priority: i32,
    callback: Arc<dyn Fn(ToolExecutionContext, Arc<dyn Fn(Value) -> Pin<Box<dyn Future<Output = Result<ToolExecutionResult, FlowError>> + Send>> + Sync + Send>) -> Pin<Box<dyn Future<Output = Result<ToolExecutionInterceptOutcome, FlowError>> + Send>> + Sync + Send>,
) -> Result<(), PluginError>

uses_plugin_component_namespace

fn uses_plugin_component_namespace(&self) -> bool

with_child_namespace

fn with_child_namespace(&self, name: &str) -> Box<dyn PluginRegistrationContext>

into_registrations

fn into_registrations(
    self: Box<HostPluginRegistrationContext>,
) -> Vec<PluginRegistration>

Implementors