Packages
claude_gleam
1.0.0
Gleam SDK for the Anthropic Claude API with agentic tool-use loop and BEAM concurrency
Current section
Files
Jump to
Current section
Files
src/claude@agent@config.erl
-module(claude@agent@config).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/claude/agent/config.gleam").
-export([new/2, with_system/2, with_max_iterations/2, with_model/2, with_thinking/2, with_tool_timeout/2, with_max_tokens/2, with_tool_choice/2]).
-export_type([agent_config/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type agent_config() :: {agent_config,
claude@client:config(),
binary(),
integer(),
gleam@option:option(binary()),
claude@types@tool:registry(),
gleam@option:option(claude@types@tool:tool_choice()),
gleam@option:option(integer()),
integer(),
integer()}.
-file("src/claude/agent/config.gleam", 27).
?DOC(
" Create a new AgentConfig with sensible defaults.\n"
"\n"
" Defaults:\n"
" - model: config.default_model\n"
" - max_tokens: config.default_max_tokens\n"
" - max_iterations: 10\n"
" - tool_timeout_ms: 30_000 (30 seconds)\n"
).
-spec new(claude@client:config(), claude@types@tool:registry()) -> agent_config().
new(Client, Tools) ->
{agent_config,
Client,
erlang:element(4, Client),
erlang:element(5, Client),
none,
Tools,
none,
none,
10,
30000}.
-file("src/claude/agent/config.gleam", 45).
?DOC(" Set the system prompt.\n").
-spec with_system(agent_config(), binary()) -> agent_config().
with_system(Config, System) ->
{agent_config,
erlang:element(2, Config),
erlang:element(3, Config),
erlang:element(4, Config),
{some, System},
erlang:element(6, Config),
erlang:element(7, Config),
erlang:element(8, Config),
erlang:element(9, Config),
erlang:element(10, Config)}.
-file("src/claude/agent/config.gleam", 50).
?DOC(" Set the maximum number of agent loop iterations.\n").
-spec with_max_iterations(agent_config(), integer()) -> agent_config().
with_max_iterations(Config, Max) ->
{agent_config,
erlang:element(2, Config),
erlang:element(3, Config),
erlang:element(4, Config),
erlang:element(5, Config),
erlang:element(6, Config),
erlang:element(7, Config),
erlang:element(8, Config),
Max,
erlang:element(10, Config)}.
-file("src/claude/agent/config.gleam", 55).
?DOC(" Set the model to use.\n").
-spec with_model(agent_config(), binary()) -> agent_config().
with_model(Config, Model) ->
{agent_config,
erlang:element(2, Config),
Model,
erlang:element(4, Config),
erlang:element(5, Config),
erlang:element(6, Config),
erlang:element(7, Config),
erlang:element(8, Config),
erlang:element(9, Config),
erlang:element(10, Config)}.
-file("src/claude/agent/config.gleam", 60).
?DOC(" Enable extended thinking with a budget (in tokens).\n").
-spec with_thinking(agent_config(), integer()) -> agent_config().
with_thinking(Config, Budget) ->
{agent_config,
erlang:element(2, Config),
erlang:element(3, Config),
erlang:element(4, Config),
erlang:element(5, Config),
erlang:element(6, Config),
erlang:element(7, Config),
{some, Budget},
erlang:element(9, Config),
erlang:element(10, Config)}.
-file("src/claude/agent/config.gleam", 65).
?DOC(" Set the per-tool execution timeout in milliseconds.\n").
-spec with_tool_timeout(agent_config(), integer()) -> agent_config().
with_tool_timeout(Config, Timeout_ms) ->
{agent_config,
erlang:element(2, Config),
erlang:element(3, Config),
erlang:element(4, Config),
erlang:element(5, Config),
erlang:element(6, Config),
erlang:element(7, Config),
erlang:element(8, Config),
erlang:element(9, Config),
Timeout_ms}.
-file("src/claude/agent/config.gleam", 70).
?DOC(" Set the max tokens for API calls.\n").
-spec with_max_tokens(agent_config(), integer()) -> agent_config().
with_max_tokens(Config, Max_tokens) ->
{agent_config,
erlang:element(2, Config),
erlang:element(3, Config),
Max_tokens,
erlang:element(5, Config),
erlang:element(6, Config),
erlang:element(7, Config),
erlang:element(8, Config),
erlang:element(9, Config),
erlang:element(10, Config)}.
-file("src/claude/agent/config.gleam", 75).
?DOC(" Set the tool choice strategy.\n").
-spec with_tool_choice(agent_config(), claude@types@tool:tool_choice()) -> agent_config().
with_tool_choice(Config, Choice) ->
{agent_config,
erlang:element(2, Config),
erlang:element(3, Config),
erlang:element(4, Config),
erlang:element(5, Config),
erlang:element(6, Config),
{some, Choice},
erlang:element(8, Config),
erlang:element(9, Config),
erlang:element(10, Config)}.