ex_llm

Build log

nerves_system_rpi4

ex_llm 0.8.1 · fail · run ex_llm-0.8.1-1790910398703
1857 of 1857 lines
1Resolving Hex dependencies...2Resolution completed in 0.204s3Unchanged: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:   rpi4163  MIX_ENV:      prod164165Checking for prebuilt Nerves artifacts...166  Found nerves_system_rpi4 in cache167    /home/nerves/.nerves/artifacts/nerves_system_rpi4-portable-2.1.2168  Found nerves_toolchain_aarch64_nerves_linux_gnu in cache169    /home/nerves/.nerves/artifacts/nerves_toolchain_aarch64_nerves_linux_gnu-linux_x86_64-15.3.1170==> 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_aarch64_nerves_linux_gnu196Compiling 1 file (.ex)197Generated nerves_toolchain_aarch64_nerves_linux_gnu app198==> nerves_system_rpi4199Generated nerves_system_rpi4 app200==> nerves_compatibility_test201202Nerves environment203  MIX_TARGET:   rpi4204  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_rpi4/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_rpi4/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_rpi4/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)416Generated ecto app417==> jaxon418mkdir -p priv419gcc -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.so420Compiling 11 files (.ex)421    warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead422    │423  2 │   @parser Application.get_env(:jaxon, :parser, Jaxon.Parsers.NifParser)424    │                       ~425    │426    └─ lib/jaxon/parser.ex:2:23: Jaxon.Parser (module)427428Generated jaxon app429==> polaris430Compiling 5 files (.ex)431Generated polaris app432==> axon433Compiling 27 files (.ex)434     warning: unused require Polaris.Updates435     │436 212 │   require Polaris.Updates437     │   ~438     │439     └─ lib/axon/loop.ex:212:3440441     warning: unused require Logger442     │443 284 │   require Logger444     │   ~445     │446     └─ lib/axon.ex:284:3447448      warning: the following conditional expression will always succeed:449450          not improved?451452      because it evaluates to:453454          dynamic(true)455456      where "improved?" was given the type:457458          # type: dynamic(false or nil)459          # from: lib/axon/loop.ex:1124:7460          improved?461462      type warning found at:463      │464 1136 │       not improved? and not over_patience? ->465      │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~466      │467      └─ lib/axon/loop.ex:1136: Axon.Loop.monitor_impl/6468469     warning: the following clause will never match:470471         map when is_map(map) ->472473     because it attempts to match on the result of:474475         value476477     which has type:478479         dynamic(not empty_list() and not map() and not non_empty_list(term(), term()))480481     where "map" was given the type:482483         # type: map()484         # from: lib/axon/model_state.ex:208:16485         is_map(map)486487     type warning found at:488     │489 208 │       map when is_map(map) ->490     │       ~491     │492     └─ lib/axon/model_state.ex:208:7: Axon.ModelState.transform_to_parameters/1493494      warning: the following clause is redundant:495496          %{parent: [parent_id]} = popped ->497498      previous clauses have already matched on the following types:499500          %{..., op: term(), op_name: :container, parent: term()}501          %{..., parent: non_empty_list(term(), term())}502503      where "parent_id" was given the type:504505          # type: dynamic()506          # from: lib/axon.ex:3960:30507          %{parent: [parent_id]} = popped508509      where "popped" was given the type:510511          # type: dynamic(%{..., parent: non_empty_list(term())})512          # from: lib/axon.ex:3960:30513          %{parent: [parent_id]} = popped514515      type warning found at:516      │517 3960 │       %{parent: [parent_id]} = popped ->518      │                                       ~519      │520      └─ lib/axon.ex:3960:39: Axon.pop_node/1521522Generated axon app523==> rustler_precompiled524Compiling 4 files (.ex)525Generated rustler_precompiled app526==> tokenizers527Compiling 18 files (.ex)52852903:16:26.032 [debug] Downloading NIF from https://github.com/elixir-nx/tokenizers/releases/download/v0.5.1/libex_tokenizers-v0.5.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz53053103:16:28.175 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libex_tokenizers-v0.5.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/rpi4/lib/tokenizers/priv/native/libex_tokenizers-v0.5.1-nif-2.15-aarch64-unknown-linux-gnu.so532Generated tokenizers app533==> nx_signal534Compiling 5 files (.ex)535     warning: Nx.reflect/2 is deprecated. Use pad_outer/3 instead536     │537 349 │     tensor = Nx.reflect(tensor, padding_config: [{half_window, half_window}])538     │                 ~539     │540     └─ lib/nx_signal.ex:349:17: NxSignal."__defn:as_windowed_reflect_padding__"/2541542     warning: Tuple.append/2 is deprecated. Use insert_at instead543     │544 739 │     |> Tuple.append(out_len)545     │              ~546     │547     └─ lib/nx_signal.ex:739:14: NxSignal.overlap_and_add_output_shape/2548549Generated nx_signal app550==> bumblebee551Compiling 107 files (.ex)552     warning: Nx.Defn.Kernel.create_token/0 is deprecated. Use hook/2 or hook/3 instead. Will be removed in a future release.553     │554 666 │     token = create_token()555     │             ~556     │557     └─ lib/bumblebee/text/generation.ex:666:13: Bumblebee.Text.Generation."__defn:update_sequences__"/4558559     warning: Nx.Defn.Kernel.hook_token/3 is deprecated. Use hook/2 or hook/3 instead. Will be removed in a future release.560     │561 667 │     {token, _} = hook_token(token, data, :token)562     │                  ~563     │564     └─ lib/bumblebee/text/generation.ex:667:18: Bumblebee.Text.Generation."__defn:update_sequences__"/4565566     warning: Nx.Defn.Kernel.attach_token/2 is deprecated. Use hook/2 or hook/3 instead. Will be removed in a future release.567     │568 670 │     attach_token(token, state)569     │     ~570     │571     └─ lib/bumblebee/text/generation.ex:670:5: Bumblebee.Text.Generation."__defn:update_sequences__"/4572573Generated bumblebee app574==> uboot_env575Compiling 5 files (.ex)576Generated uboot_env app577==> nimble_pool578Compiling 2 files (.ex)579Generated nimble_pool app580==> finch581Compiling 22 files (.ex)582Generated finch app583warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"584  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2585  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1586  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5587  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2588  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4589  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2590591==> req592Compiling 19 files (.ex)593Generated req app594==> instructor595Compiling 17 files (.ex)596     warning: this clause cannot match because a previous clause at line 196 matches the same pattern as this clause597     │598 197 │       %{"content" => chunk} -> chunk599     │                             ~600     │601     └─ lib/instructor/adapters/openai.ex:197:29602603     warning: the following clause is redundant:604605         %{"content" => chunk} ->606607     previous clauses have already matched on the following types:608609         nil610         map()611612     where "chunk" was given the type:613614         # type: dynamic()615         # from: lib/instructor/adapters/openai.ex:197:7616         %{"content" => chunk}617618     type warning found at:619     │620 197 │       %{"content" => chunk} -> chunk621     │                             ~622     │623     └─ lib/instructor/adapters/openai.ex:197:29: Instructor.Adapters.OpenAI.parse_stream_chunk_for_mode/2624625     warning: the following clause will never match:626627         {:error, reason} ->628629     it is expected to match on type:630631         dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})632633     type warning found at:634     │635 307 │                 {:error, reason} -> acc ++ [{:error, reason}]636     │                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~637     │638     └─ lib/instructor.ex:307: Instructor.do_streaming_partial_array_chat_completion/3639640     warning: the following clause is redundant:641642         e ->643644     previous clauses have already matched on the following types:645646         {:validation, not %Ecto.Changeset{valid?: true}}647648     where "e" was given the type:649650         # type: dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})651         # from: lib/instructor.ex:308:17652         e653654     type warning found at:655     │656 308 │                 e -> acc ++ [{:error, e}]657     │                   ~658     │659     └─ lib/instructor.ex:308:19: Instructor.do_streaming_partial_array_chat_completion/3660661     warning: the following clause will never match:662663         {:error, reason} ->664665     it is expected to match on type:666667         dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})668669     type warning found at:670     │671 378 │           {:error, reason} -> {:error, reason}672     │           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~673     │674     └─ lib/instructor.ex:378: Instructor.do_streaming_partial_chat_completion/3675676     warning: the following clause is redundant:677678         e ->679680     previous clauses have already matched on the following types:681682         {:validation, not %Ecto.Changeset{valid?: true}}683684     where "e" was given the type:685686         # type: dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})687         # from: lib/instructor.ex:379:11688         e689690     type warning found at:691     │692 379 │           e -> {:error, e}693     │             ~694     │695     └─ lib/instructor.ex:379:13: Instructor.do_streaming_partial_chat_completion/3696697     warning: the following clause will never match:698699         {:error, reason} ->700701     it is expected to match on type:702703         dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})704705     type warning found at:706     │707 414 │         {:error, reason} -> {:error, reason}708     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~709     │710     └─ lib/instructor.ex:414: Instructor.do_streaming_array_chat_completion/3711712     warning: the following clause is redundant:713714         e ->715716     previous clauses have already matched on the following types:717718         {:validation, not %Ecto.Changeset{valid?: true}}719720     where "e" was given the type:721722         # type: dynamic({:validation, term()} and not {:validation, %Ecto.Changeset{valid?: true}})723         # from: lib/instructor.ex:415:9724         e725726     type warning found at:727     │728 415 │         e -> {:error, e}729     │           ~730     │731     └─ lib/instructor.ex:415:11: Instructor.do_streaming_array_chat_completion/3732733Generated instructor app734==> ex_llm735Compiling 109 files (.ex)736    warning: unused require Logger737    │738 39 │   require Logger739    │   ~740    │741    └─ lib/ex_llm/infrastructure/circuit_breaker/bulkhead.ex:39:3742743    warning: unused require Logger744    │745 10 │   require Logger746    │   ~747    │748    └─ lib/ex_llm/infrastructure/circuit_breaker/bulkhead_worker.ex:10:3749750    warning: unused require Logger751    │752 42 │   require Logger753    │   ~754    │755    └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:42:3756757    warning: unused require Logger758    │759 36 │   require Logger760    │   ~761    │762    └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/prometheus_endpoint.ex:36:3763764    warning: unused require Logger765    │766 31 │   require Logger767    │   ~768    │769    └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:31:3770771    warning: unused require Logger772    │773 33 │   require Logger774    │   ~775    │776    └─ lib/ex_llm/infrastructure/streaming/chunk_batcher.ex:33:3777778Compiling lib/ex_llm/infrastructure/streaming/stream_buffer.ex (it's taking more than 10s)779     warning: the following clause cannot match because the previous clauses already matched all possible values:780781         error ->782783     it attempts to match on the result of:784785         ExLLM.Testing.ResponseCache.configure_mock_provider(provider)786787     which has the already matched type:788789         dynamic(:no_cache or :ok)790791     where "error" was given the type:792793         # type: dynamic(:no_cache or :ok)794         # from: lib/ex_llm/providers/mock.ex:163:7795         error796797     type warning found at:798     │799 163 │       error ->800     │             ~801     │802     └─ lib/ex_llm/providers/mock.ex:163:13: ExLLM.Providers.Mock.use_cached_responses/1803804    warning: the following clause will never match:805806        nil ->807808    because it attempts to match on the result of:809810        ExLLM.Infrastructure.Config.ModelConfig.get_default_model(:groq)811812    which has type:813814        dynamic(not nil)815816    type warning found at:817    │818 40 │   use ExLLM.Providers.OpenAICompatible,819    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~820    │821    └─ lib/ex_llm/providers/groq.ex:40: ExLLM.Providers.Groq.ensure_default_model/0822823    warning: this clause of defp handle_error/1 is never used (or it will always fail/warn when invoked)824    │825 40 │   use ExLLM.Providers.OpenAICompatible,826    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~827    │828    └─ lib/ex_llm/providers/groq.ex:40: ExLLM.Providers.Groq.handle_error/1829830      warning: the following clause cannot match because the previous clauses already matched all possible values:831832          error ->833834      it attempts to match on the result of:835836          list_models(options)837838      which has the already matched type:839840          dynamic({:ok, term()})841842      where "error" was given the type:843844          # type: dynamic({:ok, term()})845          # from: lib/ex_llm/providers/ollama.ex:1765:7846          error847848      type warning found at:849      │850 1765 │       error ->851      │             ~852      │853      └─ lib/ex_llm/providers/ollama.ex:1765:13: ExLLM.Providers.Ollama.list_embedding_models/1854855     warning: the following conditional expression:856857         app_url858859     will always evaluate to:860861         dynamic(not false and not nil)862863     where "app_url" was given the type:864865         # type: dynamic(not false and not nil)866         # from: lib/ex_llm/providers/openrouter.ex:355:13867         app_url = get_app_url(config)868869     type warning found at:870     │871 357 │     if app_url do872     │     ~~~~~~~~~~~~~873     │874     └─ lib/ex_llm/providers/openrouter.ex:357: ExLLM.Providers.OpenRouter.build_headers/2875876     warning: incompatible types given to Kernel.length/1:877878         length(inputs)879880     given types:881882         -dynamic(%ExLLM.Providers.Gemini.Embeddings.EmbedContentRequest{})-883884     but expected one of:885886         list(term())887888     where "inputs" was given the type:889890         # type: dynamic(%ExLLM.Providers.Gemini.Embeddings.EmbedContentRequest{})891         # from: lib/ex_llm/providers/gemini.ex:307:46892         ExLLM.Providers.Gemini.Embeddings.embed_content(model, inputs, api_key: api_key)893894     type warning found at:895     │896 318 │                total_tokens: length(inputs) * 100897     │                              ~898     │899     └─ lib/ex_llm/providers/gemini.ex:318:30: ExLLM.Providers.Gemini.embeddings/2900901    warning: the following pattern will never match:902903        {:ok, response} <- invoke_model(client, model_id, request_body)904905    because the right-hand side has type:906907        dynamic({:error, binary()})908909    where "client" was given the type:910911        # type: dynamic(%{provider: binary(), stub: true})912        # from: lib/ex_llm/providers/bedrock.ex:59:24913        {:ok, client} <- get_bedrock_client(options)914915    where "model_id" was given the type:916917        # type: binary()918        # from: lib/ex_llm/providers/bedrock.ex:61:33919        build_request_body(model_id, messages, options)920921    where "request_body" was given the type:922923        # type: dynamic()924        # from: lib/ex_llm/providers/bedrock.ex:61:30925        {:ok, request_body} <- build_request_body(model_id, messages, options)926927    type warning found at:928    │929 62 │          {:ok, response} <- invoke_model(client, model_id, request_body) do930    │          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~931    │932    └─ lib/ex_llm/providers/bedrock.ex:62: ExLLM.Providers.Bedrock.chat/2933934    warning: the following clause will never match:935936        nil ->937938    because it attempts to match on the result of:939940        ExLLM.Infrastructure.Config.ModelConfig.get_default_model(:bedrock)941942    which has type:943944        dynamic(not nil)945946    type warning found at:947    │948 87 │       nil ->949    │       ~~~~~~950    │951    └─ lib/ex_llm/providers/bedrock.ex:87: ExLLM.Providers.Bedrock.default_model/0952953     warning: incompatible types given to Enum.map_join/3:954955         Enum.map_join(956           messages,957           fn msg ->958             case msg["role"] do959               ...960             end961           end,962           ""963         )964965     given types:966967         (968           dynamic(),969           -(%{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or970               non_struct_map() ->971               dynamic(binary()))-,972           binary()973         )974975     but expected one of:976977         term(), binary(), term()978979     where "messages" was given the type:980981         # type: dynamic()982         # from: lib/ex_llm/providers/bedrock.ex:345:28983         messages984985     type warning found at:986     │987 348 │     |> Enum.map_join(988     │             ~989     │990     └─ lib/ex_llm/providers/bedrock.ex:348:13: ExLLM.Providers.Bedrock.format_llama_prompt/1991992     warning: incompatible types given to Enum.map_join/3:993994         Enum.map_join(995           messages,996           fn msg ->997             case msg["role"] do998               ...999             end1000           end,1001           ""1002         )10031004     given types:10051006         (1007           dynamic(),1008           -(%{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1009               non_struct_map() ->1010               dynamic(binary()))-,1011           binary()1012         )10131014     but expected one of:10151016         term(), binary(), term()10171018     where "messages" was given the type:10191020         # type: dynamic()1021         # from: lib/ex_llm/providers/bedrock.ex:360:301022         messages10231024     type warning found at:1025     │1026 363 │     |> Enum.map_join(1027     │             ~1028     │1029     └─ lib/ex_llm/providers/bedrock.ex:363:13: ExLLM.Providers.Bedrock.format_mistral_prompt/110301031     warning: the following conditional expression:10321033         available?()10341035     will always evaluate to:10361037         dynamic(true)10381039     type warning found at:1040     │1041 510 │     unless available?() do1042     │     ~~~~~~~~~~~~~~~~~~~~~~1043     │1044     └─ lib/ex_llm/core/structured_outputs.ex:510: ExLLM.Core.StructuredOutputs.simple_schema/210451046     warning: this clause of defp sanitize_request_body/1 is never used (or it will always fail/warn when invoked)1047     │1048 245 │   defp sanitize_request_body(body), do: body1049     │        ~1050     │1051     └─ lib/ex_llm/testing/interceptor.ex:245:8: ExLLM.Testing.TestResponseInterceptor.sanitize_request_body/110521053     warning: this clause of defp hash_map/1 is never used (or it will always fail/warn when invoked)1054     │1055 597 │   defp hash_map(_), do: "unknown"1056     │        ~1057     │1058     └─ lib/ex_llm/testing/cache/test_cache_strategy.ex:597:8: ExLLM.Testing.TestCacheStrategy.hash_map/110591060    warning: the following clause will never match:10611062        nil ->10631064    because it attempts to match on the result of:10651066        ExLLM.Infrastructure.Config.ModelConfig.get_default_model(adapter_name)10671068    which has type:10691070        dynamic(not nil)10711072    type warning found at:1073    │1074 58 │       nil ->1075    │       ~~~~~~1076    │1077    └─ lib/ex_llm/providers/shared/config_helper.ex:58: ExLLM.Providers.Shared.ConfigHelper.ensure_default_model/110781079     warning: this clause of defp normalize_model_name/1 is never used (or it will always fail/warn when invoked)1080     │1081 221 │   defp normalize_model_name(nil),1082     │        ~1083     │1084     └─ lib/ex_llm/providers/gemini/models.ex:221:8: ExLLM.Providers.Gemini.Models.normalize_model_name/110851086     warning: this clause of defp normalize_model_name/1 is never used (or it will always fail/warn when invoked)1087     │1088 241 │   defp normalize_model_name(_),1089     │        ~1090     │1091     └─ lib/ex_llm/providers/gemini/models.ex:241:8: ExLLM.Providers.Gemini.Models.normalize_model_name/110921093     warning: the following clause is redundant:10941095         {:ok, %{status: 400, body: body}} ->10961097     previous clauses have already matched on the following types:10981099         {:ok, map()}11001101     where "body" was given the type:11021103         # type: dynamic()1104         # from: lib/ex_llm/providers/gemini/content.ex1105         {:ok, %{status: 400, body: body}}11061107     type warning found at:1108     │1109 461 │         {:ok, %{status: 400, body: body}} ->1110     │                                           ~1111     │1112     └─ lib/ex_llm/providers/gemini/content.ex:461:43: ExLLM.Providers.Gemini.Content.generate_content/311131114     warning: the following clause is redundant:11151116         {:ok, %{status: 401, body: body}} ->11171118     previous clauses have already matched on the following types:11191120         {:ok, map()}11211122     where "body" was given the type:11231124         # type: dynamic()1125         # from: lib/ex_llm/providers/gemini/content.ex1126         {:ok, %{status: 401, body: body}}11271128     type warning found at:1129     │1130 464 │         {:ok, %{status: 401, body: body}} ->1131     │                                           ~1132     │1133     └─ lib/ex_llm/providers/gemini/content.ex:464:43: ExLLM.Providers.Gemini.Content.generate_content/311341135     warning: the following clause is redundant:11361137         {:ok, %{status: 403, body: body}} ->11381139     previous clauses have already matched on the following types:11401141         {:ok, map()}11421143     where "body" was given the type:11441145         # type: dynamic()1146         # from: lib/ex_llm/providers/gemini/content.ex1147         {:ok, %{status: 403, body: body}}11481149     type warning found at:1150     │1151 467 │         {:ok, %{status: 403, body: body}} ->1152     │                                           ~1153     │1154     └─ lib/ex_llm/providers/gemini/content.ex:467:43: ExLLM.Providers.Gemini.Content.generate_content/311551156     warning: the following clause is redundant:11571158         {:ok, %{status: 404}} ->11591160     previous clauses have already matched on the following types:11611162         {:ok, map()}11631164     type warning found at:1165     │1166 477 │         {:ok, %{status: 404}} ->1167     │                               ~1168     │1169     └─ lib/ex_llm/providers/gemini/content.ex:477:31: ExLLM.Providers.Gemini.Content.generate_content/311701171     warning: this clause of defp generation_config_to_json/1 is never used (or it will always fail/warn when invoked)1172     │1173 223 │     defp generation_config_to_json(nil), do: nil1174     │          ~1175     │1176     └─ lib/ex_llm/providers/gemini/content.ex:223:10: ExLLM.Providers.Gemini.Content.GenerateContentRequest.generation_config_to_json/111771178     warning: this clause of defp tool_config_to_json/1 is never used (or it will always fail/warn when invoked)1179     │1180 339 │     defp tool_config_to_json(nil), do: nil1181     │          ~1182     │1183     └─ lib/ex_llm/providers/gemini/content.ex:339:10: ExLLM.Providers.Gemini.Content.GenerateContentRequest.tool_config_to_json/111841185     warning: the following clause is redundant:11861187         {:ok, %{status: status, body: body}} ->11881189     previous clauses have already matched on the following types:11901191         {:ok, map()}11921193     where "body" was given the type:11941195         # type: dynamic()1196         # from: lib/ex_llm/providers/gemini/content.ex1197         {:ok, %{status: status, body: body}}11981199     where "status" was given the type:12001201         # type: dynamic()1202         # from: lib/ex_llm/providers/gemini/content.ex1203         {:ok, %{status: status, body: body}}12041205     type warning found at:1206     │1207 480 │         {:ok, %{status: status, body: body}} ->1208     │                                              ~1209     │1210     └─ lib/ex_llm/providers/gemini/content.ex:480:46: ExLLM.Providers.Gemini.Content.generate_content/312111212    warning: the following clause is redundant:12131214        {:ok, %{status: status, body: response_body}}1215            when is_integer(status) and (status >= 200 and status <= 299) ->12161217    previous clauses have already matched on the following types:12181219        {:ok, map()}12201221    where "response_body" was given the type:12221223        # type: dynamic()1224        # from: lib/ex_llm/providers/gemini/base.ex1225        {:ok, %{status: status, body: response_body}}12261227    where "status" was given the types:12281229        # type: integer()1230        # from: lib/ex_llm/providers/gemini/base.ex:471231        is_integer(status)12321233        # type: integer()1234        # from: lib/ex_llm/providers/gemini/base.ex1235        {:ok, %{status: status, body: response_body}}12361237    type warning found at:1238    │1239 47 │       {:ok, %{status: status, body: response_body}} when status in 200..299 ->1240    │                                                                             ~1241    │1242    └─ lib/ex_llm/providers/gemini/base.ex:47:77: ExLLM.Providers.Gemini.Base.request/112431244    warning: the following clause is redundant:12451246        {:ok, %{status: status, body: response_body}} ->12471248    previous clauses have already matched on the following types:12491250        {:ok, map()}12511252    where "response_body" was given the type:12531254        # type: dynamic()1255        # from: lib/ex_llm/providers/gemini/base.ex1256        {:ok, %{status: status, body: response_body}}12571258    where "status" was given the type:12591260        # type: dynamic()1261        # from: lib/ex_llm/providers/gemini/base.ex1262        {:ok, %{status: status, body: response_body}}12631264    type warning found at:1265    │1266 51 │       {:ok, %{status: status, body: response_body}} ->1267    │                                                     ~1268    │1269    └─ lib/ex_llm/providers/gemini/base.ex:51:53: ExLLM.Providers.Gemini.Base.request/112701271     warning: the following clause cannot match because the previous clauses already matched all possible values:12721273         error ->12741275     it attempts to match on the result of:12761277         ExLLM.Infrastructure.CircuitBreaker.HealthCheck.health_summary(opts)12781279     which has the already matched type:12801281         dynamic({:ok, term()})12821283     where "error" was given the type:12841285         # type: dynamic({:ok, term()})1286         # from: lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:249:71287         error12881289     type warning found at:1290     │1291 249 │       error ->1292     │             ~1293     │1294     └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:249:13: ExLLM.Infrastructure.CircuitBreaker.Metrics.Dashboard.export_csv/112951296     warning: the following clause cannot match because the previous clauses already matched all possible values:12971298         error ->12991300     it attempts to match on the result of:13011302         ExLLM.Infrastructure.CircuitBreaker.HealthCheck.health_summary(opts)13031304     which has the already matched type:13051306         dynamic({:ok, term()})13071308     where "error" was given the type:13091310         # type: dynamic({:ok, term()})1311         # from: lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:321:111312         error13131314     type warning found at:1315     │1316 321 │           error ->1317     │                 ~1318     │1319     └─ lib/ex_llm/infrastructure/circuit_breaker/metrics/dashboard.ex:321:17: ExLLM.Infrastructure.CircuitBreaker.Metrics.Dashboard.get_alerts/113201321     warning: this clause of defp log_setup_result/2 is never used (or it will always fail/warn when invoked)1322     │1323 343 │     defp log_setup_result(backend, other) do1324     │          ~1325     │1326     └─ lib/ex_llm/infrastructure/circuit_breaker/metrics.ex:343:10: ExLLM.Infrastructure.CircuitBreaker.Metrics.log_setup_result/213271328     warning: the following clause is redundant:13291330         error ->13311332     previous clauses have already matched on the following types:13331334         {:error, :circuit_not_found}13351336     where "error" was given the type:13371338         # type: dynamic({:error, :circuit_not_found} and not {:ok, %{..., __struct__: not_set()}})1339         # from: lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:173:71340         error13411342     type warning found at:1343     │1344 173 │       error ->1345     │             ~1346     │1347     └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:173:13: ExLLM.Infrastructure.CircuitBreaker.HealthCheck.circuit_health/213481349     warning: the following clause cannot match because the previous clauses already matched all possible values:13501351         error ->13521353     it attempts to match on the result of:13541355         health_summary(opts)13561357     which has the already matched type:13581359         dynamic({:ok, term()})13601361     where "error" was given the type:13621363         # type: dynamic({:ok, term()})1364         # from: lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:259:71365         error13661367     type warning found at:1368     │1369 259 │       error ->1370     │             ~1371     │1372     └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:259:13: ExLLM.Infrastructure.CircuitBreaker.HealthCheck.critical_circuits/113731374     warning: the following clause cannot match because the previous clauses already matched all possible values:13751376         _ ->13771378     it attempts to match on the result of:13791380         state.storage_mod.info(state.storage_state)13811382     which has the already matched type:13831384         dynamic(1385           {:ok, %{memory: term(), size: term(), type: :ets},1386            %ExLLM.Infrastructure.Cache.Storage.ETS.State{}}1387         )13881389     type warning found at:1390     │1391 425 │         _ ->1392     │           ~1393     │1394     └─ lib/ex_llm/infrastructure/cache.ex:425:11: ExLLM.Infrastructure.Cache.handle_info/213951396    warning: the following clause cannot match because the previous clauses already matched all possible values:13971398        _ ->13991400    it attempts to match on the result of:14011402        get_adapter(provider)14031404    which has the already matched type:14051406        dynamic(1407          {:error, {:invalid_adapter or :unsupported_provider, term()}} or1408            {:ok,1409             ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1410               ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.Mock or1411               ExLLM.Providers.Ollama or ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter}1412        )14131414    type warning found at:1415    │1416 54 │       _ ->1417    │         ~1418    │1419    └─ lib/ex_llm/core/embeddings.ex:54:9: ExLLM.Core.Embeddings.generate/314201421     warning: the following clause cannot match because the previous clauses already matched all possible values:14221423         _ ->14241425     it attempts to match on the result of:14261427         ExLLM.Infrastructure.Config.ProviderCapabilities.get_adapter_module(provider)14281429     which has the already matched type:14301431         dynamic(1432           ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1433             ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.Mock or1434             ExLLM.Providers.Ollama or ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter or nil1435         )14361437     type warning found at:1438     │1439 243 │       _ -> {:error, {:invalid_adapter, provider}}1440     │         ~1441     │1442     └─ lib/ex_llm/core/embeddings.ex:243:9: ExLLM.Core.Embeddings.get_adapter/114431444     warning: the right-hand side of || will never be executed:14451446         capabilities.features || ...14471448     because the left-hand side always evaluates to:14491450         dynamic(1451           non_empty_list(1452             :cost_tracking or :function_calling or :json_mode or :reasoning or :streaming or1453               :structured_outputs or :system_messages or :tool_choice or :tool_use or :usage_tracking or1454               :vision or :web_search1455           ) or1456             non_empty_list(1457               :agents or :batch_inference or :code_interpretation or :cost_tracking or1458                 :document_understanding or :fine_tuning or :function_calling or :guardrails or :json_mode or1459                 :knowledge_bases or :model_evaluation or :multi_provider_models or :provisioned_throughput or1460                 :streaming or :system_messages or :tool_use or :usage_tracking or :vision1461             ) or1462             non_empty_list(1463               :batch_processing or :code_execution or :computer_use or :context_caching or :cost_tracking or1464                 :document_understanding or :function_calling or :json_mode or :latex_rendering or1465                 :long_context or :multiple_images or :prompt_caching or :rate_limiting_headers or1466                 :streaming or :structured_outputs or :system_messages or :tool_use or :usage_tracking or1467                 :vision or :xml_mode1468             ) or1469             non_empty_list(1470               :context_window_override or :custom_templates or :dynamic_model_listing or :embeddings or1471                 :function_calling or :json_mode or :keep_alive or :mirostat or :model_distribution or1472                 :model_management or :numa_control or :raw_mode or :seed_control or1473                 :stateful_conversations or :stop_sequences or :streaming or :system_messages or1474                 :temperature_control or :tool_use or :usage_tracking or :vision1475             ) or1476             non_empty_list(1477               :audio_input or :citation_metadata or :code_execution or :context_caching or :cost_tracking or1478                 :document_understanding or :dynamic_model_listing or :embeddings or :function_calling or1479                 :grounding or :json_mode or :long_context or :multi_turn_conversations or :multiple_images or1480                 :safety_settings or :streaming or :structured_outputs or :system_messages or :tool_use or1481                 :usage_tracking or :video_understanding or :vision1482             ) or1483             non_empty_list(1484               :assistants_api or :batch_operations or :code_interpreter or :cost_tracking or1485                 :dynamic_model_listing or :embeddings or :file_uploads or :fine_tuning_api or1486                 :function_calling or :image_generation or :json_mode or :logprobs or :long_context or1487                 :moderation or :parallel_function_calling or :rate_limiting_headers or :reasoning or1488                 :response_format or :retrieval or :seed_control or :speech_recognition or1489                 :speech_synthesis or :streaming or :structured_outputs or :system_messages or :tool_use or1490                 :usage_tracking or :vision1491             )1492         )14931494     where "capabilities" was given the type:14951496         # type: dynamic(1497           %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1498             id: :anthropic,1499             name: binary(),1500             description: binary(),1501             documentation_url: binary(),1502             status_url: binary(),1503             endpoints: non_empty_list(:chat or :messages),1504             authentication: non_empty_list(:api_key or :bearer_token),1505             features:1506               non_empty_list(1507                 :batch_processing or :code_execution or :computer_use or :context_caching or1508                   :cost_tracking or :document_understanding or :function_calling or :json_mode or1509                   :latex_rendering or :long_context or :multiple_images or :prompt_caching or1510                   :rate_limiting_headers or :streaming or :structured_outputs or :system_messages or1511                   :tool_use or :usage_tracking or :vision or :xml_mode1512               ),1513             limitations: %{1514               beta_features: non_empty_list(:computer_use or :context_caching or :prompt_caching),1515               max_context_tokens: integer(),1516               max_image_size: integer(),1517               max_images_per_request: integer(),1518               max_output_tokens: integer(),1519               no_embeddings: true,1520               no_fine_tuning: true,1521               no_image_generation: true1522             }1523           } or1524             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1525               id: :bedrock,1526               name: binary(),1527               description: binary(),1528               documentation_url: binary(),1529               status_url: nil,1530               endpoints:1531                 non_empty_list(1532                   :chat or :converse or :converse_stream or :embeddings or :invoke_model or1533                     :invoke_model_with_response_stream1534                 ),1535               authentication: non_empty_list(:aws_signature or :iam_role),1536               features:1537                 non_empty_list(1538                   :agents or :batch_inference or :code_interpretation or :cost_tracking or1539                     :document_understanding or :fine_tuning or :function_calling or :guardrails or1540                     :json_mode or :knowledge_bases or :model_evaluation or :multi_provider_models or1541                     :provisioned_throughput or :streaming or :system_messages or :tool_use or1542                     :usage_tracking or :vision1543                 ),1544               limitations: %{1545                 model_access_requires_approval: true,1546                 pricing_varies_by_model_provider: true,1547                 region_specific_availability: true,1548                 requires_aws_account: true,1549                 some_models_require_commitment: true1550               }1551             } or1552             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1553               id: :bumblebee,1554               name: binary(),1555               description: binary(),1556               documentation_url: binary(),1557               status_url: nil,1558               endpoints: non_empty_list(:chat or :embeddings),1559               authentication: empty_list(),1560               features: non_empty_list(:system_messages or :usage_tracking),1561               limitations: %{1562                 limited_model_selection: true,1563                 no_cost_tracking: true,1564                 no_streaming: true,1565                 performance_depends_on_hardware: true,1566                 requires_model_download: true1567               }1568             } or1569             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1570               id: :gemini,1571               name: binary(),1572               description: binary(),1573               documentation_url: binary(),1574               status_url: nil,1575               endpoints: non_empty_list(:chat or :count_tokens or :embeddings),1576               authentication: non_empty_list(:api_key or :oauth2 or :service_account),1577               features:1578                 non_empty_list(1579                   :audio_input or :citation_metadata or :code_execution or :context_caching or1580                     :cost_tracking or :document_understanding or :dynamic_model_listing or :embeddings or1581                     :function_calling or :grounding or :json_mode or :long_context or1582                     :multi_turn_conversations or :multiple_images or :safety_settings or :streaming or1583                     :structured_outputs or :system_messages or :tool_use or :usage_tracking or1584                     :video_understanding or :vision1585                 ),1586               limitations: %{1587                 max_context_tokens: integer(),1588                 max_images_per_request: integer(),1589                 max_output_tokens: integer(),1590                 max_video_length_seconds: integer(),1591                 no_fine_tuning_via_api: true,1592                 rate_limits_vary_by_model: true,1593                 requires_google_cloud_for_some_features: true,1594                 standard_context_tokens: integer()1595               }1596             } or1597             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1598               id: :groq,1599               name: binary(),1600               description: binary(),1601               documentation_url: binary(),1602               status_url: nil,1603               endpoints: non_empty_list(:chat),1604               authentication: non_empty_list(:api_key),1605               features:1606                 non_empty_list(1607                   :cost_tracking or :dynamic_model_listing or :function_calling or :json_mode or1608                     :rate_limiting_headers or :streaming or :system_messages or :tool_use or1609                     :usage_tracking1610                 ),1611               limitations: %{limited_model_selection: true, optimized_for_speed_not_size: true}1612             } or1613             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1614               id: :mock,1615               name: binary(),1616               description: binary(),1617               documentation_url: nil,1618               status_url: nil,1619               endpoints: non_empty_list(:chat or :embeddings),1620               authentication: empty_list(),1621               features:1622                 non_empty_list(1623                   :cost_tracking or :function_calling or :json_mode or :streaming or :system_messages or1624                     :tool_use or :usage_tracking or :vision1625                 ),1626               limitations: %{for_testing_only: true}1627             } or1628             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1629               id: :ollama,1630               name: binary(),1631               description: binary(),1632               documentation_url: binary(),1633               status_url: nil,1634               endpoints:1635                 non_empty_list(1636                   :chat or :copy or :delete or :embeddings or :generate or :list or :pull or :push or1637                     :show1638                 ),1639               authentication: empty_list(),1640               features:1641                 non_empty_list(1642                   :context_window_override or :custom_templates or :dynamic_model_listing or :embeddings or1643                     :function_calling or :json_mode or :keep_alive or :mirostat or :model_distribution or1644                     :model_management or :numa_control or :raw_mode or :seed_control or1645                     :stateful_conversations or :stop_sequences or :streaming or :system_messages or1646                     :temperature_control or :tool_use or :usage_tracking or :vision1647                 ),1648               limitations: %{1649                 limited_function_calling: true,1650                 local_only: true,1651                 no_audio_support: true,1652                 no_cost_tracking: true,1653                 no_image_generation: true,1654                 performance_depends_on_hardware: true,1655                 vision_depends_on_model: true1656               }1657             } or1658             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1659               id: :openai,1660               name: binary(),1661               description: binary(),1662               documentation_url: binary(),1663               status_url: binary(),1664               endpoints:1665                 non_empty_list(1666                   :assistants or :audio or :chat or :completions or :embeddings or :files or :fine_tuning or1667                     :images or :runs or :threads or :vector_stores1668                 ),1669               authentication: non_empty_list(:api_key or :bearer_token),1670               features:1671                 non_empty_list(1672                   :assistants_api or :batch_operations or :code_interpreter or :cost_tracking or1673                     :dynamic_model_listing or :embeddings or :file_uploads or :fine_tuning_api or1674                     :function_calling or :image_generation or :json_mode or :logprobs or :long_context or1675                     :moderation or :parallel_function_calling or :rate_limiting_headers or :reasoning or1676                     :response_format or :retrieval or :seed_control or :speech_recognition or1677                     :speech_synthesis or :streaming or :structured_outputs or :system_messages or1678                     :tool_use or :usage_tracking or :vision1679                 ),1680               limitations: %{1681                 audio_file_size_limit: integer(),1682                 image_generation_size_limits: non_empty_list(binary()),1683                 max_context_tokens: integer(),1684                 max_file_size: integer(),1685                 max_output_tokens: integer(),1686                 rate_limits_vary_by_tier: true1687               }1688             } or1689             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1690               id: :openrouter,1691               name: binary(),1692               description: binary(),1693               documentation_url: binary(),1694               status_url: nil,1695               endpoints: non_empty_list(:chat),1696               authentication: non_empty_list(:api_key),1697               features:1698                 non_empty_list(1699                   :cost_tracking or :dynamic_model_listing or :function_calling or :rate_limiting_headers or1700                     :streaming or :system_messages or :usage_tracking or :vision1701                 ),1702               limitations: %{features_depend_on_underlying_provider: true, pricing_markup: true}1703             } or1704             %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1705               id: :xai,1706               name: binary(),1707               description: binary(),1708               documentation_url: binary(),1709               status_url: nil,1710               endpoints: non_empty_list(:chat),1711               authentication: non_empty_list(:api_key),1712               features:1713                 non_empty_list(1714                   :cost_tracking or :function_calling or :json_mode or :reasoning or :streaming or1715                     :structured_outputs or :system_messages or :tool_choice or :tool_use or1716                     :usage_tracking or :vision or :web_search1717                 ),1718               limitations: %{beta_features: non_empty_list(:reasoning), max_context_tokens: integer()}1719             }1720         )1721         # from: lib/ex_llm/core/embeddings.ex1722         {:ok, capabilities}17231724     type warning found at:1725     │1726 138 │           :embeddings in (capabilities.features || []) or1727     │           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1728     │1729     └─ lib/ex_llm/core/embeddings.ex:138: ExLLM.Core.Embeddings.list_providers/017301731     warning: incompatible types given to ExLLM.Providers.Groq.stream_chat/2:17321733         adapter.stream_chat(prepared_messages, options)1734         #=> invoked as ExLLM.Providers.Groq.stream_chat/217351736     given types:17371738         dynamic(), -dynamic(empty_list() or non_empty_list(term(), term()))-17391740     but expected one of:17411742         term(), (none() -> term())17431744     where "adapter" was given the type:17451746         # type: dynamic(1747           ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1748             ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.LMStudio or1749             ExLLM.Providers.Mistral or ExLLM.Providers.Mock or ExLLM.Providers.Ollama or1750             ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter or ExLLM.Providers.Perplexity or1751             ExLLM.Providers.XAI1752         )1753         # from: lib/ex_llm/core/chat.ex1754         {:ok, adapter}17551756     where "options" was given the type:17571758         # type: dynamic(empty_list() or non_empty_list(term(), term()))1759         # from: lib/ex_llm/core/chat.ex:124:221760         Keyword.get(options, :model, provider_or_model)17611762     where "prepared_messages" was given the type:17631764         # type: dynamic()1765         # from: lib/ex_llm/core/chat.ex:136:271766         prepared_messages = prepare_messages_for_provider(provider, messages, options)17671768     type warning found at:1769     │1770 145 │             adapter.stream_chat(prepared_messages, options)1771     │                     ~1772     │1773     └─ lib/ex_llm/core/chat.ex:145:21: ExLLM.Core.Chat.stream_chat/317741775     warning: the following conditional expression:17761777         is_atom(feature)17781779     will always evaluate to:17801781         dynamic(false)17821783     where "feature" was given the types:17841785         # type: binary()1786         # from: lib/ex_llm/core/capabilities.ex:249:281787         feature17881789         # type: binary()1790         # from: lib/ex_llm/core/capabilities.ex:249:421791         is_binary(feature)17921793     type warning found at:1794     │1795 272 │             if is_atom(feature), do: feature, else: nil1796     │             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1797     │1798     └─ lib/ex_llm/core/capabilities.ex:272: ExLLM.Core.Capabilities.normalize_capability/117991800Generated ex_llm app1801==> property_table1802Compiling 8 files (.ex)1803Generated property_table app1804==> nerves_uevent1805 CC uevent.o1806 LD uevent1807Compiling 5 files (.ex)1808Generated nerves_uevent app1809==> nerves_runtime1810Compiling 14 files (.ex)1811Generated nerves_runtime app1812==> toolshed1813Compiling 5 files (.ex)1814Generated toolshed app1815==> nerves_compatibility_test1816Compiling 2 files (.ex)1817Generated nerves_compatibility_test app1818|nerves| Building OTP Release...18191820* [Nerves] validating vm.args1821* skipping runtime configuration (config/runtime.exs not found)1822* creating _build/rpi4/rel/nerves_compatibility_test/releases/0.1.0/vm.args1823Updating base firmware image with Erlang release...1824scrub-otp-release.sh: ERROR: Unexpected executable format for '/work/proj/_build/rpi4/_nerves-tmp/rootfs_overlay/srv/erlang/lib/jaxon-2.0.8/priv/decoder.so'18251826Got:1827 readelf:Advanced Micro Devices X86-64;0x018281829Expecting:1830 readelf:AArch64;0x018311832This file was compiled for the host or a different target and probably1833will not work.18341835Check the following:183618371. If this file comes from a library, that library may be compiling to1838   its source directory under `deps`. Manually clean up the source1839   directory and try building again.184018412. Are you using a path dependency in your mix deps? If so, run1842   'mix clean' in that directory to avoid pulling in any of its1843   build products.184418453. Did you recently upgrade or change your Nerves system? If so,1846   try cleaning and rebuilding this project and its deps.184718484. Are you building outside of Nerves' mix integration? If so,1849   make sure that you've sourced 'nerves-env.sh'.18501851If you are very sure you know what you are doing, you may place an empty1852file in the same directory as the offending file(s) called '.noscrub'.1853This will explicitly disable scrubbing for that directory.18541855If you're still having trouble, please file an issue on Github1856at https://github.com/nerves-project/nerves_system_br/issues.1857