59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
|
|
namespace ControlCenter.Api.Entities;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Represents an agent's current state in the Control Center.
|
|||
|
|
/// Each row tracks one agent session's status, task, and activity.
|
|||
|
|
/// </summary>
|
|||
|
|
public class Agent
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Primary key — UUID generated on insert.
|
|||
|
|
/// </summary>
|
|||
|
|
public Guid Id { get; set; }
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Current operational status of the agent.
|
|||
|
|
/// Stored as an enum in PostgreSQL via Npgsql.
|
|||
|
|
/// </summary>
|
|||
|
|
public AgentStatus Status { get; set; } = AgentStatus.Idle;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Description of the agent's current task, if any.
|
|||
|
|
/// Nullable — not all agents have an active task.
|
|||
|
|
/// </summary>
|
|||
|
|
public string? Task { get; set; }
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Task progress percentage (0–100).
|
|||
|
|
/// Nullable — progress is only meaningful when an agent has a trackable task.
|
|||
|
|
/// </summary>
|
|||
|
|
public int? Progress { get; set; }
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Full session key, e.g. "agent:otto:telegram:direct:8787451565".
|
|||
|
|
/// Not null — every agent row must be associated with a session.
|
|||
|
|
/// </summary>
|
|||
|
|
public string SessionKey { get; set; } = string.Empty;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Communication channel the agent is operating on, e.g. "telegram", "discord", "slack".
|
|||
|
|
/// Not null — every agent session operates on exactly one channel.
|
|||
|
|
/// </summary>
|
|||
|
|
public string Channel { get; set; } = string.Empty;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Timestamp of the agent's last activity.
|
|||
|
|
/// Default: current UTC timestamp on insert.
|
|||
|
|
/// </summary>
|
|||
|
|
public DateTime LastActivity { get; set; } = DateTime.UtcNow;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Row creation timestamp. Set automatically on insert.
|
|||
|
|
/// </summary>
|
|||
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Row last-update timestamp. Updated automatically on any modification.
|
|||
|
|
/// </summary>
|
|||
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|||
|
|
}
|