-record(agent_config, { provider :: fun((list(pig@ai@message:message()), list(pig@ai@tool_definition:tool_definition())) -> {ok, pig@ai@provider:inference_result()} | {error, pig@ai@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()) }).