-module(glean@message). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/glean/message.gleam"). -export([system/1, user/1, user_parts/1, assistant/1, tool_results/1]). -export_type([message/0, user_content/0, assistant_content/0, tool_result/0, file_data/0]). -type message() :: {system_message, binary()} | {user_message, list(user_content())} | {assistant_message, list(assistant_content())} | {tool_result_message, list(tool_result())}. -type user_content() :: {user_text, binary()} | {user_file, file_data(), binary()}. -type assistant_content() :: {assistant_text, binary()} | {assistant_reasoning, binary()} | {assistant_tool_call, binary(), binary(), binary()}. -type tool_result() :: {tool_result_ok, binary(), binary(), binary()} | {tool_result_error, binary(), binary(), binary()}. -type file_data() :: {base64_data, binary()} | {url_data, binary()}. -file("src/glean/message.gleam", 42). -spec system(binary()) -> message(). system(Content) -> {system_message, Content}. -file("src/glean/message.gleam", 46). -spec user(binary()) -> message(). user(Text) -> {user_message, [{user_text, Text}]}. -file("src/glean/message.gleam", 50). -spec user_parts(list(user_content())) -> message(). user_parts(Content) -> {user_message, Content}. -file("src/glean/message.gleam", 54). -spec assistant(binary()) -> message(). assistant(Text) -> {assistant_message, [{assistant_text, Text}]}. -file("src/glean/message.gleam", 58). -spec tool_results(list(tool_result())) -> message(). tool_results(Results) -> case not begin _pipe = Results, gleam@list:is_empty(_pipe) end of true -> nil; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"glean/message"/utf8>>, function => <<"tool_results"/utf8>>, line => 59, value => _assert_fail, start => 1319, 'end' => 1376, pattern_start => 1330, pattern_end => 1334}) end, {tool_result_message, Results}.