systemprompt_identifiers/
agent.rs1crate::define_id!(AgentId, generate, schema);
5
6use crate::error::IdValidationError;
7
8#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, schemars::JsonSchema)]
9#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
10#[cfg_attr(feature = "sqlx", sqlx(transparent))]
11#[serde(transparent)]
12pub struct AgentName(String);
13
14impl AgentName {
15 pub fn try_new(name: impl Into<String>) -> Result<Self, IdValidationError> {
16 let name = name.into();
17 if name.is_empty() {
18 return Err(IdValidationError::empty("AgentName"));
19 }
20 if name.eq_ignore_ascii_case("unknown") {
21 return Err(IdValidationError::invalid(
22 "AgentName",
23 "'unknown' is reserved for error detection",
24 ));
25 }
26 Ok(Self(name))
27 }
28
29 #[allow(clippy::expect_used)]
30 pub fn new(name: impl Into<String>) -> Self {
31 Self::try_new(name).expect("AgentName validation failed")
32 }
33
34 pub fn as_str(&self) -> &str {
35 &self.0
36 }
37
38 pub fn system() -> Self {
39 Self("system".to_string())
40 }
41}
42
43crate::__define_id_validated_conversions!(AgentName);
44crate::__define_id_common!(AgentName);