use beet_core::prelude::*;
#[derive(Debug, Clone)]
pub struct ActorView<'a> {
pub entity: Entity,
pub name: &'a Name,
pub role: ActorRole,
}
impl<'a> ActorView<'a> {
pub fn new(
(entity, name, role): (Entity, &'a Name, &'a ActorRole),
) -> Self {
Self {
entity,
name,
role: *role,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Component, strum::Display)]
pub enum ActorRole {
User,
Developer,
Agent,
}
#[derive(Default, Component)]
#[require(
TokenUsage,
Name = Name::new("Agent"),
ActorRole=ActorRole::Agent
)]
pub struct AgentRole;
#[derive(Component)]
#[require(
Name = Name::new("User"),
ActorRole=ActorRole::User
)]
pub struct UserRole;
#[derive(Component)]
#[require(
Name = Name::new("User"),
ActorRole=ActorRole::Developer
)]
pub struct DeveloperRole;
#[derive(Debug, Default, Component)]
pub struct TokenUsage {
pub input_tokens: u64,
pub output_tokens: u64,
}
pub enum ReasoningEffort {
Min,
Max,
}