Skip to main content

src/erlang_adk.erl

-module(erlang_adk).

-export([spawn_agent/3, prompt/2, delegate/2, delegate/3, sequential/2, parallel/2, loop/4]).

%% @doc Spawn a new agent.
spawn_agent(Name, LLMConfig, Tools) ->
    adk_agent_sup:start_agent(Name, LLMConfig, Tools).

%% @doc Synchronously prompt an agent.
prompt(AgentPid, Message) ->
    adk_agent:prompt(AgentPid, Message).

%% @doc Asynchronously delegate a task to an agent (fire and forget).
delegate(Pid, Message) ->
    adk_agent:delegate(Pid, Message).

%% @doc Asynchronously delegate a task to an agent and receive a message when done.
delegate(Pid, Message, ReplyToPid) ->
    adk_agent:delegate(Pid, Message, ReplyToPid).

%% Orchestrators
sequential(Pids, Prompt) ->
    erlang_adk_orchestrator:sequential(Pids, Prompt).

parallel(Pids, Prompt) ->
    erlang_adk_orchestrator:parallel(Pids, Prompt).

loop(WorkerPid, ReviewerPid, Prompt, MaxIterations) ->
    erlang_adk_orchestrator:loop(WorkerPid, ReviewerPid, Prompt, MaxIterations).