-record(agent_config, { provider :: fun((list(pig_protocol@message:message()), list(pig_protocol@tool_definition:tool_definition())) -> {ok, pig_protocol@inference:inference_result()} | {error, pig_protocol@error:ai_error()}), tools :: pig@tool:tool_registry(), system_prompt :: gleam@option:option(binary()), max_iterations :: integer(), model :: binary(), agent_id :: gleam@option:option(binary()), agent_name :: gleam@option:option(binary()), agent_description :: gleam@option:option(binary()), agent_version :: gleam@option:option(binary()), provider_name :: gleam@option:option(binary()), session_path :: gleam@option:option(binary()) }).