<.header> {@page_title} <:subtitle>Agent Details and Health <:actions> <.link navigate={~p"/orgs/#{@current_organization.slug}/agents"} class="text-sm font-semibold text-zinc-700 dark:text-zinc-300 hover:text-zinc-900 dark:hover:text-zinc-100" > <.icon name="hero-arrow-left" class="h-5 w-5" /> Back to Agents

Status

<% {status, label} = agent_status(@agent_token) %>
{label}
<.icon name="hero-signal" class="h-8 w-8 text-zinc-400 dark:text-zinc-600" />

Equipment

{length(@polling_targets)}

{@direct_assignments} direct

<.icon name="hero-server" class="h-8 w-8 text-zinc-400 dark:text-zinc-600" />

Last Seen

{format_last_seen(@agent_token.last_seen_at)}

<%= if @agent_token.last_seen_at do %>

{format_datetime(@agent_token.last_seen_at)}

<% end %> <%= if @agent_token.last_ip do %>

{@agent_token.last_ip}

<% end %>
<.icon name="hero-clock" class="h-8 w-8 text-zinc-400 dark:text-zinc-600 flex-shrink-0" />

Agent Info

<%= if @agent_token.metadata["version"] do %>

v{@agent_token.metadata["version"]}

<% else %>

Unknown

<% end %> <%= if @agent_token.metadata["uptime_seconds"] do %>

Uptime: {format_uptime(@agent_token.metadata["uptime_seconds"])}

<% end %>
<.icon name="hero-information-circle" class="h-8 w-8 text-zinc-400 dark:text-zinc-600" />
<%= if @agent_token.metadata && map_size(@agent_token.metadata) > 0 do %>

Agent Metadata

<%= if @agent_token.metadata["hostname"] do %>
Hostname
{@agent_token.metadata["hostname"]}
<% end %> <%= if @agent_token.metadata["version"] do %>
Version
{@agent_token.metadata["version"]}
<% end %> <%= if @agent_token.metadata["uptime_seconds"] do %>
Uptime
{format_uptime(@agent_token.metadata["uptime_seconds"])}
<% end %>
<% end %>

Timestamps

Created
{format_datetime(@agent_token.inserted_at)}
{format_last_seen(@agent_token.inserted_at)} (created)
Last Updated
{format_datetime(@agent_token.updated_at)}
{format_last_seen(@agent_token.updated_at)}
Last Seen (Heartbeat)
{format_datetime(@agent_token.last_seen_at)}
<%= if @agent_token.last_seen_at do %>
{format_last_seen(@agent_token.last_seen_at)}
<% end %>
<%= if @agent_token.last_ip do %>
Last IP Address
{@agent_token.last_ip}
<% end %>

Polling Targets

Equipment that this agent is responsible for polling

<%= if @polling_targets == [] do %>
<.icon name="hero-server" class="mx-auto h-12 w-12 text-zinc-400 dark:text-zinc-600" />

No equipment assigned

This agent is not currently polling any equipment.

<% else %>
<%= for equipment <- @polling_targets do %> <.link navigate={~p"/orgs/#{@current_organization.slug}/equipment/#{equipment.id}"} class="block hover:bg-zinc-50 dark:hover:bg-zinc-800 transition-colors" >

{equipment.name}

<% {source, source_label} = assignment_source(equipment, @agent_token.id) %> {source_label}
<.icon name="hero-globe-alt" class="h-4 w-4" /> {equipment.ip_address} <%= if equipment.site do %> <.icon name="hero-building-office" class="h-4 w-4" /> {equipment.site.name} <% end %>
<.icon name="hero-chevron-right" class="h-5 w-5 text-zinc-400 dark:text-zinc-600" />
<% end %>
<% end %>