vtcode_desktop_protocol/
composer.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub enum ComposerResourceKind {
9 Skill,
11 Plugin,
13}
14
15#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct ComposerResource {
19 pub name: String,
21 pub description: String,
23 pub kind: ComposerResourceKind,
25}
26
27impl ComposerResource {
28 pub fn is_valid_name(name: &str) -> bool {
30 !name.is_empty()
31 && name.len() <= 128
32 && name.bytes().all(|byte| byte.is_ascii_alphanumeric() || b"-_.".contains(&byte))
33 }
34}