Skip to main content
Glama
kind.rs4.05 kB
use serde::{ Deserialize, Serialize, }; use si_events::FuncKind as EventFuncKind; use strum::{ AsRefStr, Display, }; use telemetry::prelude::warn; use crate::{ FuncBackendKind, FuncBackendResponseType, func::FuncResult, }; /// Describes the kind of [`Func`](crate::Func). /// This type is postcard serialized, so cannot be "remain::sorted". New enum /// variants must go at the end #[derive(AsRefStr, Deserialize, Display, Serialize, Debug, Eq, PartialEq, Clone, Copy, Hash)] pub enum FuncKind { Action, Attribute, Authentication, CodeGeneration, Intrinsic, Qualification, SchemaVariantDefinition, Unknown, Management, Debug, } impl From<EventFuncKind> for FuncKind { fn from(value: EventFuncKind) -> Self { match value { EventFuncKind::Action => FuncKind::Action, EventFuncKind::Attribute => FuncKind::Attribute, EventFuncKind::Authentication => FuncKind::Authentication, EventFuncKind::CodeGeneration => FuncKind::CodeGeneration, EventFuncKind::Intrinsic => FuncKind::Intrinsic, EventFuncKind::Qualification => FuncKind::Qualification, EventFuncKind::SchemaVariantDefinition => FuncKind::SchemaVariantDefinition, EventFuncKind::Unknown => FuncKind::Unknown, EventFuncKind::Management => FuncKind::Management, EventFuncKind::Debug => FuncKind::Debug, } } } impl From<FuncKind> for si_events::FuncKind { fn from(value: FuncKind) -> Self { match value { FuncKind::Action => EventFuncKind::Action, FuncKind::Attribute => EventFuncKind::Attribute, FuncKind::Authentication => EventFuncKind::Authentication, FuncKind::CodeGeneration => EventFuncKind::CodeGeneration, FuncKind::Intrinsic => EventFuncKind::Intrinsic, FuncKind::Qualification => EventFuncKind::Qualification, FuncKind::SchemaVariantDefinition => EventFuncKind::SchemaVariantDefinition, FuncKind::Unknown => EventFuncKind::Unknown, FuncKind::Management => EventFuncKind::Management, FuncKind::Debug => EventFuncKind::Debug, } } } impl FuncKind { pub fn new( func_backend_kind: FuncBackendKind, func_backend_response_type: FuncBackendResponseType, ) -> FuncResult<FuncKind> { Ok(match func_backend_kind { FuncBackendKind::JsAttribute => match func_backend_response_type { FuncBackendResponseType::CodeGeneration => FuncKind::CodeGeneration, FuncBackendResponseType::Qualification => FuncKind::Qualification, _ => FuncKind::Attribute, }, FuncBackendKind::JsAction => FuncKind::Action, FuncBackendKind::JsAuthentication => FuncKind::Authentication, FuncBackendKind::JsSchemaVariantDefinition => FuncKind::SchemaVariantDefinition, FuncBackendKind::Management => FuncKind::Management, FuncBackendKind::Debug => FuncKind::Debug, FuncBackendKind::Array | FuncBackendKind::Json | FuncBackendKind::Boolean | FuncBackendKind::Diff | FuncBackendKind::Identity | FuncBackendKind::Float | FuncBackendKind::Integer | FuncBackendKind::Map | FuncBackendKind::NormalizeToArray | FuncBackendKind::Object | FuncBackendKind::ResourcePayloadToValue | FuncBackendKind::String | FuncBackendKind::Unset | FuncBackendKind::Validation => FuncKind::Intrinsic, FuncBackendKind::JsReconciliation | FuncBackendKind::JsValidation => { warn!( %func_backend_kind, %func_backend_response_type, "found deprecated or unknown func backend kind, marking as unknown" ); FuncKind::Unknown } }) } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server