Skip to content

brokkr-models::models::agent_annotations

Rust

Agent Annotation Module

This module defines structures and methods for managing agent annotations in the system.

Data Model

Agent annotations are key-value pairs associated with agents. They are stored in the agent_annotations table with the following structure:

  • id: UUID, primary key
  • agent_id: UUID, foreign key referencing the agents table
  • key: VARCHAR(255), the annotation key
  • value: TEXT, the annotation value

Usage

Agent annotations can be used to add metadata to agents. This metadata can be used for filtering, grouping, or providing additional information about the agent that doesn’t fit into the main agent structure.

Constraints

  • The agent_id must be a valid, non-nil UUID.
  • Both key and value must be non-empty strings.
  • key and value must not exceed 64 characters.
  • Neither key nor value can contain whitespace.

pub

Derives: Queryable, Selectable, Identifiable, AsChangeset, Debug, Clone, Serialize, Deserialize, Eq, PartialEq, Hash, ToSchema

Represents an agent annotation in the database.

Name Type Description
id Uuid Unique identifier for the annotation.
agent_id Uuid ID of the agent this annotation belongs to.
key String Key of the annotation (max 64 characters, no whitespace).
value String Value of the annotation (max 64 characters, no whitespace).

pub

Derives: Insertable, Debug, Clone, Serialize, Deserialize, ToSchema

Represents a new agent annotation to be inserted into the database.

Name Type Description
agent_id Uuid ID of the agent this annotation belongs to.
key String Key of the annotation (max 64 characters, no whitespace).
value String Value of the annotation (max 64 characters, no whitespace).

pub

fn new(
agent_id: Uuid,
key: String,
value: String,
) -> Result<Self, String>

Creates a new NewAgentAnnotation instance.

Parameters:

Name Type Description
agent_id Uuid UUID of the agent to associate the annotation with.
key String The key for the annotation. Must be non-empty, max 64 characters, and contain no whitespace.
value String The value for the annotation. Must be non-empty, max 64 characters, and contain no whitespace.

Returns:

Returns Ok(NewAgentAnnotation) if all parameters are valid, otherwise returns an Err with a description of the validation failure.

Source
pub fn new(agent_id: Uuid, key: String, value: String) -> Result<Self, String> {
// Validate agent_id
if agent_id.is_nil() {
return Err("Invalid agent ID".to_string());
}
// Validate key
if key.is_empty() {
return Err("Key cannot be empty".to_string());
}
if key.len() > 64 {
return Err("Key cannot exceed 64 characters".to_string());
}
if key.contains(char::is_whitespace) {
return Err("Key cannot contain whitespace".to_string());
}
// Validate value
if value.is_empty() {
return Err("Value cannot be empty".to_string());
}
if value.len() > 64 {
return Err("Value cannot exceed 64 characters".to_string());
}
if value.contains(char::is_whitespace) {
return Err("Value cannot contain whitespace".to_string());
}
Ok(NewAgentAnnotation {
agent_id,
key,
value,
})
}