-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).