Skip to main content
Glama
socket.rs2.49 kB
use derive_builder::Builder; use serde::{ Deserialize, Serialize, }; use strum::{ AsRefStr, Display, EnumIter, EnumString, }; use super::{ AttrFuncInputSpec, SpecError, }; #[remain::sorted] #[derive( Debug, Serialize, Deserialize, Clone, PartialEq, Eq, AsRefStr, Display, EnumIter, EnumString, Copy, )] #[serde(rename_all = "camelCase")] pub enum SocketSpecKind { Input, Output, } #[remain::sorted] #[derive( AsRefStr, Clone, Debug, Deserialize, Display, EnumIter, EnumString, Eq, PartialEq, Serialize, Copy, Default, )] #[serde(rename_all = "camelCase")] pub enum SocketSpecArity { #[default] Many, One, } #[derive(Builder, Clone, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] #[builder(build_fn(error = "SpecError"))] pub struct SocketSpecData { #[builder(setter(into, strip_option), default)] pub func_unique_id: Option<String>, #[builder(setter(into))] pub kind: SocketSpecKind, #[builder(setter(into))] pub name: String, #[builder(setter(into), default)] pub connection_annotations: String, #[builder(setter(into), default)] pub arity: SocketSpecArity, #[builder(setter(into), default)] pub ui_hidden: bool, } impl SocketSpecData { pub fn builder() -> SocketSpecDataBuilder { SocketSpecDataBuilder::default() } pub fn anonymize(&mut self) { self.func_unique_id = None; } } #[derive(Builder, Clone, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] #[builder(build_fn(error = "SpecError"))] pub struct SocketSpec { #[builder(setter(into))] pub name: String, #[builder(setter(into, strip_option), default)] #[serde(default)] pub data: Option<SocketSpecData>, #[builder(setter(each(name = "input"), into), default)] pub inputs: Vec<AttrFuncInputSpec>, #[builder(setter(into), default)] #[serde(default)] pub unique_id: Option<String>, } impl SocketSpec { pub fn builder() -> SocketSpecBuilder { SocketSpecBuilder::default() } pub fn kind(&self) -> Option<SocketSpecKind> { self.data.as_ref().map(|data| data.kind) } pub fn anonymize(&mut self) { self.unique_id = None; self.inputs.iter_mut().for_each(|f| f.anonymize()); if let Some(ref mut data) = self.data { data.anonymize(); } } }

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