use bitflags::bitflags;
use serde::{Deserialize, Serialize};
use crate::api::llm::LlmAttributes;
use crate::api::tool::ToolAttributes;
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct ScopeAttributes: u32 {
const PARALLEL = 0b01;
const RELOCATABLE = 0b10;
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ScopeType {
Agent,
Function,
Tool,
Llm,
Retriever,
Embedder,
Reranker,
Guardrail,
Evaluator,
Custom,
Unknown,
}
impl ScopeType {
pub const fn as_str(self) -> &'static str {
match self {
Self::Agent => "agent",
Self::Function => "function",
Self::Tool => "tool",
Self::Llm => "llm",
Self::Retriever => "retriever",
Self::Embedder => "embedder",
Self::Reranker => "reranker",
Self::Guardrail => "guardrail",
Self::Evaluator => "evaluator",
Self::Custom => "custom",
Self::Unknown => "unknown",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum HandleAttributes {
Scope(ScopeAttributes),
Tool(ToolAttributes),
Llm(LlmAttributes),
}