dotfiles/app/lib/prymn/agents.ex
Nikos Papadakis 59945bd2de
terminal
2024-02-02 20:53:52 +02:00

38 lines
1 KiB
Elixir

defmodule Prymn.Agents do
alias Prymn.Messaging
alias Prymn.Agents
def from_server(%Prymn.Servers.Server{} = server) do
agent_id = to_string(server.id)
Phoenix.PubSub.subscribe(Prymn.PubSub, "agent:#{agent_id}")
Agents.Store.get_or_default(agent_id)
end
def from_servers(servers) when is_list(servers) do
Enum.reduce(servers, [], fn server, acc ->
[{server.id, from_server(server)} | acc]
end)
|> Map.new()
end
def update_health(agent_id, health) when is_binary(agent_id) do
agent = Agents.Store.update_health(agent_id, health)
Phoenix.PubSub.broadcast!(Prymn.PubSub, "agent:#{agent_id}", agent)
end
def open_terminal(%Agents.Agent{id: id}) do
Messaging.open_terminal(id)
end
def close_terminal(%Agents.Agent{id: id}) do
Messaging.close_terminal(id)
end
def resize_terminal(%Agents.Agent{id: id}, rows, cols) do
Messaging.resize_terminal(id, rows, cols)
end
def send_terminal_input(%Agents.Agent{id: id}, input) do
Messaging.send_terminal_input(id, input)
end
end