Packages
nous
0.12.12
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
lib/nous/agent_dynamic_supervisor.ex
defmodule Nous.AgentDynamicSupervisor do
@moduledoc "DynamicSupervisor for starting and managing AgentServer processes."
use DynamicSupervisor
def start_link(opts) do
DynamicSupervisor.start_link(__MODULE__, opts, name: __MODULE__)
end
@impl true
def init(_opts) do
DynamicSupervisor.init(strategy: :one_for_one)
end
@doc """
Start an AgentServer under this supervisor, registered in AgentRegistry.
## Options
Accepts all options supported by `Nous.AgentServer.start_link/1`.
"""
def start_agent(session_id, agent_config, opts \\ []) do
child_spec =
{Nous.AgentServer,
Keyword.merge(opts,
session_id: session_id,
agent_config: agent_config,
name: Nous.AgentRegistry.via_tuple(session_id)
)}
DynamicSupervisor.start_child(__MODULE__, child_spec)
end
@doc """
Stop an agent by session ID.
"""
def stop_agent(session_id) do
case Nous.AgentRegistry.lookup(session_id) do
{:ok, pid} -> DynamicSupervisor.terminate_child(__MODULE__, pid)
{:error, _} = err -> err
end
end
@doc """
Find an agent process by session ID.
"""
def find_agent(session_id) do
Nous.AgentRegistry.lookup(session_id)
end
end