use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum RuntimeRegistrationKind {
Subscriber,
EventMetadataInjector,
MarkSanitizeGuardrail,
ScopeSanitizeStartGuardrail,
ScopeSanitizeEndGuardrail,
ToolSanitizeRequestGuardrail,
ToolSanitizeResponseGuardrail,
ToolConditionalExecutionGuardrail,
ToolRequestIntercept,
ToolExecutionIntercept,
LlmSanitizeRequestGuardrail,
LlmSanitizeResponseGuardrail,
LlmConditionalExecutionGuardrail,
LlmRequestIntercept,
LlmExecutionIntercept,
LlmStreamExecutionIntercept,
}
impl RuntimeRegistrationKind {
pub fn as_str(self) -> &'static str {
match self {
Self::Subscriber => "subscriber",
Self::EventMetadataInjector => "event_metadata_injector",
Self::MarkSanitizeGuardrail => "mark_sanitize_guardrail",
Self::ScopeSanitizeStartGuardrail => "scope_sanitize_start_guardrail",
Self::ScopeSanitizeEndGuardrail => "scope_sanitize_end_guardrail",
Self::ToolSanitizeRequestGuardrail => "tool_sanitize_request_guardrail",
Self::ToolSanitizeResponseGuardrail => "tool_sanitize_response_guardrail",
Self::ToolConditionalExecutionGuardrail => "tool_conditional_execution_guardrail",
Self::ToolRequestIntercept => "tool_request_intercept",
Self::ToolExecutionIntercept => "tool_execution_intercept",
Self::LlmSanitizeRequestGuardrail => "llm_sanitize_request_guardrail",
Self::LlmSanitizeResponseGuardrail => "llm_sanitize_response_guardrail",
Self::LlmConditionalExecutionGuardrail => "llm_conditional_execution_guardrail",
Self::LlmRequestIntercept => "llm_request_intercept",
Self::LlmExecutionIntercept => "llm_execution_intercept",
Self::LlmStreamExecutionIntercept => "llm_stream_execution_intercept",
}
}
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum RuntimeRegistrationOwnerKind {
Core,
GlobalApi,
Plugin,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct RuntimeRegistrationOwner {
pub kind: RuntimeRegistrationOwnerKind,
pub plugin_kind: Option<String>,
pub component_ordinal: Option<u32>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct RuntimeRegistrationIdentity {
pub kind: RuntimeRegistrationKind,
pub local_name: String,
pub effective_name: String,
pub owner: RuntimeRegistrationOwner,
}