ex_llm

Build log

nerves_system_trellis

ex_llm 0.8.1 · fail · run ex_llm-0.8.1-1790910398703
1858 of 1858 lines
1Resolving Hex dependencies...2Resolution completed in 0.219s3Unchanged:4  axon 0.8.15  bumblebee 0.7.16  castore 1.0.217  circular_buffer 1.1.08  complex 0.7.09  cowlib 2.20.0 VULNERABLE!10    EEF-CVE-2026-43966 (MEDIUM)11    aka: CVE-2026-43966, GHSA-w4f7-4cxr-rv3c12    HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/213    https://osv.dev/vulnerability/EEF-CVE-2026-439661415    EEF-CVE-2026-43969 (LOW)16    aka: CVE-2026-43969, GHSA-g2wm-735q-3f5617    Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/118    https://osv.dev/vulnerability/EEF-CVE-2026-4396919  decimal 3.1.120  ecto 3.14.221  elixir_make 0.10.022  ex_llm 0.8.123  finch 0.22.024  gun 2.6.0 VULNERABLE!25    GHSA-w4f7-4cxr-rv3c (MEDIUM)26    aka: CVE-2026-43966, EEF-CVE-2026-4396627    cowboy and gun affected by an HTTP Request/Response Splitting vulnerability28    https://osv.dev/vulnerability/GHSA-w4f7-4cxr-rv3c29  hpax 1.1.030  instructor 0.1.031  interactive_cmd 0.1.432  jason 1.4.533  jaxon 2.0.834  mime 2.0.735  mint 1.11.036  nerves 1.15.037  nerves_discovery 0.1.538  nerves_logging 0.2.439  nerves_runtime 0.13.1340  nerves_system_br 1.34.441  nerves_system_mangopi_mq_pro 0.17.242  nerves_system_rpi4 2.1.243  nerves_system_trellis 0.5.044  nerves_system_x86_64 1.34.245  nerves_toolchain_aarch64_nerves_linux_gnu 15.3.146  nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.147  nerves_toolchain_riscv64_nerves_linux_gnu 15.3.148  nerves_toolchain_x86_64_nerves_linux_musl 15.3.149  nerves_uevent 0.1.750  nimble_options 1.1.151  nimble_pool 1.1.052  nx 0.13.153  nx_image 0.1.254  nx_signal 0.2.055  polaris 0.2.056  property_table 0.3.457  req 0.5.18 VULNERABLE!58    EEF-CVE-2026-49755 (HIGH)59    aka: CVE-2026-49755, GHSA-655f-mp8p-96gv60    Decompression bomb DoS in Req via auto-decoded archive and compressed response bodies61    https://osv.dev/vulnerability/EEF-CVE-2026-497556263    EEF-CVE-2026-49756 (LOW)64    aka: CVE-2026-49756, GHSA-px9f-whj3-246m65    Multipart form-data header injection in Req via unescaped name/filename/content_type66    https://osv.dev/vulnerability/EEF-CVE-2026-4975667  ring_logger 0.11.768  rustler_precompiled 0.10.069  safetensors 0.1.370  shoehorn 0.9.371  tablet 0.3.372  telemetry 1.4.273  tokenizers 0.5.174  toolshed 0.5.075  uboot_env 1.0.276  unpickler 0.1.077  unzip 0.13.078  yamerl 0.10.079  yaml_elixir 2.12.280* Getting ex_llm (Hex package)81* Getting nerves (Hex package)82* Getting shoehorn (Hex package)83* Getting ring_logger (Hex package)84* Getting toolshed (Hex package)85* Getting nerves_runtime (Hex package)86* Getting nerves_system_mangopi_mq_pro (Hex package)87* Getting nerves_system_rpi4 (Hex package)88* Getting nerves_system_trellis (Hex package)89* Getting nerves_system_x86_64 (Hex package)90* Getting nerves_system_br (Hex package)91* Getting nerves_toolchain_x86_64_nerves_linux_musl (Hex package)92* Getting nerves_toolchain_armv7_nerves_linux_gnueabihf (Hex package)93* Getting nerves_toolchain_aarch64_nerves_linux_gnu (Hex package)94* Getting nerves_toolchain_riscv64_nerves_linux_gnu (Hex package)95* Getting nerves_logging (Hex package)96* Getting nerves_uevent (Hex package)97* Getting uboot_env (Hex package)98* Getting elixir_make (Hex package)99* Getting property_table (Hex package)100* Getting circular_buffer (Hex package)101* Getting interactive_cmd (Hex package)102* Getting jason (Hex package)103* Getting nerves_discovery (Hex package)104* Getting tablet (Hex package)105* Getting bumblebee (Hex package)106* Getting gun (Hex package)107* Getting instructor (Hex package)108* Getting nx (Hex package)109* Getting req (Hex package)110* Getting yaml_elixir (Hex package)111* Getting yamerl (Hex package)112* Getting finch (Hex package)113* Getting mime (Hex package)114* Getting mint (Hex package)115* Getting nimble_options (Hex package)116* Getting nimble_pool (Hex package)117* Getting telemetry (Hex package)118* Getting hpax (Hex package)119* Getting complex (Hex package)120* Getting ecto (Hex package)121* Getting jaxon (Hex package)122* Getting decimal (Hex package)123* Getting cowlib (Hex package)124* Getting axon (Hex package)125* Getting nx_image (Hex package)126* Getting nx_signal (Hex package)127* Getting safetensors (Hex package)128* Getting tokenizers (Hex package)129* Getting unpickler (Hex package)130* Getting unzip (Hex package)131* Getting castore (Hex package)132* Getting rustler_precompiled (Hex package)133* Getting polaris (Hex package)134Found packages with security advisories, see above for details135You have added/upgraded packages you could sponsor, run `mix hex.sponsor` to learn more136==> tablet137Compiling 2 files (.ex)138Generated tablet app139==> elixir_make140Compiling 8 files (.ex)141Generated elixir_make app142==> nerves_discovery143Compiling 5 files (.ex)144Generated nerves_discovery app145==> decimal146Compiling 4 files (.ex)147Generated decimal app148==> jason149Compiling 10 files (.ex)150Generated jason app151==> interactive_cmd152Compiling 1 file (.ex)153Generated interactive_cmd app154==> nerves155HOST_CC port.o156HOST_LD port157Compiling 55 files (.ex)158Generated nerves app159==> nerves_compatibility_test160161Nerves environment162  MIX_TARGET:   trellis163  MIX_ENV:      prod164165Checking for prebuilt Nerves artifacts...166  Found nerves_toolchain_armv7_nerves_linux_gnueabihf in cache167    /home/nerves/.nerves/artifacts/nerves_toolchain_armv7_nerves_linux_gnueabihf-linux_x86_64-15.3.1168  Found nerves_system_trellis in cache169    /home/nerves/.nerves/artifacts/nerves_system_trellis-portable-0.5.0170==> tablet171Compiling 2 files (.ex)172Generated tablet app173==> elixir_make174Compiling 8 files (.ex)175Generated elixir_make app176==> nerves_discovery177Compiling 5 files (.ex)178Generated nerves_discovery app179==> decimal180Compiling 4 files (.ex)181Generated decimal app182==> jason183Compiling 10 files (.ex)184Generated jason app185==> interactive_cmd186Compiling 1 file (.ex)187Generated interactive_cmd app188==> nerves189HOST_CC port.o190HOST_LD port191Compiling 55 files (.ex)192Generated nerves app193==> nerves_system_br194Generated nerves_system_br app195==> nerves_toolchain_armv7_nerves_linux_gnueabihf196Compiling 1 file (.ex)197Generated nerves_toolchain_armv7_nerves_linux_gnueabihf app198==> nerves_system_trellis199Generated nerves_system_trellis app200==> nerves_compatibility_test201202Nerves environment203  MIX_TARGET:   trellis204  MIX_ENV:      prod205206==> mime207Compiling 1 file (.ex)208Generated mime app209==> circular_buffer210Compiling 1 file (.ex)211Generated circular_buffer app212==> nimble_options213Compiling 3 files (.ex)214Generated nimble_options app215==> hpax216Compiling 4 files (.ex)217Generated hpax app218==> nerves_compatibility_test219===> Analyzing applications...220===> Compiling yamerl221/work/proj/deps_trellis/yamerl/src/yamerl_node_binary.erl:65:9: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.222Compile directive 'nowarn_deprecated_catch' can be used to suppress223warnings in selected modules.224%   65|    case catch base64:decode(Text) of225%     |         ^226227/work/proj/deps_trellis/yamerl/src/yamerl_node_binary.erl:72:9: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.228Compile directive 'nowarn_deprecated_catch' can be used to suppress229warnings in selected modules.230%   72|    case catch base64:decode(Text) of231%     |         ^232233    ┌─ src/yamerl_node_binary.erl:234    │235 65 │     case catch base64:decode(Text) of236    │          ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.237Compile directive 'nowarn_deprecated_catch' can be used to suppress238warnings in selected modules.239240    ┌─ src/yamerl_node_binary.erl:241    │242 72 │     case catch base64:decode(Text) of243    │          ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.244Compile directive 'nowarn_deprecated_catch' can be used to suppress245warnings in selected modules.246247248/work/proj/deps_trellis/yamerl/src/yamerl_constr.erl:801:5: Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.249Compile directive 'nowarn_deprecated_catch' can be used to suppress250warnings in selected modules.251%  801|     catch Mod:module_info(),252%     |     ^253254     ┌─ src/yamerl_constr.erl:255     │256 801 │      catch Mod:module_info(),257     │      ╰── Warning: 'catch ...' is deprecated; please use 'try ... catch ... end' instead.258Compile directive 'nowarn_deprecated_catch' can be used to suppress259warnings in selected modules.260261262==> unpickler263Compiling 3 files (.ex)264     warning: the variable "prefix_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator265     │266 275 │     <<string::binary-size(prefix_size), ?L>> = string267     │                           ~268     │269     └─ lib/unpickler.ex:275:27: Unpickler.load_op/3270271     warning: the variable "content_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator272     │273 306 │         <<q, string::binary-size(content_size), q>> when q in [?', ?"] ->274     │                                  ~275     │276     └─ lib/unpickler.ex:306:34: Unpickler.load_op/3277278Generated unpickler app279==> complex280Compiling 2 files (.ex)281     warning: the following clause is redundant:282283         def divide(n, b) when is_number(n) and (b === :infinity or b === :neg_infinity)284285     it has type:286287         dynamic(float() or integer()), dynamic(:infinity or :neg_infinity)288289     previous clauses have already matched on the following types:290291         :infinity or :nan or :neg_infinity, :infinity or :nan or :neg_infinity292         :nan, float() or integer()293         float() or integer(), :nan294         float() or integer(), :infinity295         float() or integer(), :neg_infinity296         float() or integer(), float() or integer()297298     │299 590 │   def divide(n, b) when is_number(n) and b in [:infinity, :neg_infinity] do300     │       ~301     │302     └─ lib/complex.ex:590:7: Complex.divide/2303304      warning: the following clause is redundant:305306          def pow(%Complex{re: re, im: im}, :neg_infinity) when re == 0 and im == 0307308      it has type:309310          dynamic(%Complex{re: float() or integer(), im: float() or integer()}), :neg_infinity311312      previous clauses have already matched on the following types:313314          :infinity or :nan or :neg_infinity, %Complex{}315          %Complex{}, :infinity or :nan or :neg_infinity316          %Complex{re: :infinity or :nan or :neg_infinity}, term()317          %Complex{im: :infinity or :nan or :neg_infinity}, term()318          term(), %Complex{re: :infinity or :nan or :neg_infinity}319          term(), %Complex{im: :infinity or :nan or :neg_infinity}320          :nan, term()321          term(), :nan322323      │324 1143 │   def pow(%Complex{re: re, im: im}, :neg_infinity) when re == 0 and im == 0, do: new(:infinity, 0)325      │       ~326      │327      └─ lib/complex.ex:1143:7: Complex.pow/2328329      warning: the following clause is redundant:330331          def atan2(:nan, :nan)332333      it has type:334335          :nan, :nan336337      previous clauses have already matched on the following types:338339          float() or integer(), float() or integer()340          :infinity, :infinity341          :infinity, :neg_infinity342          :infinity, :nan343          :infinity, float() or integer()344          :neg_infinity, :infinity345          :neg_infinity, :neg_infinity346          :neg_infinity, :nan347          :neg_infinity, float() or integer()348          :nan, :infinity or :nan or :neg_infinity or float() or integer()349          :infinity or :nan or :neg_infinity or float() or integer(), :nan350351      │352 1458 │   def atan2(:nan, :nan), do: :nan353      │       ~354      │355      └─ lib/complex.ex:1458:7: Complex.atan2/2356357Generated complex app358==> nerves_logging359 CC kmsg_tailer.o360 LD kmsg_tailer361Compiling 5 files (.ex)362Generated nerves_logging app363==> castore364Compiling 1 file (.ex)365Generated castore app366==> mint367Compiling 1 file (.erl)368Compiling 21 files (.ex)369Generated mint app370==> nerves_compatibility_test371===> Analyzing applications...372===> Compiling cowlib373===> Analyzing applications...374===> Compiling gun375==> unzip376Compiling 6 files (.ex)377    warning: unused require Logger378    │379 40 │   require Logger380    │   ~381    │382    └─ lib/unzip.ex:40:3383384Generated unzip app385==> ring_logger386Compiling 7 files (.ex)387Generated ring_logger app388==> shoehorn389Compiling 8 files (.ex)390Generated shoehorn app391==> yaml_elixir392Compiling 6 files (.ex)393Generated yaml_elixir app394==> nerves_compatibility_test395===> Analyzing applications...396===> Compiling telemetry397==> nx398Compiling 43 files (.ex)399Compiling lib/nx/binary_backend.ex (it's taking more than 10s)400Generated nx app401==> nx_image402Compiling 1 file (.ex)403Generated nx_image app404==> safetensors405Compiling 3 files (.ex)406    warning: the variable "size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator407    │408 27 │         for <<data::size(size)-binary <- binary>> do409    │                          ~410    │411    └─ lib/safetensors/shared.ex:27:26: Safetensors.Shared.new_byte_order/3412413Generated safetensors app414==> ecto415Compiling 56 files (.ex)416Compiling lib/ecto.ex (it's taking more than 10s)417Compiling lib/ecto/changeset/relation.ex (it's taking more than 10s)418Generated ecto app419==> jaxon420mkdir -p priv421gcc -shared -fpic -D_POSIX_C_SOURCE=199309L -std=c99 -O3 -I/usr/local/lib/erlang/erts-17.0.4/include c_src/decoder*.c -o priv/decoder.so422Compiling 11 files (.ex)423    warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead424    │425  2 │   @parser Application.get_env(:jaxon, :parser, Jaxon.Parsers.NifParser)426    │                       ~427    │428    └─ lib/jaxon/parser.ex:2:23: Jaxon.Parser (module)429430Generated jaxon app431==> polaris432Compiling 5 files (.ex)433Generated polaris app434==> axon435Compiling 27 files (.ex)436     warning: unused require Polaris.Updates437     │438 212 │   require Polaris.Updates439     │   ~440     │441     └─ lib/axon/loop.ex:212:3442443     warning: unused require Logger444     │445 284 │   require Logger446     │   ~447     │448     └─ lib/axon.ex:284:3449450      warning: the following conditional expression will always succeed:451452          not improved?453454      because it evaluates to:455456          dynamic(true)457458      where "improved?" was given the type:459460          # type: dynamic(false or nil)461          # from: lib/axon/loop.ex:1124:7462          improved?463464      type warning found at:465      │466 1136 │       not improved? and not over_patience? ->467      │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~468      │469      └─ lib/axon/loop.ex:1136: Axon.Loop.monitor_impl/6470471     warning: the following clause will never match:472473         map when is_map(map) ->474475     because it attempts to match on the result of:476477         value478479     which has type:480481         dynamic(not empty_list() and not map() and not non_empty_list(term(), term()))482483     where "map" was given the type:484485         # type: map()486         # from: lib/axon/model_state.ex:208:16487         is_map(map)488489     type warning found at:490     │491 208 │       map when is_map(map) ->492     │       ~493     │494     └─ lib/axon/model_state.ex:208:7: Axon.ModelState.transform_to_parameters/1495496      warning: the following clause is redundant:497498          %{parent: [parent_id]} = popped ->499500      previous clauses have already matched on the following types:501502          %{..., op: term(), op_name: :container, parent: term()}503          %{..., parent: non_empty_list(term(), term())}504505      where "parent_id" was given the type:506507          # type: dynamic()508          # from: lib/axon.ex:3960:30509          %{parent: [parent_id]} = popped510511      where "popped" was given the type:512513          # type: dynamic(%{..., parent: non_empty_list(term())})514          # from: lib/axon.ex:3960:30515          %{parent: [parent_id]} = popped516517      type warning found at:518      │519 3960 │       %{parent: [parent_id]} = popped ->520      │                                       ~521      │522      └─ lib/axon.ex:3960:39: Axon.pop_node/1523524Generated axon app525==> rustler_precompiled526Compiling 4 files (.ex)527Generated rustler_precompiled app528==> tokenizers529Compiling 18 files (.ex)53053103:21:21.437 [debug] Downloading NIF from https://github.com/elixir-nx/tokenizers/releases/download/v0.5.1/libex_tokenizers-v0.5.1-nif-2.15-arm-unknown-linux-gnueabihf.so.tar.gz53253303:21:24.009 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libex_tokenizers-v0.5.1-nif-2.15-arm-unknown-linux-gnueabihf.so.tar.gz and extracted to /work/proj/_build/trellis/lib/tokenizers/priv/native/libex_tokenizers-v0.5.1-nif-2.15-arm-unknown-linux-gnueabihf.so534Generated tokenizers app535==> nx_signal536Compiling 5 files (.ex)537     warning: Nx.reflect/2 is deprecated. Use pad_outer/3 instead538     │539 349 │     tensor = Nx.reflect(tensor, padding_config: [{half_window, half_window}])540     │                 ~541     │542     └─ lib/nx_signal.ex:349:17: NxSignal."__defn:as_windowed_reflect_padding__"/2543544     warning: Tuple.append/2 is deprecated. Use insert_at instead545     │546 739 │     |> Tuple.append(out_len)547     │              ~548     │549     └─ lib/nx_signal.ex:739:14: NxSignal.overlap_and_add_output_shape/2550551Generated nx_signal app552==> bumblebee553Compiling 107 files (.ex)554     warning: Nx.Defn.Kernel.create_token/0 is deprecated. Use hook/2 or hook/3 instead. Will be removed in a future release.555     │556 666 │     token = create_token()557     │             ~558     │559     └─ lib/bumblebee/text/generation.ex:666:13: Bumblebee.Text.Generation."__defn:update_sequences__"/4560561     warning: Nx.Defn.Kernel.hook_token/3 is deprecated. Use hook/2 or hook/3 instead. Will be removed in a future release.562     │563 667 │     {token, _} = hook_token(token, data, :token)564     │                  ~565     │566     └─ lib/bumblebee/text/generation.ex:667:18: Bumblebee.Text.Generation."__defn:update_sequences__"/4567568     warning: Nx.Defn.Kernel.attach_token/2 is deprecated. Use hook/2 or hook/3 instead. Will be removed in a future release.569     │570 670 │     attach_token(token, state)571     │     ~572     │573     └─ lib/bumblebee/text/generation.ex:670:5: Bumblebee.Text.Generation."__defn:update_sequences__"/4574575Generated bumblebee app576==> uboot_env577Compiling 5 files (.ex)578Generated uboot_env app579==> nimble_pool580Compiling 2 files (.ex)581Generated nimble_pool app582==> finch583Compiling 22 files (.ex)584Generated finch app585warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"586  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2587  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1588  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5589  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2590  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4591  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2592593==> req594Compiling 19 files (.ex)595Generated req app596==> instructor597Compiling 17 files (.ex)598     warning: this clause cannot match because a previous clause at line 196 matches the same pattern as this clause599     │600 197 │       %{"content" => chunk} -> chunk601     │                             ~602     │603     └─ lib/instructor/adapters/openai.ex:197:29604605     warning: the following clause is redundant:606607         %{"content" => chunk} ->608609     previous clauses have already matched on the following types:610611         nil612         map()613614     where "chunk" was given the type:615616         # type: dynamic()617         # from: lib/instructor/adapters/openai.ex:197:7618         %{"content" => chunk}619620     type warning found at:621     │622 197 │       %{"content" => chunk} -> chunk623     │                             ~624     │625     └─ lib/instructor/adapters/openai.ex:197:29: Instructor.Adapters.OpenAI.parse_stream_chunk_for_mode/2626627     warning: the following clause will never match:628629         {:error, reason} ->630631     it is expected to match on type:632633         dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})634635     type warning found at:636     │637 307 │                 {:error, reason} -> acc ++ [{:error, reason}]638     │                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~639     │640     └─ lib/instructor.ex:307: Instructor.do_streaming_partial_array_chat_completion/3641642     warning: the following clause is redundant:643644         e ->645646     previous clauses have already matched on the following types:647648         {:validation, not %Ecto.Changeset{valid?: true}}649650     where "e" was given the type:651652         # type: dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})653         # from: lib/instructor.ex:308:17654         e655656     type warning found at:657     │658 308 │                 e -> acc ++ [{:error, e}]659     │                   ~660     │661     └─ lib/instructor.ex:308:19: Instructor.do_streaming_partial_array_chat_completion/3662663     warning: the following clause will never match:664665         {:error, reason} ->666667     it is expected to match on type:668669         dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})670671     type warning found at:672     │673 378 │           {:error, reason} -> {:error, reason}674     │           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~675     │676     └─ lib/instructor.ex:378: Instructor.do_streaming_partial_chat_completion/3677678     warning: the following clause is redundant:679680         e ->681682     previous clauses have already matched on the following types:683684         {:validation, not %Ecto.Changeset{valid?: true}}685686     where "e" was given the type:687688         # type: dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})689         # from: lib/instructor.ex:379:11690         e691692     type warning found at:693     │694 379 │           e -> {:error, e}695     │             ~696     │697     └─ lib/instructor.ex:379:13: Instructor.do_streaming_partial_chat_completion/3698699     warning: the following clause will never match:700701         {:error, reason} ->702703     it is expected to match on type:704705         dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})706707     type warning found at:708     │709 414 │         {:error, reason} -> {:error, reason}710     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~711     │712     └─ lib/instructor.ex:414: Instructor.do_streaming_array_chat_completion/3713714     warning: the following clause is redundant:715716         e ->717718     previous clauses have already matched on the following types:719720         {:validation, not %Ecto.Changeset{valid?: true}}721722     where "e" was given the type:723724         # type: dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})725         # from: lib/instructor.ex:415:9726         e727728     type warning found at:729     │730 415 │         e -> {:error, e}731     │           ~732     │733     └─ lib/instructor.ex:415:11: Instructor.do_streaming_array_chat_completion/3734735Generated instructor app736==> ex_llm737Compiling 109 files (.ex)738    warning: unused require Logger739    │740 39 │   require Logger741    │   ~742    │743    └─ lib/ex_llm/infrastructure/circuit_breaker/bulkhead.ex:39:3744745    warning: unused require Logger746    │747 10 │   require Logger748    │   ~749    │750    └─ lib/ex_llm/infrastructure/circuit_breaker/bulkhead_worker.ex:10:3751752    warning: unused require Logger753    │754 42 │   require Logger755    │   ~756    │757    └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:42:3758759    warning: unused require Logger760    │761 36 │   require Logger762    │   ~763    │764    └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/prometheus_endpoint.ex:36:3765766    warning: unused require Logger767    │768 31 │   require Logger769    │   ~770    │771    └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:31:3772773    warning: unused require Logger774    │775 33 │   require Logger776    │   ~777    │778    └─ lib/ex_llm/infrastructure/streaming/chunk_batcher.ex:33:3779780     warning: the following conditional expression:781782         available?()783784     will always evaluate to:785786         dynamic(true)787788     type warning found at:789     │790 510 │     unless available?() do791     │     ~~~~~~~~~~~~~~~~~~~~~~792     │793     └─ lib/ex_llm/core/structured_outputs.ex:510: ExLLM.Core.StructuredOutputs.simple_schema/2794795     warning: the following clause cannot match because the previous clauses already matched all possible values:796797         error ->798799     it attempts to match on the result of:800801         ExLLM.Testing.ResponseCache.configure_mock_provider(provider)802803     which has the already matched type:804805         dynamic(:no_cache or :ok)806807     where "error" was given the type:808809         # type: dynamic(:no_cache or :ok)810         # from: lib/ex_llm/providers/mock.ex:163:7811         error812813     type warning found at:814     │815 163 │       error ->816     │             ~817     │818     └─ lib/ex_llm/providers/mock.ex:163:13: ExLLM.Providers.Mock.use_cached_responses/1819820    warning: the following clause will never match:821822        nil ->823824    because it attempts to match on the result of:825826        ExLLM.Infrastructure.Config.ModelConfig.get_default_model(:groq)827828    which has type:829830        dynamic(not nil)831832    type warning found at:833    │834 40 │   use ExLLM.Providers.OpenAICompatible,835    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~836    │837    └─ lib/ex_llm/providers/groq.ex:40: ExLLM.Providers.Groq.ensure_default_model/0838839    warning: this clause of defp handle_error/1 is never used (or it will always fail/warn when invoked)840    │841 40 │   use ExLLM.Providers.OpenAICompatible,842    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~843    │844    └─ lib/ex_llm/providers/groq.ex:40: ExLLM.Providers.Groq.handle_error/1845846      warning: the following clause cannot match because the previous clauses already matched all possible values:847848          error ->849850      it attempts to match on the result of:851852          list_models(options)853854      which has the already matched type:855856          dynamic({:ok, term()})857858      where "error" was given the type:859860          # type: dynamic({:ok, term()})861          # from: lib/ex_llm/providers/ollama.ex:1765:7862          error863864      type warning found at:865      │866 1765 │       error ->867      │             ~868      │869      └─ lib/ex_llm/providers/ollama.ex:1765:13: ExLLM.Providers.Ollama.list_embedding_models/1870871     warning: the following conditional expression:872873         app_url874875     will always evaluate to:876877         dynamic(not false and not nil)878879     where "app_url" was given the type:880881         # type: dynamic(not false and not nil)882         # from: lib/ex_llm/providers/openrouter.ex:355:13883         app_url = get_app_url(config)884885     type warning found at:886     │887 357 │     if app_url do888     │     ~~~~~~~~~~~~~889     │890     └─ lib/ex_llm/providers/openrouter.ex:357: ExLLM.Providers.OpenRouter.build_headers/2891892     warning: incompatible types given to Kernel.length/1:893894         length(inputs)895896     given types:897898         -dynamic(%ExLLM.Providers.Gemini.Embeddings.EmbedContentRequest{})-899900     but expected one of:901902         list(term())903904     where "inputs" was given the type:905906         # type: dynamic(%ExLLM.Providers.Gemini.Embeddings.EmbedContentRequest{})907         # from: lib/ex_llm/providers/gemini.ex:307:46908         ExLLM.Providers.Gemini.Embeddings.embed_content(model, inputs, api_key: api_key)909910     type warning found at:911     │912 318 │                total_tokens: length(inputs) * 100913     │                              ~914     │915     └─ lib/ex_llm/providers/gemini.ex:318:30: ExLLM.Providers.Gemini.embeddings/2916917    warning: the following pattern will never match:918919        {:ok, response} <- invoke_model(client, model_id, request_body)920921    because the right-hand side has type:922923        dynamic({:error, binary()})924925    where "client" was given the type:926927        # type: dynamic(%{provider: binary(), stub: true})928        # from: lib/ex_llm/providers/bedrock.ex:59:24929        {:ok, client} <- get_bedrock_client(options)930931    where "model_id" was given the type:932933        # type: binary()934        # from: lib/ex_llm/providers/bedrock.ex:61:33935        build_request_body(model_id, messages, options)936937    where "request_body" was given the type:938939        # type: dynamic()940        # from: lib/ex_llm/providers/bedrock.ex:61:30941        {:ok, request_body} <- build_request_body(model_id, messages, options)942943    type warning found at:944    │945 62 │          {:ok, response} <- invoke_model(client, model_id, request_body) do946    │          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~947    │948    └─ lib/ex_llm/providers/bedrock.ex:62: ExLLM.Providers.Bedrock.chat/2949950    warning: the following clause will never match:951952        nil ->953954    because it attempts to match on the result of:955956        ExLLM.Infrastructure.Config.ModelConfig.get_default_model(:bedrock)957958    which has type:959960        dynamic(not nil)961962    type warning found at:963    │964 87 │       nil ->965    │       ~~~~~~966    │967    └─ lib/ex_llm/providers/bedrock.ex:87: ExLLM.Providers.Bedrock.default_model/0968969     warning: incompatible types given to Enum.map_join/3:970971         Enum.map_join(972           messages,973           fn msg ->974             case msg["role"] do975               ...976             end977           end,978           ""979         )980981     given types:982983         (984           dynamic(),985           -(%{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or986               non_struct_map() ->987               dynamic(binary()))-,988           binary()989         )990991     but expected one of:992993         term(), binary(), term()994995     where "messages" was given the type:996997         # type: dynamic()998         # from: lib/ex_llm/providers/bedrock.ex:345:28999         messages10001001     type warning found at:1002     │1003 348 │     |> Enum.map_join(1004     │             ~1005     │1006     └─ lib/ex_llm/providers/bedrock.ex:348:13: ExLLM.Providers.Bedrock.format_llama_prompt/110071008     warning: incompatible types given to Enum.map_join/3:10091010         Enum.map_join(1011           messages,1012           fn msg ->1013             case msg["role"] do1014               ...1015             end1016           end,1017           ""1018         )10191020     given types:10211022         (1023           dynamic(),1024           -(%{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1025               non_struct_map() ->1026               dynamic(binary()))-,1027           binary()1028         )10291030     but expected one of:10311032         term(), binary(), term()10331034     where "messages" was given the type:10351036         # type: dynamic()1037         # from: lib/ex_llm/providers/bedrock.ex:360:301038         messages10391040     type warning found at:1041     │1042 363 │     |> Enum.map_join(1043     │             ~1044     │1045     └─ lib/ex_llm/providers/bedrock.ex:363:13: ExLLM.Providers.Bedrock.format_mistral_prompt/110461047     warning: this clause of defp sanitize_request_body/1 is never used (or it will always fail/warn when invoked)1048     │1049 245 │   defp sanitize_request_body(body), do: body1050     │        ~1051     │1052     └─ lib/ex_llm/testing/interceptor.ex:245:8: ExLLM.Testing.TestResponseInterceptor.sanitize_request_body/110531054     warning: this clause of defp hash_map/1 is never used (or it will always fail/warn when invoked)1055     │1056 597 │   defp hash_map(_), do: "unknown"1057     │        ~1058     │1059     └─ lib/ex_llm/testing/cache/test_cache_strategy.ex:597:8: ExLLM.Testing.TestCacheStrategy.hash_map/110601061    warning: the following clause will never match:10621063        nil ->10641065    because it attempts to match on the result of:10661067        ExLLM.Infrastructure.Config.ModelConfig.get_default_model(adapter_name)10681069    which has type:10701071        dynamic(not nil)10721073    type warning found at:1074    │1075 58 │       nil ->1076    │       ~~~~~~1077    │1078    └─ lib/ex_llm/providers/shared/config_helper.ex:58: ExLLM.Providers.Shared.ConfigHelper.ensure_default_model/110791080     warning: this clause of defp normalize_model_name/1 is never used (or it will always fail/warn when invoked)1081     │1082 221 │   defp normalize_model_name(nil),1083     │        ~1084     │1085     └─ lib/ex_llm/providers/gemini/models.ex:221:8: ExLLM.Providers.Gemini.Models.normalize_model_name/110861087     warning: this clause of defp normalize_model_name/1 is never used (or it will always fail/warn when invoked)1088     │1089 241 │   defp normalize_model_name(_),1090     │        ~1091     │1092     └─ lib/ex_llm/providers/gemini/models.ex:241:8: ExLLM.Providers.Gemini.Models.normalize_model_name/110931094     warning: the following clause is redundant:10951096         {:ok, %{status: 400, body: body}} ->10971098     previous clauses have already matched on the following types:10991100         {:ok, map()}11011102     where "body" was given the type:11031104         # type: dynamic()1105         # from: lib/ex_llm/providers/gemini/content.ex1106         {:ok, %{status: 400, body: body}}11071108     type warning found at:1109     │1110 461 │         {:ok, %{status: 400, body: body}} ->1111     │                                           ~1112     │1113     └─ lib/ex_llm/providers/gemini/content.ex:461:43: ExLLM.Providers.Gemini.Content.generate_content/311141115     warning: this clause of defp generation_config_to_json/1 is never used (or it will always fail/warn when invoked)1116     │1117 223 │     defp generation_config_to_json(nil), do: nil1118     │          ~1119     │1120     └─ lib/ex_llm/providers/gemini/content.ex:223:10: ExLLM.Providers.Gemini.Content.GenerateContentRequest.generation_config_to_json/111211122     warning: the following clause is redundant:11231124         {:ok, %{status: 401, body: body}} ->11251126     previous clauses have already matched on the following types:11271128         {:ok, map()}11291130     where "body" was given the type:11311132         # type: dynamic()1133         # from: lib/ex_llm/providers/gemini/content.ex1134         {:ok, %{status: 401, body: body}}11351136     type warning found at:1137     │1138 464 │         {:ok, %{status: 401, body: body}} ->1139     │                                           ~1140     │1141     └─ lib/ex_llm/providers/gemini/content.ex:464:43: ExLLM.Providers.Gemini.Content.generate_content/311421143     warning: this clause of defp tool_config_to_json/1 is never used (or it will always fail/warn when invoked)1144     │1145 339 │     defp tool_config_to_json(nil), do: nil1146     │          ~1147     │1148     └─ lib/ex_llm/providers/gemini/content.ex:339:10: ExLLM.Providers.Gemini.Content.GenerateContentRequest.tool_config_to_json/111491150     warning: the following clause is redundant:11511152         {:ok, %{status: 403, body: body}} ->11531154     previous clauses have already matched on the following types:11551156         {:ok, map()}11571158     where "body" was given the type:11591160         # type: dynamic()1161         # from: lib/ex_llm/providers/gemini/content.ex1162         {:ok, %{status: 403, body: body}}11631164     type warning found at:1165     │1166 467 │         {:ok, %{status: 403, body: body}} ->1167     │                                           ~1168     │1169     └─ lib/ex_llm/providers/gemini/content.ex:467:43: ExLLM.Providers.Gemini.Content.generate_content/311701171     warning: the following clause is redundant:11721173         {:ok, %{status: 404}} ->11741175     previous clauses have already matched on the following types:11761177         {:ok, map()}11781179     type warning found at:1180     │1181 477 │         {:ok, %{status: 404}} ->1182     │                               ~1183     │1184     └─ lib/ex_llm/providers/gemini/content.ex:477:31: ExLLM.Providers.Gemini.Content.generate_content/311851186     warning: the following clause is redundant:11871188         {:ok, %{status: status, body: body}} ->11891190     previous clauses have already matched on the following types:11911192         {:ok, map()}11931194     where "body" was given the type:11951196         # type: dynamic()1197         # from: lib/ex_llm/providers/gemini/content.ex1198         {:ok, %{status: status, body: body}}11991200     where "status" was given the type:12011202         # type: dynamic()1203         # from: lib/ex_llm/providers/gemini/content.ex1204         {:ok, %{status: status, body: body}}12051206     type warning found at:1207     │1208 480 │         {:ok, %{status: status, body: body}} ->1209     │                                              ~1210     │1211     └─ lib/ex_llm/providers/gemini/content.ex:480:46: ExLLM.Providers.Gemini.Content.generate_content/312121213    warning: the following clause is redundant:12141215        {:ok, %{status: status, body: response_body}}1216            when is_integer(status) and (status >= 200 and status <= 299) ->12171218    previous clauses have already matched on the following types:12191220        {:ok, map()}12211222    where "response_body" was given the type:12231224        # type: dynamic()1225        # from: lib/ex_llm/providers/gemini/base.ex1226        {:ok, %{status: status, body: response_body}}12271228    where "status" was given the types:12291230        # type: integer()1231        # from: lib/ex_llm/providers/gemini/base.ex:471232        is_integer(status)12331234        # type: integer()1235        # from: lib/ex_llm/providers/gemini/base.ex1236        {:ok, %{status: status, body: response_body}}12371238    type warning found at:1239    │1240 47 │       {:ok, %{status: status, body: response_body}} when status in 200..299 ->1241    │                                                                             ~1242    │1243    └─ lib/ex_llm/providers/gemini/base.ex:47:77: ExLLM.Providers.Gemini.Base.request/112441245    warning: the following clause is redundant:12461247        {:ok, %{status: status, body: response_body}} ->12481249    previous clauses have already matched on the following types:12501251        {:ok, map()}12521253    where "response_body" was given the type:12541255        # type: dynamic()1256        # from: lib/ex_llm/providers/gemini/base.ex1257        {:ok, %{status: status, body: response_body}}12581259    where "status" was given the type:12601261        # type: dynamic()1262        # from: lib/ex_llm/providers/gemini/base.ex1263        {:ok, %{status: status, body: response_body}}12641265    type warning found at:1266    │1267 51 │       {:ok, %{status: status, body: response_body}} ->1268    │                                                     ~1269    │1270    └─ lib/ex_llm/providers/gemini/base.ex:51:53: ExLLM.Providers.Gemini.Base.request/112711272     warning: the following clause cannot match because the previous clauses already matched all possible values:12731274         error ->12751276     it attempts to match on the result of:12771278         ExLLM.Infrastructure.CircuitBreaker.HealthCheck.health_summary(opts)12791280     which has the already matched type:12811282         dynamic({:ok, term()})12831284     where "error" was given the type:12851286         # type: dynamic({:ok, term()})1287         # from: lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:249:71288         error12891290     type warning found at:1291     │1292 249 │       error ->1293     │             ~1294     │1295     └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:249:13: ExLLM.Infrastructure.CircuitBreaker.Metrics.Dashboard.export_csv/112961297     warning: the following clause cannot match because the previous clauses already matched all possible values:12981299         error ->13001301     it attempts to match on the result of:13021303         ExLLM.Infrastructure.CircuitBreaker.HealthCheck.health_summary(opts)13041305     which has the already matched type:13061307         dynamic({:ok, term()})13081309     where "error" was given the type:13101311         # type: dynamic({:ok, term()})1312         # from: lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:321:111313         error13141315     type warning found at:1316     │1317 321 │           error ->1318     │                 ~1319     │1320     └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:321:17: ExLLM.Infrastructure.CircuitBreaker.Metrics.Dashboard.get_alerts/113211322     warning: the following clause is redundant:13231324         error ->13251326     previous clauses have already matched on the following types:13271328         {:error, :circuit_not_found}13291330     where "error" was given the type:13311332         # type: dynamic({:error, :circuit_not_found} and not {:ok, %{..., __struct__: not_set()}})1333         # from: lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:173:71334         error13351336     type warning found at:1337     │1338 173 │       error ->1339     │             ~1340     │1341     └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:173:13: ExLLM.Infrastructure.CircuitBreaker.HealthCheck.circuit_health/213421343     warning: this clause of defp log_setup_result/2 is never used (or it will always fail/warn when invoked)1344     │1345 343 │     defp log_setup_result(backend, other) do1346     │          ~1347     │1348     └─ lib/ex_llm/infrastructure/circuit_breaker/metrics.ex:343:10: ExLLM.Infrastructure.CircuitBreaker.Metrics.log_setup_result/213491350     warning: the following clause cannot match because the previous clauses already matched all possible values:13511352         error ->13531354     it attempts to match on the result of:13551356         health_summary(opts)13571358     which has the already matched type:13591360         dynamic({:ok, term()})13611362     where "error" was given the type:13631364         # type: dynamic({:ok, term()})1365         # from: lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:259:71366         error13671368     type warning found at:1369     │1370 259 │       error ->1371     │             ~1372     │1373     └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:259:13: ExLLM.Infrastructure.CircuitBreaker.HealthCheck.critical_circuits/113741375     warning: the following clause cannot match because the previous clauses already matched all possible values:13761377         _ ->13781379     it attempts to match on the result of:13801381         state.storage_mod.info(state.storage_state)13821383     which has the already matched type:13841385         dynamic(1386           {:ok, %{memory: term(), size: term(), type: :ets},1387            %ExLLM.Infrastructure.Cache.Storage.ETS.State{}}1388         )13891390     type warning found at:1391     │1392 425 │         _ ->1393     │           ~1394     │1395     └─ lib/ex_llm/infrastructure/cache.ex:425:11: ExLLM.Infrastructure.Cache.handle_info/213961397    warning: the following clause cannot match because the previous clauses already matched all possible values:13981399        _ ->14001401    it attempts to match on the result of:14021403        get_adapter(provider)14041405    which has the already matched type:14061407        dynamic(1408          {:error, {:invalid_adapter or :unsupported_provider, term()}} or1409            {:ok,1410             ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1411               ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.Mock or1412               ExLLM.Providers.Ollama or ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter}1413        )14141415    type warning found at:1416    │1417 54 │       _ ->1418    │         ~1419    │1420    └─ lib/ex_llm/core/embeddings.ex:54:9: ExLLM.Core.Embeddings.generate/314211422     warning: the following clause cannot match because the previous clauses already matched all possible values:14231424         _ ->14251426     it attempts to match on the result of:14271428         ExLLM.Infrastructure.Config.ProviderCapabilities.get_adapter_module(provider)14291430     which has the already matched type:14311432         dynamic(1433           ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1434             ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.Mock or1435             ExLLM.Providers.Ollama or ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter or nil1436         )14371438     type warning found at:1439     │1440 243 │       _ -> {:error, {:invalid_adapter, provider}}1441     │         ~1442     │1443     └─ lib/ex_llm/core/embeddings.ex:243:9: ExLLM.Core.Embeddings.get_adapter/114441445     warning: the right-hand side of || will never be executed:14461447         capabilities.features || ...14481449     because the left-hand side always evaluates to:14501451         dynamic(1452           non_empty_list(1453             :cost_tracking or :function_calling or :json_mode or :reasoning or :streaming or1454               :structured_outputs or :system_messages or :tool_choice or :tool_use or :usage_tracking or1455               :vision or :web_search1456           ) or1457             non_empty_list(1458               :agents or :batch_inference or :code_interpretation or :cost_tracking or1459                 :document_understanding or :fine_tuning or :function_calling or :guardrails or :json_mode or1460                 :knowledge_bases or :model_evaluation or :multi_provider_models or :provisioned_throughput or1461                 :streaming or :system_messages or :tool_use or :usage_tracking or :vision1462             ) or1463             non_empty_list(1464               :batch_processing or :code_execution or :computer_use or :context_caching or :cost_tracking or1465                 :document_understanding or :function_calling or :json_mode or :latex_rendering or1466                 :long_context or :multiple_images or :prompt_caching or :rate_limiting_headers or1467                 :streaming or :structured_outputs or :system_messages or :tool_use or :usage_tracking or1468                 :vision or :xml_mode1469             ) or1470             non_empty_list(1471               :context_window_override or :custom_templates or :dynamic_model_listing or :embeddings or1472                 :function_calling or :json_mode or :keep_alive or :mirostat or :model_distribution or1473                 :model_management or :numa_control or :raw_mode or :seed_control or1474                 :stateful_conversations or :stop_sequences or :streaming or :system_messages or1475                 :temperature_control or :tool_use or :usage_tracking or :vision1476             ) or1477             non_empty_list(1478               :audio_input or :citation_metadata or :code_execution or :context_caching or :cost_tracking or1479                 :document_understanding or :dynamic_model_listing or :embeddings or :function_calling or1480                 :grounding or :json_mode or :long_context or :multi_turn_conversations or :multiple_images or1481                 :safety_settings or :streaming or :structured_outputs or :system_messages or :tool_use or1482                 :usage_tracking or :video_understanding or :vision1483             ) or1484             non_empty_list(1485               :assistants_api or :batch_operations or :code_interpreter or :cost_tracking or1486                 :dynamic_model_listing or :embeddings or :file_uploads or :fine_tuning_api or1487                 :function_calling or :image_generation or :json_mode or :logprobs or :long_context or1488                 :moderation or :parallel_function_calling or :rate_limiting_headers or :reasoning or1489                 :response_format or :retrieval or :seed_control or :speech_recognition or1490                 :speech_synthesis or :streaming or :structured_outputs or :system_messages or :tool_use or1491                 :usage_tracking or :vision1492             )1493         )14941495     where "capabilities" was given the type:14961497         # type: dynamic(1498           %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1499             id: :anthropic,1500             name: binary(),1501             description: binary(),1502             documentation_url: binary(),1503             status_url: binary(),1504             endpoints: non_empty_list(:chat or :messages),1505             authentication: non_empty_list(:api_key or :bearer_token),1506             features:1507               non_empty_list(1508                 :batch_processing or :code_execution or :computer_use or :context_caching or1509                   :cost_tracking or :document_understanding or :function_calling or :json_mode or1510                   :latex_rendering or :long_context or :multiple_images or :prompt_caching or1511                   :rate_limiting_headers or :streaming or :structured_outputs or :system_messages or1512                   :tool_use or :usage_tracking or :vision or :xml_mode1513               ),1514             limitations: %{1515               beta_features: non_empty_list(:computer_use or :context_caching or :prompt_caching),1516               max_context_tokens: integer(),1517               max_image_size: integer(),1518               max_images_per_request: integer(),1519               max_output_tokens: integer(),1520               no_embeddings: true,1521               no_fine_tuning: true,1522               no_image_generation: true1523             }1524           } or1525             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1526               id: :bedrock,1527               name: binary(),1528               description: binary(),1529               documentation_url: binary(),1530               status_url: nil,1531               endpoints:1532                 non_empty_list(1533                   :chat or :converse or :converse_stream or :embeddings or :invoke_model or1534                     :invoke_model_with_response_stream1535                 ),1536               authentication: non_empty_list(:aws_signature or :iam_role),1537               features:1538                 non_empty_list(1539                   :agents or :batch_inference or :code_interpretation or :cost_tracking or1540                     :document_understanding or :fine_tuning or :function_calling or :guardrails or1541                     :json_mode or :knowledge_bases or :model_evaluation or :multi_provider_models or1542                     :provisioned_throughput or :streaming or :system_messages or :tool_use or1543                     :usage_tracking or :vision1544                 ),1545               limitations: %{1546                 model_access_requires_approval: true,1547                 pricing_varies_by_model_provider: true,1548                 region_specific_availability: true,1549                 requires_aws_account: true,1550                 some_models_require_commitment: true1551               }1552             } or1553             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1554               id: :bumblebee,1555               name: binary(),1556               description: binary(),1557               documentation_url: binary(),1558               status_url: nil,1559               endpoints: non_empty_list(:chat or :embeddings),1560               authentication: empty_list(),1561               features: non_empty_list(:system_messages or :usage_tracking),1562               limitations: %{1563                 limited_model_selection: true,1564                 no_cost_tracking: true,1565                 no_streaming: true,1566                 performance_depends_on_hardware: true,1567                 requires_model_download: true1568               }1569             } or1570             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1571               id: :gemini,1572               name: binary(),1573               description: binary(),1574               documentation_url: binary(),1575               status_url: nil,1576               endpoints: non_empty_list(:chat or :count_tokens or :embeddings),1577               authentication: non_empty_list(:api_key or :oauth2 or :service_account),1578               features:1579                 non_empty_list(1580                   :audio_input or :citation_metadata or :code_execution or :context_caching or1581                     :cost_tracking or :document_understanding or :dynamic_model_listing or :embeddings or1582                     :function_calling or :grounding or :json_mode or :long_context or1583                     :multi_turn_conversations or :multiple_images or :safety_settings or :streaming or1584                     :structured_outputs or :system_messages or :tool_use or :usage_tracking or1585                     :video_understanding or :vision1586                 ),1587               limitations: %{1588                 max_context_tokens: integer(),1589                 max_images_per_request: integer(),1590                 max_output_tokens: integer(),1591                 max_video_length_seconds: integer(),1592                 no_fine_tuning_via_api: true,1593                 rate_limits_vary_by_model: true,1594                 requires_google_cloud_for_some_features: true,1595                 standard_context_tokens: integer()1596               }1597             } or1598             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1599               id: :groq,1600               name: binary(),1601               description: binary(),1602               documentation_url: binary(),1603               status_url: nil,1604               endpoints: non_empty_list(:chat),1605               authentication: non_empty_list(:api_key),1606               features:1607                 non_empty_list(1608                   :cost_tracking or :dynamic_model_listing or :function_calling or :json_mode or1609                     :rate_limiting_headers or :streaming or :system_messages or :tool_use or1610                     :usage_tracking1611                 ),1612               limitations: %{limited_model_selection: true, optimized_for_speed_not_size: true}1613             } or1614             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1615               id: :mock,1616               name: binary(),1617               description: binary(),1618               documentation_url: nil,1619               status_url: nil,1620               endpoints: non_empty_list(:chat or :embeddings),1621               authentication: empty_list(),1622               features:1623                 non_empty_list(1624                   :cost_tracking or :function_calling or :json_mode or :streaming or :system_messages or1625                     :tool_use or :usage_tracking or :vision1626                 ),1627               limitations: %{for_testing_only: true}1628             } or1629             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1630               id: :ollama,1631               name: binary(),1632               description: binary(),1633               documentation_url: binary(),1634               status_url: nil,1635               endpoints:1636                 non_empty_list(1637                   :chat or :copy or :delete or :embeddings or :generate or :list or :pull or :push or1638                     :show1639                 ),1640               authentication: empty_list(),1641               features:1642                 non_empty_list(1643                   :context_window_override or :custom_templates or :dynamic_model_listing or :embeddings or1644                     :function_calling or :json_mode or :keep_alive or :mirostat or :model_distribution or1645                     :model_management or :numa_control or :raw_mode or :seed_control or1646                     :stateful_conversations or :stop_sequences or :streaming or :system_messages or1647                     :temperature_control or :tool_use or :usage_tracking or :vision1648                 ),1649               limitations: %{1650                 limited_function_calling: true,1651                 local_only: true,1652                 no_audio_support: true,1653                 no_cost_tracking: true,1654                 no_image_generation: true,1655                 performance_depends_on_hardware: true,1656                 vision_depends_on_model: true1657               }1658             } or1659             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1660               id: :openai,1661               name: binary(),1662               description: binary(),1663               documentation_url: binary(),1664               status_url: binary(),1665               endpoints:1666                 non_empty_list(1667                   :assistants or :audio or :chat or :completions or :embeddings or :files or :fine_tuning or1668                     :images or :runs or :threads or :vector_stores1669                 ),1670               authentication: non_empty_list(:api_key or :bearer_token),1671               features:1672                 non_empty_list(1673                   :assistants_api or :batch_operations or :code_interpreter or :cost_tracking or1674                     :dynamic_model_listing or :embeddings or :file_uploads or :fine_tuning_api or1675                     :function_calling or :image_generation or :json_mode or :logprobs or :long_context or1676                     :moderation or :parallel_function_calling or :rate_limiting_headers or :reasoning or1677                     :response_format or :retrieval or :seed_control or :speech_recognition or1678                     :speech_synthesis or :streaming or :structured_outputs or :system_messages or1679                     :tool_use or :usage_tracking or :vision1680                 ),1681               limitations: %{1682                 audio_file_size_limit: integer(),1683                 image_generation_size_limits: non_empty_list(binary()),1684                 max_context_tokens: integer(),1685                 max_file_size: integer(),1686                 max_output_tokens: integer(),1687                 rate_limits_vary_by_tier: true1688               }1689             } or1690             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1691               id: :openrouter,1692               name: binary(),1693               description: binary(),1694               documentation_url: binary(),1695               status_url: nil,1696               endpoints: non_empty_list(:chat),1697               authentication: non_empty_list(:api_key),1698               features:1699                 non_empty_list(1700                   :cost_tracking or :dynamic_model_listing or :function_calling or :rate_limiting_headers or1701                     :streaming or :system_messages or :usage_tracking or :vision1702                 ),1703               limitations: %{features_depend_on_underlying_provider: true, pricing_markup: true}1704             } or1705             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1706               id: :xai,1707               name: binary(),1708               description: binary(),1709               documentation_url: binary(),1710               status_url: nil,1711               endpoints: non_empty_list(:chat),1712               authentication: non_empty_list(:api_key),1713               features:1714                 non_empty_list(1715                   :cost_tracking or :function_calling or :json_mode or :reasoning or :streaming or1716                     :structured_outputs or :system_messages or :tool_choice or :tool_use or1717                     :usage_tracking or :vision or :web_search1718                 ),1719               limitations: %{beta_features: non_empty_list(:reasoning), max_context_tokens: integer()}1720             }1721         )1722         # from: lib/ex_llm/core/embeddings.ex1723         {:ok, capabilities}17241725     type warning found at:1726     │1727 138 │           :embeddings in (capabilities.features || []) or1728     │           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1729     │1730     └─ lib/ex_llm/core/embeddings.ex:138: ExLLM.Core.Embeddings.list_providers/017311732     warning: incompatible types given to ExLLM.Providers.Groq.stream_chat/2:17331734         adapter.stream_chat(prepared_messages, options)1735         #=> invoked as ExLLM.Providers.Groq.stream_chat/217361737     given types:17381739         dynamic(), -dynamic(empty_list() or non_empty_list(term(), term()))-17401741     but expected one of:17421743         term(), (none() -> term())17441745     where "adapter" was given the type:17461747         # type: dynamic(1748           ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1749             ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.LMStudio or1750             ExLLM.Providers.Mistral or ExLLM.Providers.Mock or ExLLM.Providers.Ollama or1751             ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter or ExLLM.Providers.Perplexity or1752             ExLLM.Providers.XAI1753         )1754         # from: lib/ex_llm/core/chat.ex1755         {:ok, adapter}17561757     where "options" was given the type:17581759         # type: dynamic(empty_list() or non_empty_list(term(), term()))1760         # from: lib/ex_llm/core/chat.ex:124:221761         Keyword.get(options, :model, provider_or_model)17621763     where "prepared_messages" was given the type:17641765         # type: dynamic()1766         # from: lib/ex_llm/core/chat.ex:136:271767         prepared_messages = prepare_messages_for_provider(provider, messages, options)17681769     type warning found at:1770     │1771 145 │             adapter.stream_chat(prepared_messages, options)1772     │                     ~1773     │1774     └─ lib/ex_llm/core/chat.ex:145:21: ExLLM.Core.Chat.stream_chat/317751776     warning: the following conditional expression:17771778         is_atom(feature)17791780     will always evaluate to:17811782         dynamic(false)17831784     where "feature" was given the types:17851786         # type: binary()1787         # from: lib/ex_llm/core/capabilities.ex:249:281788         feature17891790         # type: binary()1791         # from: lib/ex_llm/core/capabilities.ex:249:421792         is_binary(feature)17931794     type warning found at:1795     │1796 272 │             if is_atom(feature), do: feature, else: nil1797     │             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1798     │1799     └─ lib/ex_llm/core/capabilities.ex:272: ExLLM.Core.Capabilities.normalize_capability/118001801Generated ex_llm app1802==> property_table1803Compiling 8 files (.ex)1804Generated property_table app1805==> nerves_uevent1806 CC uevent.o1807 LD uevent1808Compiling 5 files (.ex)1809Generated nerves_uevent app1810==> nerves_runtime1811Compiling 14 files (.ex)1812Generated nerves_runtime app1813==> toolshed1814Compiling 5 files (.ex)1815Generated toolshed app1816==> nerves_compatibility_test1817Compiling 2 files (.ex)1818Generated nerves_compatibility_test app1819|nerves| Building OTP Release...18201821* [Nerves] validating vm.args1822* skipping runtime configuration (config/runtime.exs not found)1823* creating _build/trellis/rel/nerves_compatibility_test/releases/0.1.0/vm.args1824Updating base firmware image with Erlang release...1825scrub-otp-release.sh: ERROR: Unexpected executable format for '/work/proj/_build/trellis/_nerves-tmp/rootfs_overlay/srv/erlang/lib/jaxon-2.0.8/priv/decoder.so'18261827Got:1828 readelf:Advanced Micro Devices X86-64;0x018291830Expecting:1831 readelf:ARM;0x5000400, Version5 EABI, hard-float ABI18321833This file was compiled for the host or a different target and probably1834will not work.18351836Check the following:183718381. If this file comes from a library, that library may be compiling to1839   its source directory under `deps`. Manually clean up the source1840   directory and try building again.184118422. Are you using a path dependency in your mix deps? If so, run1843   'mix clean' in that directory to avoid pulling in any of its1844   build products.184518463. Did you recently upgrade or change your Nerves system? If so,1847   try cleaning and rebuilding this project and its deps.184818494. Are you building outside of Nerves' mix integration? If so,1850   make sure that you've sourced 'nerves-env.sh'.18511852If you are very sure you know what you are doing, you may place an empty1853file in the same directory as the offending file(s) called '.noscrub'.1854This will explicitly disable scrubbing for that directory.18551856If you're still having trouble, please file an issue on Github1857at https://github.com/nerves-project/nerves_system_br/issues.1858