#![allow(clippy::too_many_arguments)]
use meerkat_machine_dsl::machine;
use meerkat_machine_schema::catalog::dsl::OptionValueExt;
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct SessionId(pub String);
impl<T: Into<String>> From<T> for SessionId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl SessionId {
pub fn from_domain(id: &meerkat_core::types::SessionId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct AgentRuntimeId(pub String);
impl<T: Into<String>> From<T> for AgentRuntimeId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl AgentRuntimeId {
pub fn from_domain(id: &crate::identifiers::LogicalRuntimeId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct FenceToken(pub u64);
impl From<u64> for FenceToken {
fn from(v: u64) -> Self {
Self(v)
}
}
impl FenceToken {
pub fn from_domain(value: u64) -> Self {
Self(value)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct Generation(pub u64);
impl From<u64> for Generation {
fn from(v: u64) -> Self {
Self(v)
}
}
impl Generation {
pub fn from_domain(value: u64) -> Self {
Self(value)
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct RuntimeEpochId(pub String);
impl<T: Into<String>> From<T> for RuntimeEpochId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl RuntimeEpochId {
pub fn from_domain(id: &meerkat_core::runtime_epoch::RuntimeEpochId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct RunId(pub String);
impl<T: Into<String>> From<T> for RunId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl RunId {
pub fn from_domain(id: &meerkat_core::lifecycle::RunId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct InputId(pub String);
impl<T: Into<String>> From<T> for InputId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl InputId {
pub fn from_domain(id: &meerkat_core::lifecycle::InputId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct WorkId(pub String);
impl<T: Into<String>> From<T> for WorkId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl WorkId {
pub fn from_domain(id: &meerkat_core::lifecycle::InputId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct OperationId(pub String);
impl<T: Into<String>> From<T> for OperationId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl OperationId {
pub fn from_domain(id: &meerkat_core::ops::OperationId) -> Self {
Self::from(serde_json::to_string(id).unwrap_or_else(|_| "\"unknown\"".to_string()))
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct WaitRequestId(pub String);
impl<T: Into<String>> From<T> for WaitRequestId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl WaitRequestId {
pub fn from_domain(id: &meerkat_core::lifecycle::WaitRequestId) -> Self {
Self(id.to_string())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationKind {
#[default]
MobMemberChild,
BackgroundToolOp,
BackgroundToolCapacitySlot,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationSourceKind {
#[default]
SessionChild,
BackendPeer,
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct OperationSource {
pub kind: OperationSourceKind,
pub session_id: Option<SessionId>,
pub peer_id: Option<PeerId>,
pub address: Option<PeerAddress>,
}
impl OperationSource {
pub fn from_domain(source: &meerkat_core::ops_lifecycle::OperationSource) -> Self {
match source {
meerkat_core::ops_lifecycle::OperationSource::SessionChild { session_id } => Self {
kind: OperationSourceKind::SessionChild,
session_id: Some(SessionId::from_domain(session_id)),
peer_id: None,
address: None,
},
meerkat_core::ops_lifecycle::OperationSource::BackendPeer { peer_id, address } => {
Self {
kind: OperationSourceKind::BackendPeer,
session_id: None,
peer_id: Some(PeerId(peer_id.to_string())),
address: Some(PeerAddress(address.to_string())),
}
}
}
}
pub fn to_domain(&self) -> Result<meerkat_core::ops_lifecycle::OperationSource, String> {
match self.kind {
OperationSourceKind::SessionChild => {
let session_id = self
.session_id
.as_ref()
.ok_or_else(|| "session operation source missing session_id".to_string())?;
let session_id = meerkat_core::types::SessionId::parse(&session_id.0)
.map_err(|error| format!("invalid session operation source id: {error}"))?;
Ok(meerkat_core::ops_lifecycle::OperationSource::session_child(
session_id,
))
}
OperationSourceKind::BackendPeer => {
let peer_id = self
.peer_id
.as_ref()
.ok_or_else(|| "backend peer operation source missing peer_id".to_string())?;
let address = self
.address
.as_ref()
.ok_or_else(|| "backend peer operation source missing address".to_string())?;
let peer_id = meerkat_core::comms::PeerId::parse(&peer_id.0).map_err(|error| {
format!("invalid backend peer operation source id: {error}")
})?;
let address =
meerkat_core::comms::PeerAddress::parse(&address.0).map_err(|error| {
format!("invalid backend peer operation source address: {error}")
})?;
Ok(meerkat_core::ops_lifecycle::OperationSource::backend_peer(
peer_id, address,
))
}
}
}
}
impl From<meerkat_core::ops_lifecycle::OperationKind> for OperationKind {
fn from(kind: meerkat_core::ops_lifecycle::OperationKind) -> Self {
match kind {
meerkat_core::ops_lifecycle::OperationKind::MobMemberChild => Self::MobMemberChild,
meerkat_core::ops_lifecycle::OperationKind::BackgroundToolOp => Self::BackgroundToolOp,
meerkat_core::ops_lifecycle::OperationKind::BackgroundToolCapacitySlot => {
Self::BackgroundToolCapacitySlot
}
}
}
}
impl From<OperationKind> for meerkat_core::ops_lifecycle::OperationKind {
fn from(kind: OperationKind) -> Self {
match kind {
OperationKind::MobMemberChild => Self::MobMemberChild,
OperationKind::BackgroundToolOp => Self::BackgroundToolOp,
OperationKind::BackgroundToolCapacitySlot => Self::BackgroundToolCapacitySlot,
}
}
}
impl OperationKind {
pub fn from_domain(kind: &meerkat_core::ops_lifecycle::OperationKind) -> Self {
Self::from(*kind)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum Provider {
#[default]
Anthropic,
OpenAI,
Gemini,
SelfHosted,
Other,
}
impl From<meerkat_core::provider::Provider> for Provider {
fn from(p: meerkat_core::provider::Provider) -> Self {
match p {
meerkat_core::provider::Provider::Anthropic => Self::Anthropic,
meerkat_core::provider::Provider::OpenAI => Self::OpenAI,
meerkat_core::provider::Provider::Gemini => Self::Gemini,
meerkat_core::provider::Provider::SelfHosted => Self::SelfHosted,
meerkat_core::provider::Provider::Other => Self::Other,
}
}
}
impl From<Provider> for meerkat_core::provider::Provider {
fn from(p: Provider) -> Self {
match p {
Provider::Anthropic => Self::Anthropic,
Provider::OpenAI => Self::OpenAI,
Provider::Gemini => Self::Gemini,
Provider::SelfHosted => Self::SelfHosted,
Provider::Other => Self::Other,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct AuthBindingRef {
pub realm_id: String,
pub binding_id: String,
pub profile_id: Option<String>,
}
impl From<&meerkat_core::AuthBindingRef> for AuthBindingRef {
fn from(r: &meerkat_core::AuthBindingRef) -> Self {
Self {
realm_id: r.realm.as_str().to_owned(),
binding_id: r.binding.as_str().to_owned(),
profile_id: r.profile.as_ref().map(|p| p.as_str().to_owned()),
}
}
}
impl TryFrom<AuthBindingRef> for meerkat_core::AuthBindingRef {
type Error = meerkat_core::IdentityError;
fn try_from(r: AuthBindingRef) -> Result<Self, Self::Error> {
Ok(Self {
realm: meerkat_core::RealmId::parse(&r.realm_id)?,
binding: meerkat_core::BindingId::parse(&r.binding_id)?,
profile: r
.profile_id
.as_deref()
.map(meerkat_core::ProfileId::parse)
.transpose()?,
origin: meerkat_core::connection::BindingOrigin::Configured,
})
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct SessionLlmIdentity {
pub model: String,
pub provider: Provider,
pub self_hosted_server_id: Option<String>,
pub provider_params_repr: Option<String>,
pub auth_binding: Option<AuthBindingRef>,
}
impl SessionLlmIdentity {
pub fn from_domain(id: &meerkat_core::SessionLlmIdentity) -> Self {
Self {
model: id.model.clone(),
provider: Provider::from(id.provider),
self_hosted_server_id: id.self_hosted_server_id.clone(),
provider_params_repr: id
.provider_params
.as_ref()
.map(|v| serde_json::to_string(v).unwrap_or_default()),
auth_binding: id.auth_binding.as_ref().map(AuthBindingRef::from),
}
}
}
impl TryFrom<SessionLlmIdentity> for meerkat_core::SessionLlmIdentity {
type Error = String;
fn try_from(id: SessionLlmIdentity) -> Result<Self, Self::Error> {
Ok(Self {
model: id.model,
provider: id.provider.into(),
self_hosted_server_id: id.self_hosted_server_id,
provider_params: id
.provider_params_repr
.as_deref()
.map(serde_json::from_str)
.transpose()
.map_err(|err| format!("invalid generated provider_params identity: {err}"))?,
auth_binding: id
.auth_binding
.map(meerkat_core::AuthBindingRef::try_from)
.transpose()
.map_err(|err| format!("invalid generated auth binding identity: {err}"))?,
})
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct SessionToolVisibilityState {
pub capability_base_filter: ToolFilter,
pub inherited_base_filter: ToolFilter,
pub active_filter: ToolFilter,
pub staged_filter: ToolFilter,
pub active_requested_deferred_names: std::collections::BTreeSet<ToolName>,
pub staged_requested_deferred_names: std::collections::BTreeSet<ToolName>,
pub active_revision: u64,
pub staged_revision: u64,
pub requested_witnesses: std::collections::BTreeMap<ToolName, ToolVisibilityWitness>,
pub filter_witnesses: std::collections::BTreeMap<ToolName, ToolVisibilityWitness>,
}
impl SessionToolVisibilityState {
pub fn from_domain(id: &meerkat_core::SessionToolVisibilityState) -> Self {
Self {
capability_base_filter: ToolFilter::from(&id.capability_base_filter),
inherited_base_filter: ToolFilter::from(&id.inherited_base_filter),
active_filter: ToolFilter::from(&id.active_filter),
staged_filter: ToolFilter::from(&id.staged_filter),
active_requested_deferred_names: id.active_requested_deferred_names.clone(),
staged_requested_deferred_names: id.staged_requested_deferred_names.clone(),
active_revision: id.active_revision,
staged_revision: id.staged_revision,
requested_witnesses: id
.requested_witnesses
.iter()
.map(|(k, w)| (k.clone(), ToolVisibilityWitness::from(w)))
.collect(),
filter_witnesses: id
.filter_witnesses
.iter()
.map(|(k, w)| (k.clone(), ToolVisibilityWitness::from(w)))
.collect(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct SessionLlmCapabilitySurface {
pub supports_temperature: bool,
pub supports_thinking: bool,
pub supports_reasoning: bool,
pub inline_video: bool,
pub vision: bool,
pub image_input: bool,
pub image_tool_results: bool,
pub supports_web_search: bool,
pub image_generation: bool,
pub realtime: bool,
pub call_timeout_secs: Option<u64>,
}
impl From<&crate::meerkat_machine_types::SessionLlmCapabilitySurface>
for SessionLlmCapabilitySurface
{
fn from(s: &crate::meerkat_machine_types::SessionLlmCapabilitySurface) -> Self {
Self {
supports_temperature: s.supports_temperature,
supports_thinking: s.supports_thinking,
supports_reasoning: s.supports_reasoning,
inline_video: s.inline_video,
vision: s.vision,
image_input: s.image_input,
image_tool_results: s.image_tool_results,
supports_web_search: s.supports_web_search,
image_generation: s.image_generation,
realtime: s.realtime,
call_timeout_secs: s.call_timeout_secs,
}
}
}
impl From<SessionLlmCapabilitySurface>
for crate::meerkat_machine_types::SessionLlmCapabilitySurface
{
fn from(s: SessionLlmCapabilitySurface) -> Self {
Self {
supports_temperature: s.supports_temperature,
supports_thinking: s.supports_thinking,
supports_reasoning: s.supports_reasoning,
inline_video: s.inline_video,
vision: s.vision,
image_input: s.image_input,
image_tool_results: s.image_tool_results,
supports_web_search: s.supports_web_search,
image_generation: s.image_generation,
realtime: s.realtime,
call_timeout_secs: s.call_timeout_secs,
}
}
}
impl SessionLlmCapabilitySurface {
pub fn from_domain(id: &crate::meerkat_machine_types::SessionLlmCapabilitySurface) -> Self {
Self::from(id)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SessionLlmCapabilitySurfaceStatus {
Resolved,
#[default]
Unresolved,
}
impl From<crate::meerkat_machine_types::SessionLlmCapabilitySurfaceStatus>
for SessionLlmCapabilitySurfaceStatus
{
fn from(status: crate::meerkat_machine_types::SessionLlmCapabilitySurfaceStatus) -> Self {
match status {
crate::meerkat_machine_types::SessionLlmCapabilitySurfaceStatus::Resolved => {
Self::Resolved
}
crate::meerkat_machine_types::SessionLlmCapabilitySurfaceStatus::Unresolved => {
Self::Unresolved
}
}
}
}
impl From<SessionLlmCapabilitySurfaceStatus>
for crate::meerkat_machine_types::SessionLlmCapabilitySurfaceStatus
{
fn from(status: SessionLlmCapabilitySurfaceStatus) -> Self {
match status {
SessionLlmCapabilitySurfaceStatus::Resolved => Self::Resolved,
SessionLlmCapabilitySurfaceStatus::Unresolved => Self::Unresolved,
}
}
}
impl SessionLlmCapabilitySurfaceStatus {
pub fn from_domain(
id: &crate::meerkat_machine_types::SessionLlmCapabilitySurfaceStatus,
) -> Self {
Self::from(*id)
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct SessionToolVisibilityDelta {
pub previous_capability_base_filter: ToolFilter,
pub current_capability_base_filter: ToolFilter,
pub committed_visible_set_changed: bool,
pub revision_bumped: bool,
}
impl SessionToolVisibilityDelta {
pub fn from_domain(id: &crate::meerkat_machine_types::SessionToolVisibilityDelta) -> Self {
Self {
previous_capability_base_filter: ToolFilter::from(&id.previous_capability_base_filter),
current_capability_base_filter: ToolFilter::from(&id.current_capability_base_filter),
committed_visible_set_changed: id.committed_visible_set_changed,
revision_bumped: id.revision_bumped,
}
}
}
pub type ToolName = meerkat_core::types::ToolName;
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ToolFilter {
#[default]
All,
Allow(std::collections::BTreeSet<ToolName>),
Deny(std::collections::BTreeSet<ToolName>),
}
impl From<&meerkat_core::ToolFilter> for ToolFilter {
fn from(f: &meerkat_core::ToolFilter) -> Self {
match f {
meerkat_core::ToolFilter::All => Self::All,
meerkat_core::ToolFilter::Allow(names) => Self::Allow(names.iter().cloned().collect()),
meerkat_core::ToolFilter::Deny(names) => Self::Deny(names.iter().cloned().collect()),
}
}
}
impl From<ToolFilter> for meerkat_core::ToolFilter {
fn from(f: ToolFilter) -> Self {
match f {
ToolFilter::All => Self::All,
ToolFilter::Allow(names) => Self::Allow(names.into_iter().collect()),
ToolFilter::Deny(names) => Self::Deny(names.into_iter().collect()),
}
}
}
impl ToolFilter {
pub fn from_domain(id: &meerkat_core::ToolFilter) -> Self {
Self::from(id)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ToolSourceKind {
#[default]
Builtin,
Shell,
Comms,
Memory,
Schedule,
WorkGraph,
Mob,
Callback,
Mcp,
RustBundle,
}
impl From<&meerkat_core::types::ToolSourceKind> for ToolSourceKind {
fn from(k: &meerkat_core::types::ToolSourceKind) -> Self {
match k {
meerkat_core::types::ToolSourceKind::Builtin => Self::Builtin,
meerkat_core::types::ToolSourceKind::Shell => Self::Shell,
meerkat_core::types::ToolSourceKind::Comms => Self::Comms,
meerkat_core::types::ToolSourceKind::Memory => Self::Memory,
meerkat_core::types::ToolSourceKind::Schedule => Self::Schedule,
meerkat_core::types::ToolSourceKind::WorkGraph => Self::WorkGraph,
meerkat_core::types::ToolSourceKind::Mob => Self::Mob,
meerkat_core::types::ToolSourceKind::Callback => Self::Callback,
meerkat_core::types::ToolSourceKind::Mcp => Self::Mcp,
meerkat_core::types::ToolSourceKind::RustBundle => Self::RustBundle,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct ToolProvenance {
pub kind: ToolSourceKind,
pub source_id: String,
}
impl From<&meerkat_core::types::ToolProvenance> for ToolProvenance {
fn from(p: &meerkat_core::types::ToolProvenance) -> Self {
Self {
kind: ToolSourceKind::from(&p.kind),
source_id: p.source_id.to_string(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct ToolVisibilityWitness {
pub last_seen_provenance: Option<ToolProvenance>,
}
impl From<&meerkat_core::ToolVisibilityWitness> for ToolVisibilityWitness {
fn from(w: &meerkat_core::ToolVisibilityWitness) -> Self {
Self {
last_seen_provenance: w.last_seen_provenance.as_ref().map(ToolProvenance::from),
}
}
}
impl ToolVisibilityWitness {
pub fn from_domain(id: &meerkat_core::ToolVisibilityWitness) -> Self {
Self::from(id)
}
fn len(&self) -> u64 {
u64::from(self.last_seen_provenance.is_some())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct McpServerId(pub String);
impl<T: Into<String>> From<T> for McpServerId {
fn from(s: T) -> Self {
Self(s.into())
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct PeerCorrelationId(pub String);
impl From<meerkat_core::PeerCorrelationId> for PeerCorrelationId {
fn from(id: meerkat_core::PeerCorrelationId) -> Self {
Self(id.0.to_string())
}
}
impl From<uuid::Uuid> for PeerCorrelationId {
fn from(id: uuid::Uuid) -> Self {
Self(id.to_string())
}
}
impl From<String> for PeerCorrelationId {
fn from(s: String) -> Self {
Self(s)
}
}
impl From<&str> for PeerCorrelationId {
fn from(s: &str) -> Self {
Self(s.to_string())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OutboundPeerRequestState {
#[default]
Sent,
AcceptedProgress,
Completed,
Failed,
TimedOut,
}
impl From<meerkat_core::OutboundPeerRequestState> for OutboundPeerRequestState {
#[allow(clippy::panic)]
fn from(s: meerkat_core::OutboundPeerRequestState) -> Self {
match s {
meerkat_core::OutboundPeerRequestState::Sent => Self::Sent,
meerkat_core::OutboundPeerRequestState::AcceptedProgress => Self::AcceptedProgress,
meerkat_core::OutboundPeerRequestState::Completed => Self::Completed,
meerkat_core::OutboundPeerRequestState::Failed => Self::Failed,
meerkat_core::OutboundPeerRequestState::TimedOut => Self::TimedOut,
_ => panic!(
"unsupported OutboundPeerRequestState variant; update generated MeerkatMachine mirror"
),
}
}
}
impl From<OutboundPeerRequestState> for meerkat_core::OutboundPeerRequestState {
fn from(s: OutboundPeerRequestState) -> Self {
match s {
OutboundPeerRequestState::Sent => Self::Sent,
OutboundPeerRequestState::AcceptedProgress => Self::AcceptedProgress,
OutboundPeerRequestState::Completed => Self::Completed,
OutboundPeerRequestState::Failed => Self::Failed,
OutboundPeerRequestState::TimedOut => Self::TimedOut,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InboundPeerRequestState {
#[default]
Received,
Replied,
}
impl From<meerkat_core::InboundPeerRequestState> for InboundPeerRequestState {
#[allow(clippy::panic)]
fn from(s: meerkat_core::InboundPeerRequestState) -> Self {
match s {
meerkat_core::InboundPeerRequestState::Received => Self::Received,
meerkat_core::InboundPeerRequestState::Replied => Self::Replied,
_ => panic!(
"unsupported InboundPeerRequestState variant; update generated MeerkatMachine mirror"
),
}
}
}
impl From<InboundPeerRequestState> for meerkat_core::InboundPeerRequestState {
fn from(s: InboundPeerRequestState) -> Self {
match s {
InboundPeerRequestState::Received => Self::Received,
InboundPeerRequestState::Replied => Self::Replied,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerTerminalDisposition {
#[default]
Completed,
Failed,
}
impl From<meerkat_core::handles::PeerTerminalDisposition> for PeerTerminalDisposition {
#[allow(clippy::panic)]
fn from(d: meerkat_core::handles::PeerTerminalDisposition) -> Self {
match d {
meerkat_core::handles::PeerTerminalDisposition::Completed => Self::Completed,
meerkat_core::handles::PeerTerminalDisposition::Failed => Self::Failed,
_ => panic!(
"unsupported PeerTerminalDisposition variant; update generated MeerkatMachine mirror"
),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InteractionStreamState {
#[default]
Reserved,
Attached,
Completed,
Expired,
ClosedEarly,
}
impl From<meerkat_core::InteractionStreamState> for InteractionStreamState {
#[allow(clippy::panic)]
fn from(s: meerkat_core::InteractionStreamState) -> Self {
match s {
meerkat_core::InteractionStreamState::Reserved => Self::Reserved,
meerkat_core::InteractionStreamState::Attached => Self::Attached,
meerkat_core::InteractionStreamState::Completed => Self::Completed,
meerkat_core::InteractionStreamState::Expired => Self::Expired,
meerkat_core::InteractionStreamState::ClosedEarly => Self::ClosedEarly,
_ => panic!(
"unsupported InteractionStreamState variant; update generated MeerkatMachine mirror"
),
}
}
}
impl From<InteractionStreamState> for meerkat_core::InteractionStreamState {
fn from(s: InteractionStreamState) -> Self {
match s {
InteractionStreamState::Reserved => Self::Reserved,
InteractionStreamState::Attached => Self::Attached,
InteractionStreamState::Completed => Self::Completed,
InteractionStreamState::Expired => Self::Expired,
InteractionStreamState::ClosedEarly => Self::ClosedEarly,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum McpServerState {
#[default]
PendingConnect,
Connected,
Failed,
Disconnected,
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct CommsRuntimeId(pub String);
impl<T: Into<String>> From<T> for CommsRuntimeId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl CommsRuntimeId {
pub fn from_runtime(runtime: &std::sync::Arc<dyn meerkat_core::agent::CommsRuntime>) -> Self {
let ptr = std::sync::Arc::as_ptr(runtime).cast::<()>() as usize;
Self(format!("comms-runtime-0x{ptr:x}"))
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct MobId(pub String);
impl<T: Into<String>> From<T> for MobId {
fn from(s: T) -> Self {
Self(s.into())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressEnvelopeClass {
#[default]
Message,
Request,
Lifecycle,
Response,
Ack,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressAdmittedKind {
#[default]
Message,
Request,
Response,
Ack,
PlainEvent,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressInputClass {
#[default]
ActionableMessage,
ActionableRequest,
ResponseProgress,
ResponseTerminal,
PeerLifecycleAdded,
PeerLifecycleRetired,
PeerLifecycleUnwired,
SilentRequest,
Ack,
PlainEvent,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressLifecycleClass {
#[default]
PeerAdded,
PeerRetired,
PeerUnwired,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressAuthClass {
#[default]
Required,
SupervisorBridgeExempt,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressResponseStatus {
#[default]
Accepted,
Completed,
Failed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressRequestClass {
#[default]
Other,
MobPeerAdded,
MobPeerRetired,
MobPeerUnwired,
SupervisorBridge,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressResponseTerminality {
#[default]
Progress,
TerminalCompleted,
TerminalFailed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressAuthorityPhaseClass {
#[default]
Absent,
Received,
Dropped,
Delivered,
}
impl From<PeerIngressAuthorityPhaseClass> for meerkat_core::PeerIngressAuthorityPhase {
fn from(phase: PeerIngressAuthorityPhaseClass) -> Self {
match phase {
PeerIngressAuthorityPhaseClass::Absent => Self::Absent,
PeerIngressAuthorityPhaseClass::Received => Self::Received,
PeerIngressAuthorityPhaseClass::Dropped => Self::Dropped,
PeerIngressAuthorityPhaseClass::Delivered => Self::Delivered,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressReceiveOutcomeClass {
#[default]
Admitted,
DroppedUntrustedSender,
DroppedSessionClosed,
DroppedInboxFull,
}
impl From<PeerIngressReceiveOutcomeClass> for meerkat_core::PeerIngressReceiveOutcome {
fn from(outcome: PeerIngressReceiveOutcomeClass) -> Self {
match outcome {
PeerIngressReceiveOutcomeClass::Admitted => Self::Admitted,
PeerIngressReceiveOutcomeClass::DroppedUntrustedSender => Self::DroppedUntrustedSender,
PeerIngressReceiveOutcomeClass::DroppedSessionClosed => Self::DroppedSessionClosed,
PeerIngressReceiveOutcomeClass::DroppedInboxFull => Self::DroppedInboxFull,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerIngressAdmissionDiagnosticClass {
#[default]
TrustedAtAdmission,
UntrustedAtAdmission,
}
impl From<PeerIngressAdmissionDiagnosticClass> for meerkat_core::PeerIngressAdmissionDiagnostic {
fn from(diagnostic: PeerIngressAdmissionDiagnosticClass) -> Self {
match diagnostic {
PeerIngressAdmissionDiagnosticClass::TrustedAtAdmission => Self::TrustedAtAdmission,
PeerIngressAdmissionDiagnosticClass::UntrustedAtAdmission => Self::UntrustedAtAdmission,
}
}
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
Default,
serde::Serialize,
serde::Deserialize,
)]
pub enum PeerIngressOwnerKind {
#[default]
Unattached,
SessionOwned,
MobOwned,
}
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
Default,
serde::Serialize,
serde::Deserialize,
)]
pub enum SupervisorBindingKind {
#[default]
Unbound,
Bound,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TurnPhase {
#[default]
Ready,
ApplyingPrimitive,
CallingLlm,
WaitingForOps,
DrainingBoundary,
Extracting,
ErrorRecovery,
Cancelling,
Completed,
Failed,
Cancelled,
}
impl TurnPhase {
pub const fn as_str(self) -> &'static str {
match self {
Self::Ready => "Ready",
Self::ApplyingPrimitive => "ApplyingPrimitive",
Self::CallingLlm => "CallingLlm",
Self::WaitingForOps => "WaitingForOps",
Self::DrainingBoundary => "DrainingBoundary",
Self::Extracting => "Extracting",
Self::ErrorRecovery => "ErrorRecovery",
Self::Cancelling => "Cancelling",
Self::Completed => "Completed",
Self::Failed => "Failed",
Self::Cancelled => "Cancelled",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RegistrationPhase {
#[default]
Queuing,
Active,
Draining,
}
impl RegistrationPhase {
pub const fn as_str(self) -> &'static str {
match self {
Self::Queuing => "Queuing",
Self::Active => "Active",
Self::Draining => "Draining",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum DrainPhase {
#[default]
Inactive,
Running,
Stopped,
ExitedRespawnable,
}
impl DrainPhase {
pub const fn as_str(self) -> &'static str {
match self {
Self::Inactive => "Inactive",
Self::Running => "Running",
Self::Stopped => "Stopped",
Self::ExitedRespawnable => "ExitedRespawnable",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum DrainMode {
#[default]
Timed,
AttachedSession,
PersistentHost,
}
impl DrainMode {
pub const fn as_str(self) -> &'static str {
match self {
Self::Timed => "Timed",
Self::AttachedSession => "AttachedSession",
Self::PersistentHost => "PersistentHost",
}
}
}
impl From<crate::meerkat_machine::CommsDrainMode> for DrainMode {
fn from(mode: crate::meerkat_machine::CommsDrainMode) -> Self {
match mode {
crate::meerkat_machine::CommsDrainMode::Timed => Self::Timed,
crate::meerkat_machine::CommsDrainMode::AttachedSession => Self::AttachedSession,
crate::meerkat_machine::CommsDrainMode::PersistentHost => Self::PersistentHost,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SurfacePhase {
#[default]
Operating,
Shutdown,
}
impl SurfacePhase {
pub const fn as_str(self) -> &'static str {
match self {
Self::Operating => "Operating",
Self::Shutdown => "Shutdown",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputPhase {
#[default]
Queued,
Staged,
Applied,
AppliedPendingConsumption,
Consumed,
Superseded,
Coalesced,
Abandoned,
}
impl InputPhase {
pub const fn as_str(self) -> &'static str {
match self {
Self::Queued => "Queued",
Self::Staged => "Staged",
Self::Applied => "Applied",
Self::AppliedPendingConsumption => "AppliedPendingConsumption",
Self::Consumed => "Consumed",
Self::Superseded => "Superseded",
Self::Coalesced => "Coalesced",
Self::Abandoned => "Abandoned",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredInputObservedPhase {
Accepted,
#[default]
Queued,
Staged,
Applied,
AppliedPendingConsumption,
Consumed,
Superseded,
Coalesced,
Abandoned,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputTerminalKind {
#[default]
Consumed,
Superseded,
Coalesced,
Abandoned,
}
impl InputTerminalKind {
pub const fn as_str(self) -> &'static str {
match self {
Self::Consumed => "Consumed",
Self::Superseded => "Superseded",
Self::Coalesced => "Coalesced",
Self::Abandoned => "Abandoned",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputPublicLifecycleState {
#[default]
Accepted,
Queued,
Staged,
Applied,
AppliedPendingConsumption,
Consumed,
Superseded,
Coalesced,
Abandoned,
}
impl InputPublicLifecycleState {
pub const fn as_str(self) -> &'static str {
match self {
Self::Accepted => "Accepted",
Self::Queued => "Queued",
Self::Staged => "Staged",
Self::Applied => "Applied",
Self::AppliedPendingConsumption => "AppliedPendingConsumption",
Self::Consumed => "Consumed",
Self::Superseded => "Superseded",
Self::Coalesced => "Coalesced",
Self::Abandoned => "Abandoned",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputPublicTerminalOutcome {
#[default]
Completed,
Abandoned,
Superseded,
Coalesced,
Cancelled,
}
impl InputPublicTerminalOutcome {
pub const fn as_str(self) -> &'static str {
match self {
Self::Completed => "Completed",
Self::Abandoned => "Abandoned",
Self::Superseded => "Superseded",
Self::Coalesced => "Coalesced",
Self::Cancelled => "Cancelled",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SurfacePendingOp {
#[default]
None,
Add,
Reload,
}
impl SurfacePendingOp {
pub const fn as_str(self) -> &'static str {
match self {
Self::None => "None",
Self::Add => "Add",
Self::Reload => "Reload",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SurfaceStagedOp {
#[default]
None,
Add,
Remove,
Reload,
}
impl SurfaceStagedOp {
pub const fn as_str(self) -> &'static str {
match self {
Self::None => "None",
Self::Add => "Add",
Self::Remove => "Remove",
Self::Reload => "Reload",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TurnPrimitiveKind {
#[default]
None,
ConversationTurn,
ImmediateAppend,
ImmediateContextAppend,
}
impl From<meerkat_core::turn_execution_authority::TurnPrimitiveKind> for TurnPrimitiveKind {
fn from(kind: meerkat_core::turn_execution_authority::TurnPrimitiveKind) -> Self {
match kind {
meerkat_core::turn_execution_authority::TurnPrimitiveKind::None => Self::None,
meerkat_core::turn_execution_authority::TurnPrimitiveKind::ConversationTurn => {
Self::ConversationTurn
}
meerkat_core::turn_execution_authority::TurnPrimitiveKind::ImmediateAppend => {
Self::ImmediateAppend
}
meerkat_core::turn_execution_authority::TurnPrimitiveKind::ImmediateContextAppend => {
Self::ImmediateContextAppend
}
}
}
}
impl From<TurnPrimitiveKind> for meerkat_core::turn_execution_authority::TurnPrimitiveKind {
fn from(kind: TurnPrimitiveKind) -> Self {
match kind {
TurnPrimitiveKind::None => Self::None,
TurnPrimitiveKind::ConversationTurn => Self::ConversationTurn,
TurnPrimitiveKind::ImmediateAppend => Self::ImmediateAppend,
TurnPrimitiveKind::ImmediateContextAppend => Self::ImmediateContextAppend,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ContentShape {
#[default]
Conversation,
ConversationAndContext,
Context,
Empty,
ImmediateAppend,
ImmediateContext,
}
impl ContentShape {
pub const fn as_str(self) -> &'static str {
match self {
Self::Conversation => {
meerkat_core::turn_execution_authority::ContentShape::Conversation.as_str()
}
Self::ConversationAndContext => {
meerkat_core::turn_execution_authority::ContentShape::ConversationAndContext
.as_str()
}
Self::Context => meerkat_core::turn_execution_authority::ContentShape::Context.as_str(),
Self::Empty => meerkat_core::turn_execution_authority::ContentShape::Empty.as_str(),
Self::ImmediateAppend => {
meerkat_core::turn_execution_authority::ContentShape::ImmediateAppend.as_str()
}
Self::ImmediateContext => {
meerkat_core::turn_execution_authority::ContentShape::ImmediateContext.as_str()
}
}
}
}
impl std::fmt::Display for ContentShape {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
impl From<meerkat_core::turn_execution_authority::ContentShape> for ContentShape {
fn from(shape: meerkat_core::turn_execution_authority::ContentShape) -> Self {
match shape {
meerkat_core::turn_execution_authority::ContentShape::Conversation => {
Self::Conversation
}
meerkat_core::turn_execution_authority::ContentShape::ConversationAndContext => {
Self::ConversationAndContext
}
meerkat_core::turn_execution_authority::ContentShape::Context => Self::Context,
meerkat_core::turn_execution_authority::ContentShape::Empty => Self::Empty,
meerkat_core::turn_execution_authority::ContentShape::ImmediateAppend => {
Self::ImmediateAppend
}
meerkat_core::turn_execution_authority::ContentShape::ImmediateContext => {
Self::ImmediateContext
}
}
}
}
impl From<ContentShape> for meerkat_core::turn_execution_authority::ContentShape {
fn from(shape: ContentShape) -> Self {
match shape {
ContentShape::Conversation => Self::Conversation,
ContentShape::ConversationAndContext => Self::ConversationAndContext,
ContentShape::Context => Self::Context,
ContentShape::Empty => Self::Empty,
ContentShape::ImmediateAppend => Self::ImmediateAppend,
ContentShape::ImmediateContext => Self::ImmediateContext,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TurnTerminalOutcome {
#[default]
None,
Completed,
Failed,
Cancelled,
BudgetExhausted,
TimeBudgetExceeded,
StructuredOutputValidationFailed,
}
impl From<meerkat_core::turn_execution_authority::TurnTerminalOutcome> for TurnTerminalOutcome {
fn from(outcome: meerkat_core::turn_execution_authority::TurnTerminalOutcome) -> Self {
match outcome {
meerkat_core::turn_execution_authority::TurnTerminalOutcome::None => Self::None,
meerkat_core::turn_execution_authority::TurnTerminalOutcome::Completed => {
Self::Completed
}
meerkat_core::turn_execution_authority::TurnTerminalOutcome::Failed => Self::Failed,
meerkat_core::turn_execution_authority::TurnTerminalOutcome::Cancelled => {
Self::Cancelled
}
meerkat_core::turn_execution_authority::TurnTerminalOutcome::BudgetExhausted => {
Self::BudgetExhausted
}
meerkat_core::turn_execution_authority::TurnTerminalOutcome::TimeBudgetExceeded => {
Self::TimeBudgetExceeded
}
meerkat_core::turn_execution_authority::TurnTerminalOutcome::StructuredOutputValidationFailed => {
Self::StructuredOutputValidationFailed
}
}
}
}
impl From<TurnTerminalOutcome> for meerkat_core::turn_execution_authority::TurnTerminalOutcome {
fn from(outcome: TurnTerminalOutcome) -> Self {
match outcome {
TurnTerminalOutcome::None => Self::None,
TurnTerminalOutcome::Completed => Self::Completed,
TurnTerminalOutcome::Failed => Self::Failed,
TurnTerminalOutcome::Cancelled => Self::Cancelled,
TurnTerminalOutcome::BudgetExhausted => Self::BudgetExhausted,
TurnTerminalOutcome::TimeBudgetExceeded => Self::TimeBudgetExceeded,
TurnTerminalOutcome::StructuredOutputValidationFailed => {
Self::StructuredOutputValidationFailed
}
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TurnTerminalCauseKind {
#[default]
Unknown,
HookDenied,
HookFailure,
LlmFailure,
ToolFailure,
StructuredOutputValidationFailed,
BudgetExhausted,
TimeBudgetExceeded,
RetryExhausted,
TurnLimitReached,
RuntimeApplyFailure,
FatalFailure,
}
impl From<meerkat_core::turn_execution_authority::TurnTerminalCauseKind> for TurnTerminalCauseKind {
fn from(kind: meerkat_core::turn_execution_authority::TurnTerminalCauseKind) -> Self {
match kind {
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::Unknown => {
Self::Unknown
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::HookDenied => {
Self::HookDenied
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::HookFailure => {
Self::HookFailure
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::LlmFailure => {
Self::LlmFailure
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::ToolFailure => {
Self::ToolFailure
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::StructuredOutputValidationFailed => {
Self::StructuredOutputValidationFailed
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::BudgetExhausted => {
Self::BudgetExhausted
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::TimeBudgetExceeded => {
Self::TimeBudgetExceeded
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::RetryExhausted => {
Self::RetryExhausted
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::TurnLimitReached => {
Self::TurnLimitReached
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::RuntimeApplyFailure => {
Self::RuntimeApplyFailure
}
meerkat_core::turn_execution_authority::TurnTerminalCauseKind::FatalFailure => {
Self::FatalFailure
}
}
}
}
impl From<TurnTerminalCauseKind> for meerkat_core::turn_execution_authority::TurnTerminalCauseKind {
fn from(kind: TurnTerminalCauseKind) -> Self {
match kind {
TurnTerminalCauseKind::Unknown => Self::Unknown,
TurnTerminalCauseKind::HookDenied => Self::HookDenied,
TurnTerminalCauseKind::HookFailure => Self::HookFailure,
TurnTerminalCauseKind::LlmFailure => Self::LlmFailure,
TurnTerminalCauseKind::ToolFailure => Self::ToolFailure,
TurnTerminalCauseKind::StructuredOutputValidationFailed => {
Self::StructuredOutputValidationFailed
}
TurnTerminalCauseKind::BudgetExhausted => Self::BudgetExhausted,
TurnTerminalCauseKind::TimeBudgetExceeded => Self::TimeBudgetExceeded,
TurnTerminalCauseKind::RetryExhausted => Self::RetryExhausted,
TurnTerminalCauseKind::TurnLimitReached => Self::TurnLimitReached,
TurnTerminalCauseKind::RuntimeApplyFailure => Self::RuntimeApplyFailure,
TurnTerminalCauseKind::FatalFailure => Self::FatalFailure,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TerminalCauseClass {
#[default]
Missing,
Unknown,
BudgetExhausted,
TimeBudgetExceeded,
RetryExhausted,
StructuredOutputValidationFailed,
OtherFailure,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SurfaceResultClass {
#[default]
Success,
HardFailure,
Cancelled,
MissingTerminal,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LlmFailureRecoveryKind {
#[default]
Fatal,
Recover,
Exhausted,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum CallTimeoutSource {
#[default]
CallBudget,
TurnBudget,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum CallTimeoutVerdict {
#[default]
RetryableCallTimeout,
TerminalTurnBudget,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RunFailureSourceKind {
#[default]
Unknown,
Llm,
StoreError,
ToolError,
McpError,
SessionNotFound,
TokenBudgetExceeded,
TimeBudgetExceeded,
ToolCallBudgetExceeded,
MaxTokensReached,
ContentFiltered,
MaxTurnsReached,
Cancelled,
InvalidStateTransition,
OperationNotFound,
DepthLimitExceeded,
ConcurrencyLimitExceeded,
ConfigError,
InvalidToolAccess,
InternalError,
BuildError,
AuthReauthRequired,
CallbackPending,
StructuredOutputValidationFailed,
InvalidOutputSchema,
HookDenied,
HookTimeout,
HookExecutionFailed,
HookConfigInvalid,
TerminalFailure,
NoPendingBoundary,
LlmRetryExhausted,
}
impl From<meerkat_core::turn_execution_authority::TurnFailureSourceKind> for RunFailureSourceKind {
fn from(kind: meerkat_core::turn_execution_authority::TurnFailureSourceKind) -> Self {
match kind {
meerkat_core::turn_execution_authority::TurnFailureSourceKind::Unknown => {
Self::Unknown
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::Llm => Self::Llm,
meerkat_core::turn_execution_authority::TurnFailureSourceKind::StoreError => {
Self::StoreError
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::ToolError => {
Self::ToolError
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::McpError => {
Self::McpError
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::SessionNotFound => {
Self::SessionNotFound
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::TokenBudgetExceeded => {
Self::TokenBudgetExceeded
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::TimeBudgetExceeded => {
Self::TimeBudgetExceeded
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::ToolCallBudgetExceeded => {
Self::ToolCallBudgetExceeded
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::MaxTokensReached => {
Self::MaxTokensReached
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::ContentFiltered => {
Self::ContentFiltered
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::MaxTurnsReached => {
Self::MaxTurnsReached
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::Cancelled => {
Self::Cancelled
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::InvalidStateTransition => {
Self::InvalidStateTransition
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::OperationNotFound => {
Self::OperationNotFound
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::DepthLimitExceeded => {
Self::DepthLimitExceeded
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::ConcurrencyLimitExceeded => {
Self::ConcurrencyLimitExceeded
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::ConfigError => {
Self::ConfigError
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::InvalidToolAccess => {
Self::InvalidToolAccess
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::InternalError => {
Self::InternalError
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::BuildError => {
Self::BuildError
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::AuthReauthRequired => {
Self::AuthReauthRequired
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::CallbackPending => {
Self::CallbackPending
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::StructuredOutputValidationFailed => {
Self::StructuredOutputValidationFailed
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::InvalidOutputSchema => {
Self::InvalidOutputSchema
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::HookDenied => {
Self::HookDenied
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::HookTimeout => {
Self::HookTimeout
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::HookExecutionFailed => {
Self::HookExecutionFailed
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::HookConfigInvalid => {
Self::HookConfigInvalid
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::TerminalFailure => {
Self::TerminalFailure
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::NoPendingBoundary => {
Self::NoPendingBoundary
}
meerkat_core::turn_execution_authority::TurnFailureSourceKind::LlmRetryExhausted => {
Self::LlmRetryExhausted
}
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeApplyFailureCause {
#[default]
Unknown,
PrimitiveRejected,
RuntimeContextApply,
RuntimeTurn,
HookDenied,
HookRuntimeFailure,
ExecutorStopped,
ExecutorControlFailed,
ExecutorInternal,
}
impl From<meerkat_core::lifecycle::CoreApplyFailureCauseKind> for RuntimeApplyFailureCause {
#[allow(clippy::panic)]
fn from(kind: meerkat_core::lifecycle::CoreApplyFailureCauseKind) -> Self {
match kind {
meerkat_core::lifecycle::CoreApplyFailureCauseKind::PrimitiveRejected => {
Self::PrimitiveRejected
}
meerkat_core::lifecycle::CoreApplyFailureCauseKind::RuntimeContextApply => {
Self::RuntimeContextApply
}
meerkat_core::lifecycle::CoreApplyFailureCauseKind::RuntimeTurn => Self::RuntimeTurn,
meerkat_core::lifecycle::CoreApplyFailureCauseKind::HookDenied => Self::HookDenied,
meerkat_core::lifecycle::CoreApplyFailureCauseKind::HookRuntimeFailure => {
Self::HookRuntimeFailure
}
meerkat_core::lifecycle::CoreApplyFailureCauseKind::ExecutorStopped => {
Self::ExecutorStopped
}
meerkat_core::lifecycle::CoreApplyFailureCauseKind::ExecutorControlFailed => {
Self::ExecutorControlFailed
}
meerkat_core::lifecycle::CoreApplyFailureCauseKind::ExecutorInternal => {
Self::ExecutorInternal
}
meerkat_core::lifecycle::CoreApplyFailureCauseKind::Unknown => Self::Unknown,
_ => panic!(
"unsupported CoreApplyFailureCauseKind variant; update generated MeerkatMachine mirror"
),
}
}
}
impl From<&meerkat_core::lifecycle::CoreApplyFailureCause> for RuntimeApplyFailureCause {
fn from(cause: &meerkat_core::lifecycle::CoreApplyFailureCause) -> Self {
Self::from(cause.kind)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PreRunPhase {
#[default]
Idle,
Attached,
Retired,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum StagedSessionPhase {
#[default]
NotStaged,
Staged,
Promoting,
Closing,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum MobOperatorAccessRequestKind {
#[default]
Inherit,
Enable,
Disable,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeNoticeKind {
#[default]
Drain,
Reset,
Stop,
Exit,
Recover,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeEventKind {
#[default]
InputLifecycle,
RunLifecycle,
RuntimeStateChange,
Topology,
Projection,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeEffectKind {
#[default]
CancelAfterBoundary,
StopRuntimeExecutor,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionObservedOutcome {
#[default]
Completed,
CompletedWithoutResult,
CallbackPending,
Cancelled,
Abandoned,
RuntimeApplyFailed,
FinalizationFailed,
RuntimeTerminated,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionTerminalObservation {
#[default]
RunResult,
NoResult,
CallbackPending,
MachineTerminal,
RuntimeTerminated,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionFinalizationObservation {
#[default]
Succeeded,
Failed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum UserInterruptObservationKind {
#[default]
Accepted,
IdleNoop,
AttachedNoop,
StagedNoop,
Destroyed,
NotInterruptible,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum UserInterruptPublicResultKind {
#[default]
Interrupted,
StagedNoop,
NotFound,
SessionBusy,
Conflict,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionResultClass {
#[default]
Completed,
CompletedWithoutResult,
CallbackPending,
Cancelled,
AbandonedWithError,
CompletedWithFinalizationFailure,
RuntimeTerminated,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionLiveSessionObservation {
#[default]
NotObserved,
Present,
Absent,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionCleanupAction {
#[default]
RetainRuntime,
CleanupRuntime,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionPreAdmissionAction {
#[default]
RetainPreAdmission,
ReleasePreAdmission,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionWaitFailureObservation {
#[default]
ChannelClosed,
AuthorityUnavailable,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionWaitFailurePublicErrorClass {
#[default]
InternalError,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeCompletionWaitFailurePublicReason {
#[default]
CompletionChannelClosed,
CompletionAuthorityUnavailable,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeOpsLifecycleDurabilityAction {
#[default]
RetainSnapshot,
DeleteSnapshot,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveOpenAdmissionRejection {
#[default]
AlreadyBound,
ChannelAlreadyBound,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveRefreshPublicStatus {
#[default]
Queued,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveClosePublicStatus {
#[default]
Closed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveCommandPublicKind {
#[default]
SendInput,
CommitInput,
Interrupt,
TruncateAssistantOutput,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveCommandRejectionReason {
#[default]
ChannelNotFound,
NoAdapter,
ChannelNotReady,
UnsupportedCommand,
AdapterError,
InternalHostError,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveCommandRejectionPublicErrorClass {
#[default]
InvalidParams,
InternalError,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveChannelRequestPublicKind {
#[default]
Status,
Close,
Refresh,
WebrtcAnswer,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveChannelRequestRejectionReason {
#[default]
ChannelNotFound,
NoAdapter,
InvalidToken,
InvalidPayload,
WebrtcAnswerError,
InternalHostError,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveChannelRequestRejectionPublicErrorClass {
#[default]
InvalidParams,
InternalError,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveWebrtcAnswerAdmissionRejection {
#[default]
TokenNotFound,
TokenExpired,
TokenChannelMismatch,
TokenAlreadyConsumed,
ChannelNotBound,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveWebsocketTokenAdmissionRejection {
#[default]
TokenNotFound,
TokenExpired,
TokenChannelMismatch,
TokenAlreadyConsumed,
ChannelNotBound,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveWebsocketTokenAdmissionPublicErrorClass {
#[default]
InvalidToken,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveWebrtcAnswerPublicStatus {
#[default]
Answered,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RpcEventStreamTerminalReason {
#[default]
RemoteEnd,
TerminalError,
ExplicitClose,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RpcEventStreamTerminalObservationKind {
#[default]
TransportEnded,
NotificationQueueOverflow,
NotificationReceiverGone,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RpcEventStreamTerminalErrorCode {
#[default]
StreamQueueOverflow,
StreamReceiverGone,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveChannelPublicStatus {
#[default]
Idle,
Opening,
Ready,
Degraded,
Closing,
Closed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LiveChannelDegradationReason {
#[default]
Unknown,
RateLimited,
ProviderThrottled,
NetworkUnstable,
Other,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RealtimeTranscriptRoleKind {
#[default]
User,
Assistant,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RealtimeTranscriptLaneKind {
#[default]
Display,
Spoken,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeLifecycleObservedState {
#[default]
Initializing,
Idle,
Attached,
Running,
Retired,
Stopped,
Destroyed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeLifecycleTerminality {
#[default]
NonTerminal,
Terminal,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeInputAdmission {
#[default]
RejectsInput,
AcceptsInput,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeQueueAdmission {
#[default]
BlocksQueue,
ProcessesQueue,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimePrepareAdmission {
#[default]
NotReady,
Ready,
Destroyed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeIngressAdmission {
#[default]
Open,
NotReady,
Destroyed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RuntimeLoopRunBinding {
#[default]
Blocked,
AllocateNew,
UsePrebound,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TurnCancellationReason {
#[default]
Observed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum LlmRetryFailureKind {
#[default]
RateLimited,
NetworkTimeout,
CallTimeout,
RetryableProviderError,
}
impl From<meerkat_core::retry::LlmRetryFailureKind> for LlmRetryFailureKind {
fn from(kind: meerkat_core::retry::LlmRetryFailureKind) -> Self {
match kind {
meerkat_core::retry::LlmRetryFailureKind::RateLimited => Self::RateLimited,
meerkat_core::retry::LlmRetryFailureKind::NetworkTimeout => Self::NetworkTimeout,
meerkat_core::retry::LlmRetryFailureKind::CallTimeout => Self::CallTimeout,
meerkat_core::retry::LlmRetryFailureKind::RetryableProviderError => {
Self::RetryableProviderError
}
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PostAdmissionSignalKind {
#[default]
WakeLoop,
InterruptYielding,
RequestImmediateProcessing,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ExternalToolSurfaceBaseState {
#[default]
Absent,
Active,
Removing,
Removed,
}
impl From<meerkat_core::tool_scope::ExternalToolSurfaceBaseState> for ExternalToolSurfaceBaseState {
fn from(state: meerkat_core::tool_scope::ExternalToolSurfaceBaseState) -> Self {
match state {
meerkat_core::tool_scope::ExternalToolSurfaceBaseState::Absent => Self::Absent,
meerkat_core::tool_scope::ExternalToolSurfaceBaseState::Active => Self::Active,
meerkat_core::tool_scope::ExternalToolSurfaceBaseState::Removing => Self::Removing,
meerkat_core::tool_scope::ExternalToolSurfaceBaseState::Removed => Self::Removed,
}
}
}
impl From<ExternalToolSurfaceBaseState> for meerkat_core::tool_scope::ExternalToolSurfaceBaseState {
fn from(state: ExternalToolSurfaceBaseState) -> Self {
match state {
ExternalToolSurfaceBaseState::Absent => Self::Absent,
ExternalToolSurfaceBaseState::Active => Self::Active,
ExternalToolSurfaceBaseState::Removing => Self::Removing,
ExternalToolSurfaceBaseState::Removed => Self::Removed,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ExternalToolSurfaceDeltaOperation {
#[default]
None,
Add,
Remove,
Reload,
}
impl From<meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation>
for ExternalToolSurfaceDeltaOperation
{
fn from(op: meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation) -> Self {
match op {
meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation::None => Self::None,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation::Add => Self::Add,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation::Remove => Self::Remove,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation::Reload => Self::Reload,
}
}
}
impl From<ExternalToolSurfaceDeltaOperation>
for meerkat_core::tool_scope::ExternalToolSurfaceDeltaOperation
{
fn from(op: ExternalToolSurfaceDeltaOperation) -> Self {
match op {
ExternalToolSurfaceDeltaOperation::None => Self::None,
ExternalToolSurfaceDeltaOperation::Add => Self::Add,
ExternalToolSurfaceDeltaOperation::Remove => Self::Remove,
ExternalToolSurfaceDeltaOperation::Reload => Self::Reload,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ExternalToolSurfaceDeltaPhase {
#[default]
None,
Pending,
Applied,
Draining,
Failed,
Forced,
}
impl From<meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase>
for ExternalToolSurfaceDeltaPhase
{
fn from(phase: meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase) -> Self {
match phase {
meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase::None => Self::None,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase::Pending => Self::Pending,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase::Applied => Self::Applied,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase::Draining => Self::Draining,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase::Failed => Self::Failed,
meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase::Forced => Self::Forced,
}
}
}
impl From<ExternalToolSurfaceDeltaPhase>
for meerkat_core::tool_scope::ExternalToolSurfaceDeltaPhase
{
fn from(phase: ExternalToolSurfaceDeltaPhase) -> Self {
match phase {
ExternalToolSurfaceDeltaPhase::None => Self::None,
ExternalToolSurfaceDeltaPhase::Pending => Self::Pending,
ExternalToolSurfaceDeltaPhase::Applied => Self::Applied,
ExternalToolSurfaceDeltaPhase::Draining => Self::Draining,
ExternalToolSurfaceDeltaPhase::Failed => Self::Failed,
ExternalToolSurfaceDeltaPhase::Forced => Self::Forced,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum ExternalToolSurfaceFailureCause {
#[default]
PendingFailed,
SurfaceDraining,
SurfaceUnavailable,
}
impl From<meerkat_core::tool_scope::ExternalToolSurfaceFailureCause>
for ExternalToolSurfaceFailureCause
{
fn from(cause: meerkat_core::tool_scope::ExternalToolSurfaceFailureCause) -> Self {
match cause {
meerkat_core::tool_scope::ExternalToolSurfaceFailureCause::PendingFailed => {
Self::PendingFailed
}
meerkat_core::tool_scope::ExternalToolSurfaceFailureCause::SurfaceDraining => {
Self::SurfaceDraining
}
meerkat_core::tool_scope::ExternalToolSurfaceFailureCause::SurfaceUnavailable => {
Self::SurfaceUnavailable
}
}
}
}
impl From<ExternalToolSurfaceFailureCause>
for meerkat_core::tool_scope::ExternalToolSurfaceFailureCause
{
fn from(cause: ExternalToolSurfaceFailureCause) -> Self {
match cause {
ExternalToolSurfaceFailureCause::PendingFailed => Self::PendingFailed,
ExternalToolSurfaceFailureCause::SurfaceDraining => Self::SurfaceDraining,
ExternalToolSurfaceFailureCause::SurfaceUnavailable => Self::SurfaceUnavailable,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum DrainExitReason {
#[default]
IdleTimeout,
Dismissed,
Failed,
Aborted,
SessionShutdown,
}
impl From<meerkat_core::handles::DrainExitReason> for DrainExitReason {
fn from(reason: meerkat_core::handles::DrainExitReason) -> Self {
match reason {
meerkat_core::handles::DrainExitReason::IdleTimeout => Self::IdleTimeout,
meerkat_core::handles::DrainExitReason::Dismissed => Self::Dismissed,
meerkat_core::handles::DrainExitReason::Failed => Self::Failed,
meerkat_core::handles::DrainExitReason::Aborted => Self::Aborted,
meerkat_core::handles::DrainExitReason::SessionShutdown => Self::SessionShutdown,
}
}
}
impl From<DrainExitReason> for meerkat_core::handles::DrainExitReason {
fn from(reason: DrainExitReason) -> Self {
match reason {
DrainExitReason::IdleTimeout => Self::IdleTimeout,
DrainExitReason::Dismissed => Self::Dismissed,
DrainExitReason::Failed => Self::Failed,
DrainExitReason::Aborted => Self::Aborted,
DrainExitReason::SessionShutdown => Self::SessionShutdown,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SurfaceRequestPhase {
#[default]
Pending,
Published,
Cancelled,
Completed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SurfaceRequestTerminalPolicy {
#[default]
RespondWithoutPublish,
PublishOnSuccess,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum WorkOrigin {
#[default]
External,
Internal,
Ingest,
}
impl From<meerkat_core::comms::InputSource> for WorkOrigin {
fn from(src: meerkat_core::comms::InputSource) -> Self {
match src {
meerkat_core::comms::InputSource::Tcp
| meerkat_core::comms::InputSource::Uds
| meerkat_core::comms::InputSource::Stdin
| meerkat_core::comms::InputSource::Webhook
| meerkat_core::comms::InputSource::Rpc => Self::External,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationStatus {
#[default]
Absent,
Provisioning,
Running,
Retiring,
Completed,
Failed,
Aborted,
Cancelled,
Retired,
Terminated,
}
impl From<meerkat_core::ops_lifecycle::OperationStatus> for OperationStatus {
fn from(status: meerkat_core::ops_lifecycle::OperationStatus) -> Self {
match status {
meerkat_core::ops_lifecycle::OperationStatus::Absent => Self::Absent,
meerkat_core::ops_lifecycle::OperationStatus::Provisioning => Self::Provisioning,
meerkat_core::ops_lifecycle::OperationStatus::Running => Self::Running,
meerkat_core::ops_lifecycle::OperationStatus::Retiring => Self::Retiring,
meerkat_core::ops_lifecycle::OperationStatus::Completed => Self::Completed,
meerkat_core::ops_lifecycle::OperationStatus::Failed => Self::Failed,
meerkat_core::ops_lifecycle::OperationStatus::Aborted => Self::Aborted,
meerkat_core::ops_lifecycle::OperationStatus::Cancelled => Self::Cancelled,
meerkat_core::ops_lifecycle::OperationStatus::Retired => Self::Retired,
meerkat_core::ops_lifecycle::OperationStatus::Terminated => Self::Terminated,
}
}
}
impl From<OperationStatus> for meerkat_core::ops_lifecycle::OperationStatus {
fn from(status: OperationStatus) -> Self {
match status {
OperationStatus::Absent => Self::Absent,
OperationStatus::Provisioning => Self::Provisioning,
OperationStatus::Running => Self::Running,
OperationStatus::Retiring => Self::Retiring,
OperationStatus::Completed => Self::Completed,
OperationStatus::Failed => Self::Failed,
OperationStatus::Aborted => Self::Aborted,
OperationStatus::Cancelled => Self::Cancelled,
OperationStatus::Retired => Self::Retired,
OperationStatus::Terminated => Self::Terminated,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationTerminalOutcomeKind {
#[default]
Completed,
Failed,
Aborted,
Cancelled,
Retired,
Terminated,
}
pub type OpTerminalPayload = meerkat_core::ops_lifecycle::OperationTerminalOutcome;
pub type OperationResult = meerkat_core::ops::OperationResult;
impl From<&OpTerminalPayload> for OperationTerminalOutcomeKind {
fn from(payload: &OpTerminalPayload) -> Self {
match payload {
OpTerminalPayload::Completed(_) => Self::Completed,
OpTerminalPayload::Failed { .. } => Self::Failed,
OpTerminalPayload::Aborted { .. } => Self::Aborted,
OpTerminalPayload::Cancelled { .. } => Self::Cancelled,
OpTerminalPayload::Retired => Self::Retired,
OpTerminalPayload::Terminated { .. } => Self::Terminated,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationPublicResultClass {
#[default]
MissingAuthority,
Running,
Completed,
Failed,
Cancelled,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationCompletionFeedClass {
#[default]
Emit,
Suppress,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationCompletionWakeClass {
#[default]
Wake,
Ignore,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OperationDurabilityClass {
#[default]
Retain,
Discard,
}
impl From<OperationPublicResultClass> for meerkat_core::ops_lifecycle::OperationPublicResultClass {
fn from(value: OperationPublicResultClass) -> Self {
match value {
OperationPublicResultClass::MissingAuthority => Self::MissingAuthority,
OperationPublicResultClass::Running => Self::Running,
OperationPublicResultClass::Completed => Self::Completed,
OperationPublicResultClass::Failed => Self::Failed,
OperationPublicResultClass::Cancelled => Self::Cancelled,
}
}
}
impl From<OperationCompletionWakeClass>
for meerkat_core::ops_lifecycle::OperationCompletionWakeClass
{
fn from(value: OperationCompletionWakeClass) -> Self {
match value {
OperationCompletionWakeClass::Wake => Self::Wake,
OperationCompletionWakeClass::Ignore => Self::Ignore,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OpRegistrationAdmissionResultKind {
#[default]
Accept,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OpRegistrationRejectReasonKind {
#[default]
AlreadyRegistered,
MaxConcurrentExceeded,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OpLifecycleActionKind {
#[default]
Start,
Fail,
PeerReady,
ProgressReported,
Complete,
Abort,
Cancel,
RetireRequested,
RetireCompleted,
Terminate,
}
impl From<meerkat_core::ops_lifecycle::OperationLifecycleAction> for OpLifecycleActionKind {
fn from(action: meerkat_core::ops_lifecycle::OperationLifecycleAction) -> Self {
match action {
meerkat_core::ops_lifecycle::OperationLifecycleAction::Start => Self::Start,
meerkat_core::ops_lifecycle::OperationLifecycleAction::Fail => Self::Fail,
meerkat_core::ops_lifecycle::OperationLifecycleAction::PeerReady => Self::PeerReady,
meerkat_core::ops_lifecycle::OperationLifecycleAction::ProgressReported => {
Self::ProgressReported
}
meerkat_core::ops_lifecycle::OperationLifecycleAction::Complete => Self::Complete,
meerkat_core::ops_lifecycle::OperationLifecycleAction::Abort => Self::Abort,
meerkat_core::ops_lifecycle::OperationLifecycleAction::Cancel => Self::Cancel,
meerkat_core::ops_lifecycle::OperationLifecycleAction::RetireRequested => {
Self::RetireRequested
}
meerkat_core::ops_lifecycle::OperationLifecycleAction::RetireCompleted => {
Self::RetireCompleted
}
meerkat_core::ops_lifecycle::OperationLifecycleAction::Terminate => Self::Terminate,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum OpLifecycleRejectReasonKind {
#[default]
OperationNotFound,
InvalidTransition,
PeerNotExpected,
AlreadyPeerReady,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputAbandonReason {
#[default]
Retired,
Reset,
Stopped,
Destroyed,
Cancelled,
MaxAttemptsExhausted,
}
impl From<&crate::input_state::InputAbandonReason> for InputAbandonReason {
fn from(reason: &crate::input_state::InputAbandonReason) -> Self {
match reason {
crate::input_state::InputAbandonReason::Retired => Self::Retired,
crate::input_state::InputAbandonReason::Reset => Self::Reset,
crate::input_state::InputAbandonReason::Stopped => Self::Stopped,
crate::input_state::InputAbandonReason::Destroyed => Self::Destroyed,
crate::input_state::InputAbandonReason::Cancelled => Self::Cancelled,
crate::input_state::InputAbandonReason::MaxAttemptsExhausted { .. } => {
Self::MaxAttemptsExhausted
}
}
}
}
impl InputAbandonReason {
pub const fn as_str(self) -> &'static str {
match self {
Self::Retired => "retired",
Self::Reset => "reset",
Self::Stopped => "stopped",
Self::Destroyed => "destroyed",
Self::Cancelled => "cancelled",
Self::MaxAttemptsExhausted => "max_attempts_exhausted",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputLane {
#[default]
Queue,
Steer,
}
impl From<crate::HandlingMode> for InputLane {
fn from(mode: crate::HandlingMode) -> Self {
match mode {
crate::HandlingMode::Queue => Self::Queue,
crate::HandlingMode::Steer => Self::Steer,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionInputKind {
#[default]
Prompt,
PeerMessage,
PeerRequest,
PeerResponseProgress,
PeerResponseTerminal,
FlowStep,
ExternalEvent,
Continuation,
Operation,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionContinuationKind {
#[default]
Ordinary,
WorkgraphAttention,
}
impl From<crate::input::ContinuationKind> for AdmissionContinuationKind {
fn from(kind: crate::input::ContinuationKind) -> Self {
match kind {
crate::input::ContinuationKind::Ordinary => Self::Ordinary,
crate::input::ContinuationKind::WorkgraphAttention => Self::WorkgraphAttention,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum InputDurabilityKind {
#[default]
Durable,
Ephemeral,
Derived,
Missing,
}
impl From<crate::input::InputDurability> for InputDurabilityKind {
fn from(durability: crate::input::InputDurability) -> Self {
match durability {
crate::input::InputDurability::Durable => Self::Durable,
crate::input::InputDurability::Ephemeral => Self::Ephemeral,
crate::input::InputDurability::Derived => Self::Derived,
}
}
}
impl From<Option<crate::input::InputDurability>> for InputDurabilityKind {
fn from(durability: Option<crate::input::InputDurability>) -> Self {
durability.map(Self::from).unwrap_or(Self::Missing)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionInputOriginKind {
#[default]
Operator,
Peer,
Flow,
System,
External,
}
impl From<&crate::input::InputOrigin> for AdmissionInputOriginKind {
fn from(origin: &crate::input::InputOrigin) -> Self {
match origin {
crate::input::InputOrigin::Operator => Self::Operator,
crate::input::InputOrigin::Peer { .. } => Self::Peer,
crate::input::InputOrigin::Flow { .. } => Self::Flow,
crate::input::InputOrigin::System => Self::System,
crate::input::InputOrigin::External { .. } => Self::External,
}
}
}
impl From<crate::identifiers::InputKind> for AdmissionInputKind {
fn from(kind: crate::identifiers::InputKind) -> Self {
match kind {
crate::identifiers::InputKind::Prompt => Self::Prompt,
crate::identifiers::InputKind::PeerMessage => Self::PeerMessage,
crate::identifiers::InputKind::PeerRequest => Self::PeerRequest,
crate::identifiers::InputKind::PeerResponseProgress => Self::PeerResponseProgress,
crate::identifiers::InputKind::PeerResponseTerminal => Self::PeerResponseTerminal,
crate::identifiers::InputKind::FlowStep => Self::FlowStep,
crate::identifiers::InputKind::ExternalEvent => Self::ExternalEvent,
crate::identifiers::InputKind::Continuation => Self::Continuation,
crate::identifiers::InputKind::Operation => Self::Operation,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPolicyApplyMode {
#[default]
StageRunStart,
StageRunBoundary,
InjectNow,
Ignore,
}
impl From<AdmissionPolicyApplyMode> for crate::policy::ApplyMode {
fn from(mode: AdmissionPolicyApplyMode) -> Self {
match mode {
AdmissionPolicyApplyMode::StageRunStart => Self::StageRunStart,
AdmissionPolicyApplyMode::StageRunBoundary => Self::StageRunBoundary,
AdmissionPolicyApplyMode::InjectNow => Self::InjectNow,
AdmissionPolicyApplyMode::Ignore => Self::Ignore,
}
}
}
impl From<crate::policy::ApplyMode> for AdmissionPolicyApplyMode {
fn from(mode: crate::policy::ApplyMode) -> Self {
match mode {
crate::policy::ApplyMode::StageRunStart => Self::StageRunStart,
crate::policy::ApplyMode::StageRunBoundary => Self::StageRunBoundary,
crate::policy::ApplyMode::InjectNow => Self::InjectNow,
crate::policy::ApplyMode::Ignore => Self::Ignore,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPolicyWakeMode {
#[default]
WakeIfIdle,
InterruptYielding,
None,
}
impl From<AdmissionPolicyWakeMode> for crate::policy::WakeMode {
fn from(mode: AdmissionPolicyWakeMode) -> Self {
match mode {
AdmissionPolicyWakeMode::WakeIfIdle => Self::WakeIfIdle,
AdmissionPolicyWakeMode::InterruptYielding => Self::InterruptYielding,
AdmissionPolicyWakeMode::None => Self::None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPolicyQueueMode {
None,
#[default]
Fifo,
Coalesce,
Supersede,
Priority,
}
impl From<AdmissionPolicyQueueMode> for crate::policy::QueueMode {
fn from(mode: AdmissionPolicyQueueMode) -> Self {
match mode {
AdmissionPolicyQueueMode::None => Self::None,
AdmissionPolicyQueueMode::Fifo => Self::Fifo,
AdmissionPolicyQueueMode::Coalesce => Self::Coalesce,
AdmissionPolicyQueueMode::Supersede => Self::Supersede,
AdmissionPolicyQueueMode::Priority => Self::Priority,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPolicyConsumePoint {
OnAccept,
OnApply,
OnRunStart,
#[default]
OnRunComplete,
ExplicitAck,
}
impl From<AdmissionPolicyConsumePoint> for crate::policy::ConsumePoint {
fn from(point: AdmissionPolicyConsumePoint) -> Self {
match point {
AdmissionPolicyConsumePoint::OnAccept => Self::OnAccept,
AdmissionPolicyConsumePoint::OnApply => Self::OnApply,
AdmissionPolicyConsumePoint::OnRunStart => Self::OnRunStart,
AdmissionPolicyConsumePoint::OnRunComplete => Self::OnRunComplete,
AdmissionPolicyConsumePoint::ExplicitAck => Self::ExplicitAck,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPolicyDrainPolicy {
#[default]
QueueNextTurn,
SteerBatch,
Immediate,
Ignore,
}
impl From<AdmissionPolicyDrainPolicy> for crate::policy::DrainPolicy {
fn from(policy: AdmissionPolicyDrainPolicy) -> Self {
match policy {
AdmissionPolicyDrainPolicy::QueueNextTurn => Self::QueueNextTurn,
AdmissionPolicyDrainPolicy::SteerBatch => Self::SteerBatch,
AdmissionPolicyDrainPolicy::Immediate => Self::Immediate,
AdmissionPolicyDrainPolicy::Ignore => Self::Ignore,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionRoutingDisposition {
#[default]
Queue,
Steer,
Immediate,
Drop,
}
impl From<AdmissionRoutingDisposition> for crate::policy::RoutingDisposition {
fn from(disposition: AdmissionRoutingDisposition) -> Self {
match disposition {
AdmissionRoutingDisposition::Queue => Self::Queue,
AdmissionRoutingDisposition::Steer => Self::Steer,
AdmissionRoutingDisposition::Immediate => Self::Immediate,
AdmissionRoutingDisposition::Drop => Self::Drop,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionRunApplyBoundary {
#[default]
RunStart,
RunCheckpoint,
Immediate,
}
impl From<AdmissionRunApplyBoundary> for meerkat_core::lifecycle::run_primitive::RunApplyBoundary {
fn from(boundary: AdmissionRunApplyBoundary) -> Self {
match boundary {
AdmissionRunApplyBoundary::RunStart => Self::RunStart,
AdmissionRunApplyBoundary::RunCheckpoint => Self::RunCheckpoint,
AdmissionRunApplyBoundary::Immediate => Self::Immediate,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionRuntimeExecutionKind {
#[default]
ContentTurn,
ResumePending,
}
impl From<AdmissionRuntimeExecutionKind> for meerkat_core::lifecycle::RuntimeExecutionKind {
fn from(kind: AdmissionRuntimeExecutionKind) -> Self {
match kind {
AdmissionRuntimeExecutionKind::ContentTurn => Self::ContentTurn,
AdmissionRuntimeExecutionKind::ResumePending => Self::ResumePending,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPeerResponseTerminalApplyIntent {
#[default]
AppendContextAndRun,
}
impl From<AdmissionPeerResponseTerminalApplyIntent>
for meerkat_core::lifecycle::run_primitive::PeerResponseTerminalApplyIntent
{
fn from(intent: AdmissionPeerResponseTerminalApplyIntent) -> Self {
match intent {
AdmissionPeerResponseTerminalApplyIntent::AppendContextAndRun => {
Self::AppendContextAndRun
}
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionPlanKind {
ConsumedOnAccept,
#[default]
Queued,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionIdempotencyResultKind {
#[default]
Accept,
Deduplicated,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionValidationResultKind {
#[default]
Accept,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum PeerResponseTerminalObservedStatus {
#[default]
NotPeerTerminal,
Completed,
Failed,
Cancelled,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionRejectReasonKind {
#[default]
DurabilityMissing,
ExternalDerivedDurabilityForbidden,
DerivedDurabilityForbiddenForInputKind,
PeerHandlingModeInvalid,
PeerResponseTerminalInvalid,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum WaitAllAdmissionResultKind {
#[default]
Accept,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum WaitAllRejectReasonKind {
#[default]
DuplicateOperation,
WaitAlreadyActive,
OperationNotFound,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredInputNormalizationReasonKind {
#[default]
QueueAccepted,
RollbackStaged,
BoundaryReceiptCommitted,
MissingBoundaryReceipt,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionQueueActionKind {
#[default]
None,
EnqueueTo,
EnqueueFront,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum AdmissionExistingQueuedActionKind {
#[default]
None,
Coalesce,
Supersede,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredInputKind {
#[default]
Prompt,
PeerMessage,
PeerRequest,
PeerResponseProgress,
PeerResponseTerminal,
FlowStep,
ExternalEvent,
Continuation,
Operation,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredInputRecoveryDisposition {
#[default]
Retain,
Discard,
}
impl From<crate::identifiers::InputKind> for RecoveredInputKind {
fn from(kind: crate::identifiers::InputKind) -> Self {
match kind {
crate::identifiers::InputKind::Prompt => Self::Prompt,
crate::identifiers::InputKind::PeerMessage => Self::PeerMessage,
crate::identifiers::InputKind::PeerRequest => Self::PeerRequest,
crate::identifiers::InputKind::PeerResponseProgress => Self::PeerResponseProgress,
crate::identifiers::InputKind::PeerResponseTerminal => Self::PeerResponseTerminal,
crate::identifiers::InputKind::FlowStep => Self::FlowStep,
crate::identifiers::InputKind::ExternalEvent => Self::ExternalEvent,
crate::identifiers::InputKind::Continuation => Self::Continuation,
crate::identifiers::InputKind::Operation => Self::Operation,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredRunApplyBoundary {
#[default]
RunStart,
RunCheckpoint,
Immediate,
}
impl TryFrom<meerkat_core::lifecycle::run_primitive::RunApplyBoundary>
for RecoveredRunApplyBoundary
{
type Error = &'static str;
fn try_from(
boundary: meerkat_core::lifecycle::run_primitive::RunApplyBoundary,
) -> Result<Self, Self::Error> {
match boundary {
meerkat_core::lifecycle::run_primitive::RunApplyBoundary::RunStart => {
Ok(Self::RunStart)
}
meerkat_core::lifecycle::run_primitive::RunApplyBoundary::RunCheckpoint => {
Ok(Self::RunCheckpoint)
}
meerkat_core::lifecycle::run_primitive::RunApplyBoundary::Immediate => {
Ok(Self::Immediate)
}
_ => Err("unknown recovered runtime boundary"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredRuntimeExecutionKind {
#[default]
ContentTurn,
ResumePending,
}
impl From<meerkat_core::lifecycle::RuntimeExecutionKind> for RecoveredRuntimeExecutionKind {
fn from(kind: meerkat_core::lifecycle::RuntimeExecutionKind) -> Self {
match kind {
meerkat_core::lifecycle::RuntimeExecutionKind::ContentTurn => Self::ContentTurn,
meerkat_core::lifecycle::RuntimeExecutionKind::ResumePending => Self::ResumePending,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RecoveredPeerResponseTerminalApplyIntent {
#[default]
AppendContextAndRun,
}
impl From<meerkat_core::lifecycle::run_primitive::PeerResponseTerminalApplyIntent>
for RecoveredPeerResponseTerminalApplyIntent
{
fn from(
intent: meerkat_core::lifecycle::run_primitive::PeerResponseTerminalApplyIntent,
) -> Self {
match intent {
meerkat_core::lifecycle::run_primitive::PeerResponseTerminalApplyIntent::AppendContextAndRun => {
Self::AppendContextAndRun
}
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingSwitchTurnPhase {
#[default]
Requested,
PendingForBoundary,
ActiveFiniteOverride,
ApplyingPersistentReconfigure,
Terminal,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingSwitchTurnTerminal {
#[default]
Denied,
ConsumedAndRestored,
PersistentReconfigureApplied,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingDenialReason {
#[default]
CapabilityPolicy,
ApprovalRequiredButUnavailable,
DeniedDuringApproval,
ScopedOverrideConflict,
RealtimeTransportConflict,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingSwitchApprovalReason {
#[default]
CrossProvider,
CostExceedsThreshold,
SafetyHold,
UntilChangedFromModelOrigin,
RealtimeDetachRequired,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingImageApprovalReason {
#[default]
CrossProvider,
CostExceedsThreshold,
SafetyHold,
RealtimeDetachRequired,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingImagePlanDenialReason {
#[default]
UnsupportedTarget,
UnsupportedCount,
CapabilityPolicy,
CostPolicy,
SafetyPolicy,
ApprovalRequiredButUnavailable,
DeniedDuringApproval,
ScopedOverrideConflict,
RealtimeTransportConflict,
ProjectionUnsupported,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingApprovalPhase {
#[default]
Pending,
PresentedToUser,
Approved,
Denied,
SurfaceDetached,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingApprovalParentKind {
#[default]
SwitchTurn,
ImageOperation,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingImageOperationPhase {
#[default]
Requested,
PlanResolved,
ScopedOverrideActive,
ProviderCallInFlight,
ResultCommitted,
RestoringScopedOverride,
Terminal,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingImageTerminal {
#[default]
Generated,
Denied,
EmptyResult,
RefusedByProvider,
SafetyFiltered,
Failed,
Cancelled,
Timeout,
ScopedRestoreFailed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingImageTerminalObservation {
#[default]
Generated,
EmptyResult,
ProviderHttpError,
ProviderNativeError,
ExecutionFailed,
BlobCommitFailed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingImageProviderErrorCode {
#[default]
Unknown,
OpenAiContentFilter,
OpenAiModelRefusal,
GeminiSafety,
GeminiModelRefusal,
GeminiDeadlineExceeded,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum RoutingProviderTextDisposition {
#[default]
NotEmitted,
Captured,
EmittedButNotStored,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum MobPeerOverlayCommandKind {
#[default]
Wire,
Unwire,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorBridgeCommandAdmissionResultKind {
#[default]
Accept,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorBridgeCommandRejectionKind {
#[default]
NotBound,
StaleSupervisor,
SenderMismatch,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorBindAdmissionResultKind {
#[default]
Bootstrap,
IdempotentAck,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorBindRejectionKind {
#[default]
AlreadyBound,
SenderMismatch,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorBindMaterialAdmissionKind {
#[default]
Accept,
AddressMismatch,
SenderMismatch,
InvalidPeerSpec,
InvalidBootstrapToken,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum TranscriptEditAdmissionKind {
#[default]
Admissible,
DeniedBusy,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorAuthorizeAdmissionResultKind {
#[default]
Proceed,
IdempotentAck,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub enum SupervisorAuthorizeRejectionKind {
#[default]
NotBound,
StaleSupervisor,
SenderMismatch,
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct PeerEndpoint {
pub name: PeerName,
pub peer_id: PeerId,
pub address: PeerAddress,
pub signing_key: PeerSigningKey,
}
impl PeerEndpoint {
pub fn new(
name: impl Into<PeerName>,
peer_id: impl Into<PeerId>,
address: impl Into<PeerAddress>,
signing_key: impl Into<PeerSigningKey>,
) -> Self {
Self {
name: name.into(),
peer_id: peer_id.into(),
address: address.into(),
signing_key: signing_key.into(),
}
}
}
impl From<&meerkat_core::comms::TrustedPeerDescriptor> for PeerEndpoint {
fn from(spec: &meerkat_core::comms::TrustedPeerDescriptor) -> Self {
Self {
name: PeerName(spec.name.as_str().to_owned()),
peer_id: PeerId(spec.peer_id.to_string()),
address: PeerAddress(spec.address.to_string()),
signing_key: PeerSigningKey(spec.pubkey),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct PeerSigningKey(pub [u8; 32]);
impl From<[u8; 32]> for PeerSigningKey {
fn from(key: [u8; 32]) -> Self {
Self(key)
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct PeerName(pub String);
impl<T: Into<String>> From<T> for PeerName {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl PeerName {
pub fn as_str(&self) -> &str {
&self.0
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct PeerId(pub String);
impl<T: Into<String>> From<T> for PeerId {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl PeerId {
pub fn as_str(&self) -> &str {
&self.0
}
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct PeerAddress(pub String);
impl<T: Into<String>> From<T> for PeerAddress {
fn from(s: T) -> Self {
Self(s.into())
}
}
impl PeerAddress {
pub fn as_str(&self) -> &str {
&self.0
}
}
meerkat_machine_schema::meerkat_catalog_machine_dsl!("meerkat-runtime", "meerkat_machine::dsl");
pub type MobToolCallerProvenance = meerkat_core::service::MobToolCallerProvenance;
pub type OpaquePrincipalToken = meerkat_core::service::OpaquePrincipalToken;