use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ComposerResourceKind {
Skill,
Plugin,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ComposerResource {
pub name: String,
pub description: String,
pub kind: ComposerResourceKind,
}
impl ComposerResource {
pub fn is_valid_name(name: &str) -> bool {
!name.is_empty()
&& name.len() <= 128
&& name.bytes().all(|byte| byte.is_ascii_alphanumeric() || b"-_.".contains(&byte))
}
}