Skip to main content

src/erlang_adk_app.erl

%%%-------------------------------------------------------------------
%% @doc erlang_adk public API
%% @end
%%%-------------------------------------------------------------------

-module(erlang_adk_app).

-behaviour(application).

-export([start/2, stop/1]).

start(_StartType, _StartArgs) ->
    erlang_adk_session:init(),
    erlang_adk_session_mnesia:init(),
    
    %% Start Cowboy A2A listener
    Dispatch = cowboy_router:compile([
        {'_', [
            {"/a2a/prompt", erlang_adk_a2a_handler, []}
        ]}
    ]),
    case cowboy:start_clear(http,
        [{port, 8080}],
        #{env => #{dispatch => Dispatch}}
    ) of
        {ok, _} -> ok;
        {error, {already_started, _}} -> ok;
        {error, eaddrinuse} -> ok
    end,
    
    erlang_adk_sup:start_link().

stop(_State) ->
    cowboy:stop_listener(http),
    ok.

%% internal functions