-module(glean@agent). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/glean/agent.gleam"). -export([new/1, system/2, tools/2, settings/2, tool_choice/2, max_steps/2, from/1]). -export_type([agent/1]). -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(IVK) :: {agent, glean@provider:provider(), list(binary()), glean@tool:toolset(IVK), glean@provider:model_settings(), glean@provider:tool_choice(), integer()}. -file("src/glean/agent.gleam", 29). ?DOC( " Create a new agent with the given provider.\n" " All other fields get sensible defaults.\n" ). -spec new(glean@provider:provider()) -> agent(any()). new(Provider) -> {agent, Provider, [], glean@tool:empty_toolset(), glean@provider:default_settings(), auto, 10}. -file("src/glean/agent.gleam", 41). ?DOC(" Add a system prompt to the agent.\n"). -spec system(agent(IVN), binary()) -> agent(IVN). system(Agent, Prompt) -> case Prompt /= <<""/utf8>> of true -> nil; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"glean/agent"/utf8>>, function => <<"system"/utf8>>, line => 42, value => _assert_fail, start => 1278, 'end' => 1308, pattern_start => 1289, pattern_end => 1293}) end, {agent, erlang:element(2, Agent), lists:append(erlang:element(3, Agent), [Prompt]), erlang:element(4, Agent), erlang:element(5, Agent), erlang:element(6, Agent), erlang:element(7, Agent)}. -file("src/glean/agent.gleam", 47). ?DOC(" Set the tools available to this agent.\n"). -spec tools(agent(IVQ), glean@tool:toolset(IVQ)) -> agent(IVQ). tools(Agent, Tools) -> {agent, erlang:element(2, Agent), erlang:element(3, Agent), Tools, erlang:element(5, Agent), erlang:element(6, Agent), erlang:element(7, Agent)}. -file("src/glean/agent.gleam", 52). ?DOC(" Set model settings.\n"). -spec settings(agent(IVU), glean@provider:model_settings()) -> agent(IVU). settings(Agent, Settings) -> {agent, erlang:element(2, Agent), erlang:element(3, Agent), erlang:element(4, Agent), Settings, erlang:element(6, Agent), erlang:element(7, Agent)}. -file("src/glean/agent.gleam", 60). ?DOC(" Set the tool choice strategy.\n"). -spec tool_choice(agent(IVX), glean@provider:tool_choice()) -> agent(IVX). tool_choice(Agent, Choice) -> {agent, erlang:element(2, Agent), erlang:element(3, Agent), erlang:element(4, Agent), erlang:element(5, Agent), Choice, erlang:element(7, Agent)}. -file("src/glean/agent.gleam", 65). ?DOC(" Set the maximum number of agent loop steps.\n"). -spec max_steps(agent(IWA), integer()) -> agent(IWA). max_steps(Agent, Max) -> case Max > 0 of true -> nil; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"glean/agent"/utf8>>, function => <<"max_steps"/utf8>>, line => 66, value => _assert_fail, start => 1953, 'end' => 1978, pattern_start => 1964, pattern_end => 1968}) end, {agent, erlang:element(2, Agent), erlang:element(3, Agent), erlang:element(4, Agent), erlang:element(5, Agent), erlang:element(6, Agent), Max}. -file("src/glean/agent.gleam", 72). ?DOC( " Create an agent from a type-safe Model.\n" " The Model carries both the provider and validated settings.\n" ). -spec from(glean@model:model()) -> agent(any()). from(Model) -> {agent, erlang:element(2, Model), [], glean@tool:empty_toolset(), erlang:element(3, Model), auto, 10}.