Build log
nerves_system_mangopi_mq_pro
ex_llm 0.8.1 · fail · run ex_llm-0.8.1-1790910398703
1858 of 1858 lines
1Resolving Hex dependencies...2Resolution completed in 0.291s3Unchanged: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: mangopi_mq_pro163 MIX_ENV: prod164165Checking for prebuilt Nerves artifacts...166 Found nerves_system_mangopi_mq_pro in cache167 /home/nerves/.nerves/artifacts/nerves_system_mangopi_mq_pro-portable-0.17.2168 Found nerves_toolchain_riscv64_nerves_linux_gnu in cache169 /home/nerves/.nerves/artifacts/nerves_toolchain_riscv64_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_riscv64_nerves_linux_gnu196Compiling 1 file (.ex)197Generated nerves_toolchain_riscv64_nerves_linux_gnu app198==> nerves_system_mangopi_mq_pro199Generated nerves_system_mangopi_mq_pro app200==> nerves_compatibility_test201202Nerves environment203 MIX_TARGET: mangopi_mq_pro204 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_mangopi_mq_pro/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_mangopi_mq_pro/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_mangopi_mq_pro/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.361 [debug] Downloading NIF from https://github.com/elixir-nx/tokenizers/releases/download/v0.5.1/libex_tokenizers-v0.5.1-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz53053103:16:28.673 [debug] NIF cached at /home/nerves/.cache/rustler_precompiled/precompiled_nifs/libex_tokenizers-v0.5.1-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz and extracted to /work/proj/_build/mangopi_mq_pro/lib/tokenizers/priv/native/libex_tokenizers-v0.5.1-nif-2.15-riscv64gc-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)779Compiling lib/ex_llm/core/structured_outputs.ex (it's taking more than 10s)780 warning: the following clause cannot match because the previous clauses already matched all possible values:781782 error ->783784 it attempts to match on the result of:785786 ExLLM.Testing.ResponseCache.configure_mock_provider(provider)787788 which has the already matched type:789790 dynamic(:no_cache or :ok)791792 where "error" was given the type:793794 # type: dynamic(:no_cache or :ok)795 # from: lib/ex_llm/providers/mock.ex:163:7796 error797798 type warning found at:799 │800 163 │ error ->801 │ ~802 │803 └─ lib/ex_llm/providers/mock.ex:163:13: ExLLM.Providers.Mock.use_cached_responses/1804805 warning: the following conditional expression:806807 available?()808809 will always evaluate to:810811 dynamic(true)812813 type warning found at:814 │815 510 │ unless available?() do816 │ ~~~~~~~~~~~~~~~~~~~~~~817 │818 └─ lib/ex_llm/core/structured_outputs.ex:510: ExLLM.Core.StructuredOutputs.simple_schema/2819820 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: incompatible types given to Kernel.length/1:872873 length(inputs)874875 given types:876877 -dynamic(%ExLLM.Providers.Gemini.Embeddings.EmbedContentRequest{})-878879 but expected one of:880881 list(term())882883 where "inputs" was given the type:884885 # type: dynamic(%ExLLM.Providers.Gemini.Embeddings.EmbedContentRequest{})886 # from: lib/ex_llm/providers/gemini.ex:307:46887 ExLLM.Providers.Gemini.Embeddings.embed_content(model, inputs, api_key: api_key)888889 type warning found at:890 │891 318 │ total_tokens: length(inputs) * 100892 │ ~893 │894 └─ lib/ex_llm/providers/gemini.ex:318:30: ExLLM.Providers.Gemini.embeddings/2895896 warning: the following conditional expression:897898 app_url899900 will always evaluate to:901902 dynamic(not false and not nil)903904 where "app_url" was given the type:905906 # type: dynamic(not false and not nil)907 # from: lib/ex_llm/providers/openrouter.ex:355:13908 app_url = get_app_url(config)909910 type warning found at:911 │912 357 │ if app_url do913 │ ~~~~~~~~~~~~~914 │915 └─ lib/ex_llm/providers/openrouter.ex:357: ExLLM.Providers.OpenRouter.build_headers/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: this clause of defp generation_config_to_json/1 is never used (or it will always fail/warn when invoked)1095 │1096 223 │ defp generation_config_to_json(nil), do: nil1097 │ ~1098 │1099 └─ lib/ex_llm/providers/gemini/content.ex:223:10: ExLLM.Providers.Gemini.Content.GenerateContentRequest.generation_config_to_json/111001101 warning: the following clause is redundant:11021103 {:ok, %{status: 400, body: body}} ->11041105 previous clauses have already matched on the following types:11061107 {:ok, map()}11081109 where "body" was given the type:11101111 # type: dynamic()1112 # from: lib/ex_llm/providers/gemini/content.ex1113 {:ok, %{status: 400, body: body}}11141115 type warning found at:1116 │1117 461 │ {:ok, %{status: 400, body: body}} ->1118 │ ~1119 │1120 └─ lib/ex_llm/providers/gemini/content.ex:461:43: ExLLM.Providers.Gemini.Content.generate_content/311211122 warning: this clause of defp tool_config_to_json/1 is never used (or it will always fail/warn when invoked)1123 │1124 339 │ defp tool_config_to_json(nil), do: nil1125 │ ~1126 │1127 └─ lib/ex_llm/providers/gemini/content.ex:339:10: ExLLM.Providers.Gemini.Content.GenerateContentRequest.tool_config_to_json/111281129 warning: the following clause is redundant:11301131 {:ok, %{status: 401, body: body}} ->11321133 previous clauses have already matched on the following types:11341135 {:ok, map()}11361137 where "body" was given the type:11381139 # type: dynamic()1140 # from: lib/ex_llm/providers/gemini/content.ex1141 {:ok, %{status: 401, body: body}}11421143 type warning found at:1144 │1145 464 │ {:ok, %{status: 401, body: body}} ->1146 │ ~1147 │1148 └─ lib/ex_llm/providers/gemini/content.ex:464:43: ExLLM.Providers.Gemini.Content.generate_content/311491150 warning: the following clause is redundant:11511152 {:ok, %{status: status, body: response_body}}1153 when is_integer(status) and (status >= 200 and status <= 299) ->11541155 previous clauses have already matched on the following types:11561157 {:ok, map()}11581159 where "response_body" was given the type:11601161 # type: dynamic()1162 # from: lib/ex_llm/providers/gemini/base.ex1163 {:ok, %{status: status, body: response_body}}11641165 where "status" was given the types:11661167 # type: integer()1168 # from: lib/ex_llm/providers/gemini/base.ex:471169 is_integer(status)11701171 # type: integer()1172 # from: lib/ex_llm/providers/gemini/base.ex1173 {:ok, %{status: status, body: response_body}}11741175 type warning found at:1176 │1177 47 │ {:ok, %{status: status, body: response_body}} when status in 200..299 ->1178 │ ~1179 │1180 └─ lib/ex_llm/providers/gemini/base.ex:47:77: ExLLM.Providers.Gemini.Base.request/111811182 warning: the following clause is redundant:11831184 {:ok, %{status: 403, body: body}} ->11851186 previous clauses have already matched on the following types:11871188 {:ok, map()}11891190 where "body" was given the type:11911192 # type: dynamic()1193 # from: lib/ex_llm/providers/gemini/content.ex1194 {:ok, %{status: 403, body: body}}11951196 type warning found at:1197 │1198 467 │ {:ok, %{status: 403, body: body}} ->1199 │ ~1200 │1201 └─ lib/ex_llm/providers/gemini/content.ex:467:43: ExLLM.Providers.Gemini.Content.generate_content/312021203 warning: the following clause is redundant:12041205 {:ok, %{status: status, body: response_body}} ->12061207 previous clauses have already matched on the following types:12081209 {:ok, map()}12101211 where "response_body" was given the type:12121213 # type: dynamic()1214 # from: lib/ex_llm/providers/gemini/base.ex1215 {:ok, %{status: status, body: response_body}}12161217 where "status" was given the type:12181219 # type: dynamic()1220 # from: lib/ex_llm/providers/gemini/base.ex1221 {:ok, %{status: status, body: response_body}}12221223 type warning found at:1224 │1225 51 │ {:ok, %{status: status, body: response_body}} ->1226 │ ~1227 │1228 └─ lib/ex_llm/providers/gemini/base.ex:51:53: ExLLM.Providers.Gemini.Base.request/112291230 warning: the following clause is redundant:12311232 {:ok, %{status: 404}} ->12331234 previous clauses have already matched on the following types:12351236 {:ok, map()}12371238 type warning found at:1239 │1240 477 │ {:ok, %{status: 404}} ->1241 │ ~1242 │1243 └─ lib/ex_llm/providers/gemini/content.ex:477:31: ExLLM.Providers.Gemini.Content.generate_content/312441245 warning: the following clause is redundant:12461247 {:ok, %{status: status, body: body}} ->12481249 previous clauses have already matched on the following types:12501251 {:ok, map()}12521253 where "body" was given the type:12541255 # type: dynamic()1256 # from: lib/ex_llm/providers/gemini/content.ex1257 {:ok, %{status: status, body: body}}12581259 where "status" was given the type:12601261 # type: dynamic()1262 # from: lib/ex_llm/providers/gemini/content.ex1263 {:ok, %{status: status, body: body}}12641265 type warning found at:1266 │1267 480 │ {:ok, %{status: status, body: body}} ->1268 │ ~1269 │1270 └─ lib/ex_llm/providers/gemini/content.ex:480:46: ExLLM.Providers.Gemini.Content.generate_content/312711272 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: this clause of defp log_setup_result/2 is never used (or it will always fail/warn when invoked)1323 │1324 343 │ defp log_setup_result(backend, other) do1325 │ ~1326 │1327 └─ lib/ex_llm/infrastructure/circuit_breaker/metrics.ex:343:10: ExLLM.Infrastructure.CircuitBreaker.Metrics.log_setup_result/213281329 warning: the following clause is redundant:13301331 error ->13321333 previous clauses have already matched on the following types:13341335 {:error, :circuit_not_found}13361337 where "error" was given the type:13381339 # type: dynamic({:error, :circuit_not_found} and not {:ok, %{..., __struct__: not_set()}})1340 # from: lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:173:71341 error13421343 type warning found at:1344 │1345 173 │ error ->1346 │ ~1347 │1348 └─ lib/ex_llm/infrastructure/circuit_breaker/health_check.ex:173:13: ExLLM.Infrastructure.CircuitBreaker.HealthCheck.circuit_health/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: incompatible types given to ExLLM.Providers.Groq.stream_chat/2:14231424 adapter.stream_chat(prepared_messages, options)1425 #=> invoked as ExLLM.Providers.Groq.stream_chat/214261427 given types:14281429 dynamic(), -dynamic(empty_list() or non_empty_list(term(), term()))-14301431 but expected one of:14321433 term(), (none() -> term())14341435 where "adapter" was given the type:14361437 # type: dynamic(1438 ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1439 ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.LMStudio or1440 ExLLM.Providers.Mistral or ExLLM.Providers.Mock or ExLLM.Providers.Ollama or1441 ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter or ExLLM.Providers.Perplexity or1442 ExLLM.Providers.XAI1443 )1444 # from: lib/ex_llm/core/chat.ex1445 {:ok, adapter}14461447 where "options" was given the type:14481449 # type: dynamic(empty_list() or non_empty_list(term(), term()))1450 # from: lib/ex_llm/core/chat.ex:124:221451 Keyword.get(options, :model, provider_or_model)14521453 where "prepared_messages" was given the type:14541455 # type: dynamic()1456 # from: lib/ex_llm/core/chat.ex:136:271457 prepared_messages = prepare_messages_for_provider(provider, messages, options)14581459 type warning found at:1460 │1461 145 │ adapter.stream_chat(prepared_messages, options)1462 │ ~1463 │1464 └─ lib/ex_llm/core/chat.ex:145:21: ExLLM.Core.Chat.stream_chat/314651466 warning: the following clause cannot match because the previous clauses already matched all possible values:14671468 _ ->14691470 it attempts to match on the result of:14711472 ExLLM.Infrastructure.Config.ProviderCapabilities.get_adapter_module(provider)14731474 which has the already matched type:14751476 dynamic(1477 ExLLM.Providers.Anthropic or ExLLM.Providers.Bedrock or ExLLM.Providers.Bumblebee or1478 ExLLM.Providers.Gemini or ExLLM.Providers.Groq or ExLLM.Providers.Mock or1479 ExLLM.Providers.Ollama or ExLLM.Providers.OpenAI or ExLLM.Providers.OpenRouter or nil1480 )14811482 type warning found at:1483 │1484 243 │ _ -> {:error, {:invalid_adapter, provider}}1485 │ ~1486 │1487 └─ lib/ex_llm/core/embeddings.ex:243:9: ExLLM.Core.Embeddings.get_adapter/114881489 warning: the right-hand side of || will never be executed:14901491 capabilities.features || ...14921493 because the left-hand side always evaluates to:14941495 dynamic(1496 non_empty_list(1497 :cost_tracking or :function_calling or :json_mode or :reasoning or :streaming or1498 :structured_outputs or :system_messages or :tool_choice or :tool_use or :usage_tracking or1499 :vision or :web_search1500 ) or1501 non_empty_list(1502 :agents or :batch_inference or :code_interpretation or :cost_tracking or1503 :document_understanding or :fine_tuning or :function_calling or :guardrails or :json_mode or1504 :knowledge_bases or :model_evaluation or :multi_provider_models or :provisioned_throughput or1505 :streaming or :system_messages or :tool_use or :usage_tracking or :vision1506 ) or1507 non_empty_list(1508 :batch_processing or :code_execution or :computer_use or :context_caching or :cost_tracking or1509 :document_understanding or :function_calling or :json_mode or :latex_rendering or1510 :long_context or :multiple_images or :prompt_caching or :rate_limiting_headers or1511 :streaming or :structured_outputs or :system_messages or :tool_use or :usage_tracking or1512 :vision or :xml_mode1513 ) or1514 non_empty_list(1515 :context_window_override or :custom_templates or :dynamic_model_listing or :embeddings or1516 :function_calling or :json_mode or :keep_alive or :mirostat or :model_distribution or1517 :model_management or :numa_control or :raw_mode or :seed_control or1518 :stateful_conversations or :stop_sequences or :streaming or :system_messages or1519 :temperature_control or :tool_use or :usage_tracking or :vision1520 ) or1521 non_empty_list(1522 :audio_input or :citation_metadata or :code_execution or :context_caching or :cost_tracking or1523 :document_understanding or :dynamic_model_listing or :embeddings or :function_calling or1524 :grounding or :json_mode or :long_context or :multi_turn_conversations or :multiple_images or1525 :safety_settings or :streaming or :structured_outputs or :system_messages or :tool_use or1526 :usage_tracking or :video_understanding or :vision1527 ) or1528 non_empty_list(1529 :assistants_api or :batch_operations or :code_interpreter or :cost_tracking or1530 :dynamic_model_listing or :embeddings or :file_uploads or :fine_tuning_api or1531 :function_calling or :image_generation or :json_mode or :logprobs or :long_context or1532 :moderation or :parallel_function_calling or :rate_limiting_headers or :reasoning or1533 :response_format or :retrieval or :seed_control or :speech_recognition or1534 :speech_synthesis or :streaming or :structured_outputs or :system_messages or :tool_use or1535 :usage_tracking or :vision1536 )1537 )15381539 where "capabilities" was given the type:15401541 # type: dynamic(1542 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1543 id: :anthropic,1544 name: binary(),1545 description: binary(),1546 documentation_url: binary(),1547 status_url: binary(),1548 endpoints: non_empty_list(:chat or :messages),1549 authentication: non_empty_list(:api_key or :bearer_token),1550 features:1551 non_empty_list(1552 :batch_processing or :code_execution or :computer_use or :context_caching or1553 :cost_tracking or :document_understanding or :function_calling or :json_mode or1554 :latex_rendering or :long_context or :multiple_images or :prompt_caching or1555 :rate_limiting_headers or :streaming or :structured_outputs or :system_messages or1556 :tool_use or :usage_tracking or :vision or :xml_mode1557 ),1558 limitations: %{1559 beta_features: non_empty_list(:computer_use or :context_caching or :prompt_caching),1560 max_context_tokens: integer(),1561 max_image_size: integer(),1562 max_images_per_request: integer(),1563 max_output_tokens: integer(),1564 no_embeddings: true,1565 no_fine_tuning: true,1566 no_image_generation: true1567 }1568 } or1569 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1570 id: :bedrock,1571 name: binary(),1572 description: binary(),1573 documentation_url: binary(),1574 status_url: nil,1575 endpoints:1576 non_empty_list(1577 :chat or :converse or :converse_stream or :embeddings or :invoke_model or1578 :invoke_model_with_response_stream1579 ),1580 authentication: non_empty_list(:aws_signature or :iam_role),1581 features:1582 non_empty_list(1583 :agents or :batch_inference or :code_interpretation or :cost_tracking or1584 :document_understanding or :fine_tuning or :function_calling or :guardrails or1585 :json_mode or :knowledge_bases or :model_evaluation or :multi_provider_models or1586 :provisioned_throughput or :streaming or :system_messages or :tool_use or1587 :usage_tracking or :vision1588 ),1589 limitations: %{1590 model_access_requires_approval: true,1591 pricing_varies_by_model_provider: true,1592 region_specific_availability: true,1593 requires_aws_account: true,1594 some_models_require_commitment: true1595 }1596 } or1597 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1598 id: :bumblebee,1599 name: binary(),1600 description: binary(),1601 documentation_url: binary(),1602 status_url: nil,1603 endpoints: non_empty_list(:chat or :embeddings),1604 authentication: empty_list(),1605 features: non_empty_list(:system_messages or :usage_tracking),1606 limitations: %{1607 limited_model_selection: true,1608 no_cost_tracking: true,1609 no_streaming: true,1610 performance_depends_on_hardware: true,1611 requires_model_download: true1612 }1613 } or1614 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1615 id: :gemini,1616 name: binary(),1617 description: binary(),1618 documentation_url: binary(),1619 status_url: nil,1620 endpoints: non_empty_list(:chat or :count_tokens or :embeddings),1621 authentication: non_empty_list(:api_key or :oauth2 or :service_account),1622 features:1623 non_empty_list(1624 :audio_input or :citation_metadata or :code_execution or :context_caching or1625 :cost_tracking or :document_understanding or :dynamic_model_listing or :embeddings or1626 :function_calling or :grounding or :json_mode or :long_context or1627 :multi_turn_conversations or :multiple_images or :safety_settings or :streaming or1628 :structured_outputs or :system_messages or :tool_use or :usage_tracking or1629 :video_understanding or :vision1630 ),1631 limitations: %{1632 max_context_tokens: integer(),1633 max_images_per_request: integer(),1634 max_output_tokens: integer(),1635 max_video_length_seconds: integer(),1636 no_fine_tuning_via_api: true,1637 rate_limits_vary_by_model: true,1638 requires_google_cloud_for_some_features: true,1639 standard_context_tokens: integer()1640 }1641 } or1642 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1643 id: :groq,1644 name: binary(),1645 description: binary(),1646 documentation_url: binary(),1647 status_url: nil,1648 endpoints: non_empty_list(:chat),1649 authentication: non_empty_list(:api_key),1650 features:1651 non_empty_list(1652 :cost_tracking or :dynamic_model_listing or :function_calling or :json_mode or1653 :rate_limiting_headers or :streaming or :system_messages or :tool_use or1654 :usage_tracking1655 ),1656 limitations: %{limited_model_selection: true, optimized_for_speed_not_size: true}1657 } or1658 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1659 id: :mock,1660 name: binary(),1661 description: binary(),1662 documentation_url: nil,1663 status_url: nil,1664 endpoints: non_empty_list(:chat or :embeddings),1665 authentication: empty_list(),1666 features:1667 non_empty_list(1668 :cost_tracking or :function_calling or :json_mode or :streaming or :system_messages or1669 :tool_use or :usage_tracking or :vision1670 ),1671 limitations: %{for_testing_only: true}1672 } or1673 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1674 id: :ollama,1675 name: binary(),1676 description: binary(),1677 documentation_url: binary(),1678 status_url: nil,1679 endpoints:1680 non_empty_list(1681 :chat or :copy or :delete or :embeddings or :generate or :list or :pull or :push or1682 :show1683 ),1684 authentication: empty_list(),1685 features:1686 non_empty_list(1687 :context_window_override or :custom_templates or :dynamic_model_listing or :embeddings or1688 :function_calling or :json_mode or :keep_alive or :mirostat or :model_distribution or1689 :model_management or :numa_control or :raw_mode or :seed_control or1690 :stateful_conversations or :stop_sequences or :streaming or :system_messages or1691 :temperature_control or :tool_use or :usage_tracking or :vision1692 ),1693 limitations: %{1694 limited_function_calling: true,1695 local_only: true,1696 no_audio_support: true,1697 no_cost_tracking: true,1698 no_image_generation: true,1699 performance_depends_on_hardware: true,1700 vision_depends_on_model: true1701 }1702 } or1703 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1704 id: :openai,1705 name: binary(),1706 description: binary(),1707 documentation_url: binary(),1708 status_url: binary(),1709 endpoints:1710 non_empty_list(1711 :assistants or :audio or :chat or :completions or :embeddings or :files or :fine_tuning or1712 :images or :runs or :threads or :vector_stores1713 ),1714 authentication: non_empty_list(:api_key or :bearer_token),1715 features:1716 non_empty_list(1717 :assistants_api or :batch_operations or :code_interpreter or :cost_tracking or1718 :dynamic_model_listing or :embeddings or :file_uploads or :fine_tuning_api or1719 :function_calling or :image_generation or :json_mode or :logprobs or :long_context or1720 :moderation or :parallel_function_calling or :rate_limiting_headers or :reasoning or1721 :response_format or :retrieval or :seed_control or :speech_recognition or1722 :speech_synthesis or :streaming or :structured_outputs or :system_messages or1723 :tool_use or :usage_tracking or :vision1724 ),1725 limitations: %{1726 audio_file_size_limit: integer(),1727 image_generation_size_limits: non_empty_list(binary()),1728 max_context_tokens: integer(),1729 max_file_size: integer(),1730 max_output_tokens: integer(),1731 rate_limits_vary_by_tier: true1732 }1733 } or1734 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1735 id: :openrouter,1736 name: binary(),1737 description: binary(),1738 documentation_url: binary(),1739 status_url: nil,1740 endpoints: non_empty_list(:chat),1741 authentication: non_empty_list(:api_key),1742 features:1743 non_empty_list(1744 :cost_tracking or :dynamic_model_listing or :function_calling or :rate_limiting_headers or1745 :streaming or :system_messages or :usage_tracking or :vision1746 ),1747 limitations: %{features_depend_on_underlying_provider: true, pricing_markup: true}1748 } or1749 %ExLLM.Infrastructure.Config.ProviderCapabilities.ProviderInfo{1750 id: :xai,1751 name: binary(),1752 description: binary(),1753 documentation_url: binary(),1754 status_url: nil,1755 endpoints: non_empty_list(:chat),1756 authentication: non_empty_list(:api_key),1757 features:1758 non_empty_list(1759 :cost_tracking or :function_calling or :json_mode or :reasoning or :streaming or1760 :structured_outputs or :system_messages or :tool_choice or :tool_use or1761 :usage_tracking or :vision or :web_search1762 ),1763 limitations: %{beta_features: non_empty_list(:reasoning), max_context_tokens: integer()}1764 }1765 )1766 # from: lib/ex_llm/core/embeddings.ex1767 {:ok, capabilities}17681769 type warning found at:1770 │1771 138 │ :embeddings in (capabilities.features || []) or1772 │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1773 │1774 └─ lib/ex_llm/core/embeddings.ex:138: ExLLM.Core.Embeddings.list_providers/017751776 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/mangopi_mq_pro/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/mangopi_mq_pro/_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:RISC-V;0x5, RVC, double-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