liter_llm 2.1.1 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fac5b39a78e7b0ba2fc6be32fdde5f79eb581385a6bf0ec4085faa5565f550f
4
- data.tar.gz: 7abe061b587abd8a7f4f102793fbb44fa878e5b3596e13f09e65601a0ef30e41
3
+ metadata.gz: bf6805425f104609ae273d266f479caa7bad1da164df07f4fac910d5e4bc1755
4
+ data.tar.gz: bfc1cf1a719016bed6b2d5f6e16db7812a72db0a3576f078a0a5b1998264e9a2
5
5
  SHA512:
6
- metadata.gz: d3e83540844a170585517992d47e62efb42420039813609ed64916d15eef804c2ce7d64e6c3c80ec258d1e9e1c6e490a97309f1ad501fa9397829d61a91a4181
7
- data.tar.gz: 3c4abef27ed348e45ad9634ba21bdef6f86f99195b08258497bd0d193608fcf68fa3fd3fc10b1d41da7db1c50e1d05c3b7e29f61c9e86e95a8d7c4371865ce02
6
+ metadata.gz: f5c72c4081f770533a35a7ed331e94147aad519721fc24859c2f1ca263d7d363b6ce9f5a069f81c51d4eb27b053af2d0c2d67512d4d1b8104edf11071b4dc63d
7
+ data.tar.gz: 38d314e536a57092dd56e41f526fde8ea39db45ae552a37131ceaf55f2a76da1dbb19dcabcc2f10ded291e04dee310984ed73436993f8652a3493ddcfaa78056
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <!-- This file is auto-generated by alef — DO NOT EDIT. -->
2
- <!-- alef:hash:bdcf91c6dd61dcdf5cb5a9ed400f53097498b47f4974b6d13171eaeff7d62daa -->
2
+ <!-- alef:hash:7c40d8eb1d087bfcbe645868b4311d50b36fbd38633bc3e137cf5adeb8081fbb -->
3
3
  <!-- To regenerate: alef readme -->
4
4
  <!-- To verify freshness: alef verify -->
5
5
 
@@ -87,7 +87,7 @@
87
87
  </a>
88
88
  </div>
89
89
 
90
- Universal LLM API client for Ruby. Access 165 LLM providers through a single interface with idiomatic Ruby API and native performance.
90
+ Universal LLM API client for Ruby. Access 174 LLM providers through a single interface with idiomatic Ruby API and native performance.
91
91
 
92
92
  ## What This Package Provides
93
93
 
@@ -176,7 +176,7 @@ puts
176
176
 
177
177
  ## Features
178
178
 
179
- ### Supported Providers (165)
179
+ ### Supported Providers (174)
180
180
 
181
181
  Route to any provider using the `provider/model` prefix convention:
182
182
 
@@ -196,7 +196,7 @@ Route to any provider using the `provider/model` prefix convention:
196
196
 
197
197
  ### Key Capabilities
198
198
 
199
- - **Provider Routing** -- Single client for 165 LLM providers via `provider/model` prefix
199
+ - **Provider Routing** -- Single client for 174 LLM providers via `provider/model` prefix
200
200
  - **Local LLMs** — Connect to locally-hosted models via Ollama, LM Studio, vLLM, llama.cpp, and other local inference servers
201
201
  - **Unified API** -- Consistent `chat`, `chat_stream`, `embeddings`, `list_models` interface
202
202
  - **Streaming** -- Real-time token streaming via `chat_stream`
@@ -217,7 +217,7 @@ Built on a compiled Rust core for speed and safety:
217
217
 
218
218
  ## Provider Routing
219
219
 
220
- Route to 165 providers using the `provider/model` prefix convention:
220
+ Route to 174 providers using the `provider/model` prefix convention:
221
221
 
222
222
  ```text
223
223
  openai/gpt-4o
@@ -253,7 +253,7 @@ To use the MCP server inside a coding agent, install the **liter-llm plugin** fr
253
253
 
254
254
  - **[Documentation](https://docs.liter-llm.xberg.io)** -- Full docs and API reference
255
255
  - **[GitHub Repository](https://github.com/xberg-io/liter-llm)** -- Source, issues, and discussions
256
- - **[Provider Registry](https://github.com/xberg-io/liter-llm/blob/main/schemas/providers.json)** -- 165 supported providers
256
+ - **[Provider Registry](https://github.com/xberg-io/liter-llm/blob/main/schemas/providers.json)** -- 174 supported providers
257
257
 
258
258
  ## Part of Xberg.io
259
259
 
@@ -261,7 +261,7 @@ To use the MCP server inside a coding agent, install the **liter-llm plugin** fr
261
261
  - [Xberg Enterprise](https://github.com/xberg-io/xberg-enterprise) — managed extraction API with SDKs, dashboards, and observability.
262
262
  - [crawlberg](https://github.com/xberg-io/crawlberg) — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
263
263
  - [html-to-markdown](https://github.com/xberg-io/html-to-markdown) — fast, lossless HTML→Markdown engine.
264
- - [liter-llm](https://github.com/xberg-io/liter-llm) — universal LLM API client with native bindings for 14 languages and 165 providers.
264
+ - [liter-llm](https://github.com/xberg-io/liter-llm) — universal LLM API client with native bindings for 14 languages and 174 providers.
265
265
  - [tree-sitter-language-pack](https://github.com/xberg-io/tree-sitter-language-pack) — tree-sitter grammars and code-intelligence primitives.
266
266
  - [alef](https://github.com/xberg-io/alef) — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
267
267
  - [Discord](https://discord.gg/xt9WY3GnKR) — community, roadmap, announcements.
@@ -69,9 +69,9 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
69
69
 
70
70
  [[package]]
71
71
  name = "async-compression"
72
- version = "0.4.48"
72
+ version = "0.4.50"
73
73
  source = "registry+https://github.com/rust-lang/crates.io-index"
74
- checksum = "fb61aea1a7def73ee7c350a184f0e70b32c182344e2e75bf70c9b621b83417fd"
74
+ checksum = "ee19bd99b43e3691acbad4e840420a4881cea6c0b66a208125a824f8fd53f5a1"
75
75
  dependencies = [
76
76
  "compression-codecs",
77
77
  "compression-core",
@@ -387,9 +387,9 @@ dependencies = [
387
387
 
388
388
  [[package]]
389
389
  name = "cc"
390
- version = "1.4.7"
390
+ version = "1.6.0"
391
391
  source = "registry+https://github.com/rust-lang/crates.io-index"
392
- checksum = "54413ede23c2daf518f35156dfde027feb2374004d63bd497f983c8db9c0e313"
392
+ checksum = "f74872d07caf508b30a21f6836e7d7016a2eaf7d9ff4f48deaa58cd8a0407630"
393
393
  dependencies = [
394
394
  "find-msvc-tools",
395
395
  "shlex 2.0.1",
@@ -489,9 +489,9 @@ dependencies = [
489
489
 
490
490
  [[package]]
491
491
  name = "compression-codecs"
492
- version = "0.4.43"
492
+ version = "0.4.45"
493
493
  source = "registry+https://github.com/rust-lang/crates.io-index"
494
- checksum = "bef16c47ba2797aa6a909cc37d39911f3a6743811fe7408ac0b0cc0276b656e9"
494
+ checksum = "98fc98460ba0ad5317075d3632b8dfc45d0be8c4a49347c2a38272019717614a"
495
495
  dependencies = [
496
496
  "compression-core",
497
497
  "flate2",
@@ -919,9 +919,9 @@ checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
919
919
 
920
920
  [[package]]
921
921
  name = "find-msvc-tools"
922
- version = "0.1.13"
922
+ version = "0.1.14"
923
923
  source = "registry+https://github.com/rust-lang/crates.io-index"
924
- checksum = "ef25905e51abafe4dcea6c15fec58c57b601cdbd0ee53d22ea1d3016c587d39b"
924
+ checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484"
925
925
 
926
926
  [[package]]
927
927
  name = "flate2"
@@ -1626,9 +1626,9 @@ dependencies = [
1626
1626
 
1627
1627
  [[package]]
1628
1628
  name = "js-sys"
1629
- version = "0.3.105"
1629
+ version = "0.3.106"
1630
1630
  source = "registry+https://github.com/rust-lang/crates.io-index"
1631
- checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e"
1631
+ checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5"
1632
1632
  dependencies = [
1633
1633
  "cfg-if",
1634
1634
  "futures-util",
@@ -1660,9 +1660,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
1660
1660
 
1661
1661
  [[package]]
1662
1662
  name = "libc"
1663
- version = "0.2.189"
1663
+ version = "0.2.190"
1664
1664
  source = "registry+https://github.com/rust-lang/crates.io-index"
1665
- checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
1665
+ checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
1666
1666
 
1667
1667
  [[package]]
1668
1668
  name = "libloading"
@@ -1697,9 +1697,9 @@ checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"
1697
1697
 
1698
1698
  [[package]]
1699
1699
  name = "liter-llm"
1700
- version = "2.1.1"
1700
+ version = "2.1.4"
1701
1701
  source = "registry+https://github.com/rust-lang/crates.io-index"
1702
- checksum = "71e3d2ee6d906bd5bd018254d38737e0287f355d4e9706736128e63bc87009a1"
1702
+ checksum = "35e59e12c35c0f48d16fdd3864f8f4288914a934579214a1394584091af03561"
1703
1703
  dependencies = [
1704
1704
  "ahash",
1705
1705
  "arc-swap",
@@ -1742,7 +1742,7 @@ dependencies = [
1742
1742
 
1743
1743
  [[package]]
1744
1744
  name = "liter-llm-rb"
1745
- version = "2.1.1"
1745
+ version = "2.1.4"
1746
1746
  dependencies = [
1747
1747
  "futures",
1748
1748
  "liter-llm",
@@ -1786,9 +1786,9 @@ checksum = "fc04a4c58212d57930a24bf47d3fa87485264a3a054e9c10e042eb373573ad3c"
1786
1786
 
1787
1787
  [[package]]
1788
1788
  name = "magnus"
1789
- version = "0.9.0"
1789
+ version = "0.9.2"
1790
1790
  source = "registry+https://github.com/rust-lang/crates.io-index"
1791
- checksum = "379d50b6eea4ca84074ccd3e551eb9b07f7865194d5b3198325317e9ef78e5e9"
1791
+ checksum = "b9068710e00d21be762edca59b9c4c8946dbdb29820d4f76ad559afea07982c9"
1792
1792
  dependencies = [
1793
1793
  "magnus-macros",
1794
1794
  "rb-sys",
@@ -1798,9 +1798,9 @@ dependencies = [
1798
1798
 
1799
1799
  [[package]]
1800
1800
  name = "magnus-macros"
1801
- version = "0.9.0"
1801
+ version = "0.9.1"
1802
1802
  source = "registry+https://github.com/rust-lang/crates.io-index"
1803
- checksum = "4ca70566af98184bb92d4d9853daaf533c1a3418b9570d0547ea44970035f3fe"
1803
+ checksum = "9dafde2eeb66f090e0f326112323eb8324b12cb32b5d1210e541d3df6b0ce77e"
1804
1804
  dependencies = [
1805
1805
  "proc-macro2",
1806
1806
  "quote",
@@ -1867,9 +1867,9 @@ dependencies = [
1867
1867
 
1868
1868
  [[package]]
1869
1869
  name = "mio"
1870
- version = "1.2.3"
1870
+ version = "1.2.4"
1871
1871
  source = "registry+https://github.com/rust-lang/crates.io-index"
1872
- checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8"
1872
+ checksum = "1788edb87fdc09c7e26304471e2f5be8cdefb1b6930d6e3985fc02ff53bf86ee"
1873
1873
  dependencies = [
1874
1874
  "libc",
1875
1875
  "wasi",
@@ -1983,9 +1983,9 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
1983
1983
 
1984
1984
  [[package]]
1985
1985
  name = "opendal"
1986
- version = "0.59.3"
1986
+ version = "0.59.4"
1987
1987
  source = "registry+https://github.com/rust-lang/crates.io-index"
1988
- checksum = "ef16fe6b19b73b49ce39e3e0f4cec27e54789eee5d5f752cb2d26bd3e9449686"
1988
+ checksum = "3cbd193aec6d62efaff87611dfae52c132aed650bb3cb0c684c0a9394f09a42a"
1989
1989
  dependencies = [
1990
1990
  "opendal-core",
1991
1991
  "opendal-service-fs",
@@ -1995,9 +1995,9 @@ dependencies = [
1995
1995
 
1996
1996
  [[package]]
1997
1997
  name = "opendal-core"
1998
- version = "0.59.3"
1998
+ version = "0.59.4"
1999
1999
  source = "registry+https://github.com/rust-lang/crates.io-index"
2000
- checksum = "ddff5c648dcb3922c2bec71e0d26e881ddf9c367cb7c9a59ed7f2d39a4f38218"
2000
+ checksum = "54b5555d753dd6a6383dc0891254b72f3cdc40c011ba0372b560e0ae5aa29f5c"
2001
2001
  dependencies = [
2002
2002
  "anyhow",
2003
2003
  "asyncband",
@@ -2021,9 +2021,9 @@ dependencies = [
2021
2021
 
2022
2022
  [[package]]
2023
2023
  name = "opendal-http-transport-reqwest"
2024
- version = "0.59.3"
2024
+ version = "0.59.4"
2025
2025
  source = "registry+https://github.com/rust-lang/crates.io-index"
2026
- checksum = "56fcee7ac4b4b815d38346ceb4f3a5d7ef18869c369e000cc7f622b51bcfa938"
2026
+ checksum = "4d6588678f3040a3eab1819364dcbc6a746a8286d1ceb23a70a6614faa01dc6c"
2027
2027
  dependencies = [
2028
2028
  "bytes",
2029
2029
  "futures",
@@ -2035,9 +2035,9 @@ dependencies = [
2035
2035
 
2036
2036
  [[package]]
2037
2037
  name = "opendal-service-fs"
2038
- version = "0.59.3"
2038
+ version = "0.59.4"
2039
2039
  source = "registry+https://github.com/rust-lang/crates.io-index"
2040
- checksum = "c14b25aa288453e1b9ed9b3c9024b467676ce4a3fed456441c9d6af8aa2643f3"
2040
+ checksum = "ec5c16fe91b77c0364f66546a1c32b2999e9c3c3c75c2e908a282268e0890bac"
2041
2041
  dependencies = [
2042
2042
  "bytes",
2043
2043
  "log",
@@ -2049,9 +2049,9 @@ dependencies = [
2049
2049
 
2050
2050
  [[package]]
2051
2051
  name = "opendal-service-redis"
2052
- version = "0.59.3"
2052
+ version = "0.59.4"
2053
2053
  source = "registry+https://github.com/rust-lang/crates.io-index"
2054
- checksum = "0c9882dff1e78bde3aabacebdc6fc49a41368cb158cd3e1c2b6d9db8ea8e414b"
2054
+ checksum = "67bdcf0db50dafddb62b3a62c21bd81e8e6ae200852b1887d594ce722d052570"
2055
2055
  dependencies = [
2056
2056
  "asyncband",
2057
2057
  "bytes",
@@ -2064,9 +2064,9 @@ dependencies = [
2064
2064
 
2065
2065
  [[package]]
2066
2066
  name = "opendal-service-s3"
2067
- version = "0.59.3"
2067
+ version = "0.59.4"
2068
2068
  source = "registry+https://github.com/rust-lang/crates.io-index"
2069
- checksum = "9de51cba3b83c8130e211045fd2b9d454c4b73f557ad88b71244c2ab943b2b05"
2069
+ checksum = "1d83e716c25a81fe2ca701894b8e14b9966acca3812af250e50132accb19da02"
2070
2070
  dependencies = [
2071
2071
  "base64 0.23.1",
2072
2072
  "bytes",
@@ -2283,9 +2283,9 @@ dependencies = [
2283
2283
 
2284
2284
  [[package]]
2285
2285
  name = "powerfmt"
2286
- version = "0.2.0"
2286
+ version = "0.2.1"
2287
2287
  source = "registry+https://github.com/rust-lang/crates.io-index"
2288
- checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
2288
+ checksum = "4a6394b9e965e73d0a289ee54f589087e2c676aedf60885baf52c76b771e4958"
2289
2289
 
2290
2290
  [[package]]
2291
2291
  name = "ppv-lite86"
@@ -3082,9 +3082,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
3082
3082
 
3083
3083
  [[package]]
3084
3084
  name = "smallvec"
3085
- version = "1.16.1"
3085
+ version = "1.16.2"
3086
3086
  source = "registry+https://github.com/rust-lang/crates.io-index"
3087
- checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891"
3087
+ checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e"
3088
3088
 
3089
3089
  [[package]]
3090
3090
  name = "socket2"
@@ -3318,9 +3318,9 @@ dependencies = [
3318
3318
 
3319
3319
  [[package]]
3320
3320
  name = "tokio"
3321
- version = "1.53.1"
3321
+ version = "1.53.2"
3322
3322
  source = "registry+https://github.com/rust-lang/crates.io-index"
3323
- checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
3323
+ checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044"
3324
3324
  dependencies = [
3325
3325
  "bytes",
3326
3326
  "libc",
@@ -3356,9 +3356,9 @@ dependencies = [
3356
3356
 
3357
3357
  [[package]]
3358
3358
  name = "tokio-rustls"
3359
- version = "0.26.5"
3359
+ version = "0.26.6"
3360
3360
  source = "registry+https://github.com/rust-lang/crates.io-index"
3361
- checksum = "b0c85f2c3ef0b1cd58b36682f4b17aaa995f0e5db534d85692b4903abce21f67"
3361
+ checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db"
3362
3362
  dependencies = [
3363
3363
  "rustls",
3364
3364
  "tokio",
@@ -3680,9 +3680,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
3680
3680
 
3681
3681
  [[package]]
3682
3682
  name = "uuid"
3683
- version = "1.26.1"
3683
+ version = "1.27.0"
3684
3684
  source = "registry+https://github.com/rust-lang/crates.io-index"
3685
- checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce"
3685
+ checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a"
3686
3686
  dependencies = [
3687
3687
  "getrandom 0.4.3",
3688
3688
  "js-sys",
@@ -3750,9 +3750,9 @@ dependencies = [
3750
3750
 
3751
3751
  [[package]]
3752
3752
  name = "wasm-bindgen"
3753
- version = "0.2.128"
3753
+ version = "0.2.129"
3754
3754
  source = "registry+https://github.com/rust-lang/crates.io-index"
3755
- checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf"
3755
+ checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409"
3756
3756
  dependencies = [
3757
3757
  "cfg-if",
3758
3758
  "once_cell",
@@ -3764,19 +3764,20 @@ dependencies = [
3764
3764
 
3765
3765
  [[package]]
3766
3766
  name = "wasm-bindgen-futures"
3767
- version = "0.4.78"
3767
+ version = "0.4.79"
3768
3768
  source = "registry+https://github.com/rust-lang/crates.io-index"
3769
- checksum = "6ef4c5d3d2cdf5c54f4231181768f5510842e350db025faf1f7163b1030ed928"
3769
+ checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e"
3770
3770
  dependencies = [
3771
3771
  "js-sys",
3772
+ "tokio",
3772
3773
  "wasm-bindgen",
3773
3774
  ]
3774
3775
 
3775
3776
  [[package]]
3776
3777
  name = "wasm-bindgen-macro"
3777
- version = "0.2.128"
3778
+ version = "0.2.129"
3778
3779
  source = "registry+https://github.com/rust-lang/crates.io-index"
3779
- checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed"
3780
+ checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535"
3780
3781
  dependencies = [
3781
3782
  "quote",
3782
3783
  "wasm-bindgen-macro-support",
@@ -3784,9 +3785,9 @@ dependencies = [
3784
3785
 
3785
3786
  [[package]]
3786
3787
  name = "wasm-bindgen-macro-support"
3787
- version = "0.2.128"
3788
+ version = "0.2.129"
3788
3789
  source = "registry+https://github.com/rust-lang/crates.io-index"
3789
- checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a"
3790
+ checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7"
3790
3791
  dependencies = [
3791
3792
  "bumpalo",
3792
3793
  "proc-macro2",
@@ -3797,9 +3798,9 @@ dependencies = [
3797
3798
 
3798
3799
  [[package]]
3799
3800
  name = "wasm-bindgen-shared"
3800
- version = "0.2.128"
3801
+ version = "0.2.129"
3801
3802
  source = "registry+https://github.com/rust-lang/crates.io-index"
3802
- checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e"
3803
+ checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6"
3803
3804
  dependencies = [
3804
3805
  "unicode-ident",
3805
3806
  ]
@@ -3819,9 +3820,9 @@ dependencies = [
3819
3820
 
3820
3821
  [[package]]
3821
3822
  name = "web-sys"
3822
- version = "0.3.105"
3823
+ version = "0.3.106"
3823
3824
  source = "registry+https://github.com/rust-lang/crates.io-index"
3824
- checksum = "9fbddc4a036f00ec4f18c83445bd3115cb306a91da554919a099d9222fe4a7f8"
3825
+ checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4"
3825
3826
  dependencies = [
3826
3827
  "js-sys",
3827
3828
  "wasm-bindgen",
@@ -4169,9 +4170,9 @@ dependencies = [
4169
4170
 
4170
4171
  [[package]]
4171
4172
  name = "yoke-derive"
4172
- version = "0.8.3"
4173
+ version = "0.8.4"
4173
4174
  source = "registry+https://github.com/rust-lang/crates.io-index"
4174
- checksum = "33811428bee40dbceb6d545e95754741d17a6aef9a4849f0fd62e2ba4f412a78"
4175
+ checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71"
4175
4176
  dependencies = [
4176
4177
  "proc-macro2",
4177
4178
  "quote",
@@ -4181,18 +4182,18 @@ dependencies = [
4181
4182
 
4182
4183
  [[package]]
4183
4184
  name = "zerocopy"
4184
- version = "0.8.58"
4185
+ version = "0.8.59"
4185
4186
  source = "registry+https://github.com/rust-lang/crates.io-index"
4186
- checksum = "c17e8fafad82b542ff3717217ecdc736231b59e387768c9630123b4ce4d2db44"
4187
+ checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb"
4187
4188
  dependencies = [
4188
4189
  "zerocopy-derive",
4189
4190
  ]
4190
4191
 
4191
4192
  [[package]]
4192
4193
  name = "zerocopy-derive"
4193
- version = "0.8.58"
4194
+ version = "0.8.59"
4194
4195
  source = "registry+https://github.com/rust-lang/crates.io-index"
4195
- checksum = "595f56e044df4f46a0c9a626f65c3d99eb8488f7e8a8baa12dd76326d9710bf2"
4196
+ checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82"
4196
4197
  dependencies = [
4197
4198
  "proc-macro2",
4198
4199
  "quote",
@@ -1,11 +1,11 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:8ee1b6e150f8695841cbc61738b1d6c4711c9a9fe834562664a5bfb006ed704a
2
+ # alef:hash:b7764342c62963d9887c5dda3446e9c78257e2e56c28e74236e4f8d8111ea4b6
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify
5
5
 
6
6
  [package]
7
7
  name = "liter-llm-rb"
8
- version = "2.1.1"
8
+ version = "2.1.4"
9
9
  edition = "2024"
10
10
  license = "MIT"
11
11
  description = "Universal LLM API client with Rust-powered polyglot bindings."
@@ -31,7 +31,7 @@ wasm-http = ["liter-llm/wasm-http"]
31
31
 
32
32
  [dependencies]
33
33
  futures = "0.3"
34
- liter-llm = { version = "2.1.1", features = ["native-http", "full"] }
34
+ liter-llm = { version = "2.1.4", features = ["native-http", "full"] }
35
35
  magnus = "0.9"
36
36
  rb-sys = ">=0.9.130, <0.10"
37
37
  serde = { version = "1", features = ["derive"] }
@@ -1,5 +1,5 @@
1
1
  // This file is auto-generated by alef. DO NOT EDIT.
2
- // alef:hash:b9959449e602c92504188e4992627401dc218754267986b232c4fb71d53a59c3
2
+ // alef:hash:0298ffd63d1edf1d3ee3e4b3928b7608944a5687feff10faee95958dce861a54
3
3
  // Re-generate with: alef generate
4
4
  #![allow(dead_code, unused_imports, unused_variables)]
5
5
  #![allow(
@@ -1444,7 +1444,7 @@ unsafe impl TryConvertOwned for CatalogRefreshConfig {}
1444
1444
 
1445
1445
  impl Default for CatalogRefreshConfig {
1446
1446
  fn default() -> Self {
1447
- liter_llm::cost::refresh::CatalogRefreshConfig::default().into()
1447
+ liter_llm::CatalogRefreshConfig::default().into()
1448
1448
  }
1449
1449
  }
1450
1450
 
@@ -13788,7 +13788,7 @@ fn clear() -> () {
13788
13788
  }
13789
13789
 
13790
13790
  fn clear_catalog_overlay() -> () {
13791
- liter_llm::cost::refresh::clear_catalog_overlay()
13791
+ liter_llm::clear_catalog_overlay()
13792
13792
  }
13793
13793
 
13794
13794
  fn completion_cost(model: String, prompt_tokens: u64, completion_tokens: u64) -> Option<f64> {
@@ -13937,7 +13937,7 @@ fn ensure_crypto_provider() -> () {
13937
13937
  }
13938
13938
 
13939
13939
  fn install_catalog_overlay_from_str(catalog_json: String) -> Result<(), Error> {
13940
- let result = liter_llm::cost::refresh::install_catalog_overlay_from_str(&catalog_json).map_err(|e| {
13940
+ let result = liter_llm::install_catalog_overlay_from_str(&catalog_json).map_err(|e| {
13941
13941
  magnus::Error::new(
13942
13942
  unsafe { Ruby::get_unchecked() }.exception_runtime_error(),
13943
13943
  e.to_string(),
@@ -13976,7 +13976,7 @@ fn refresh_catalog(args: &[magnus::Value]) -> Result<RefreshOutcome, Error> {
13976
13976
  .enable_all()
13977
13977
  .build()
13978
13978
  .map_err(|e| e.to_string())?;
13979
- rt.block_on(async { liter_llm::cost::refresh::refresh_catalog(&config_core).await })
13979
+ rt.block_on(async { liter_llm::refresh_catalog(&config_core).await })
13980
13980
  .map_err(|e| e.to_string())
13981
13981
  });
13982
13982
  let result = async_result
@@ -14005,7 +14005,7 @@ fn refresh_catalog_async(args: &[magnus::Value]) -> Result<RefreshOutcome, Error
14005
14005
  .enable_all()
14006
14006
  .build()
14007
14007
  .map_err(|e| e.to_string())?;
14008
- rt.block_on(async { liter_llm::cost::refresh::refresh_catalog(&config_core).await })
14008
+ rt.block_on(async { liter_llm::refresh_catalog(&config_core).await })
14009
14009
  .map_err(|e| e.to_string())
14010
14010
  });
14011
14011
  let result = async_result
@@ -14309,7 +14309,7 @@ impl From<liter_llm::CacheConfig> for CacheConfig {
14309
14309
  }
14310
14310
 
14311
14311
  #[allow(clippy::needless_update)]
14312
- impl From<CatalogRefreshConfig> for liter_llm::cost::refresh::CatalogRefreshConfig {
14312
+ impl From<CatalogRefreshConfig> for liter_llm::CatalogRefreshConfig {
14313
14313
  fn from(val: CatalogRefreshConfig) -> Self {
14314
14314
  Self {
14315
14315
  enabled: val.enabled,
@@ -14322,8 +14322,8 @@ impl From<CatalogRefreshConfig> for liter_llm::cost::refresh::CatalogRefreshConf
14322
14322
  }
14323
14323
 
14324
14324
  #[allow(clippy::redundant_closure)]
14325
- impl From<liter_llm::cost::refresh::CatalogRefreshConfig> for CatalogRefreshConfig {
14326
- fn from(val: liter_llm::cost::refresh::CatalogRefreshConfig) -> Self {
14325
+ impl From<liter_llm::CatalogRefreshConfig> for CatalogRefreshConfig {
14326
+ fn from(val: liter_llm::CatalogRefreshConfig) -> Self {
14327
14327
  Self {
14328
14328
  enabled: val.enabled,
14329
14329
  source_url: val.source_url.to_string(),
@@ -16858,7 +16858,7 @@ impl From<liter_llm::types::ReasoningEffort> for ReasoningEffort {
16858
16858
  }
16859
16859
  }
16860
16860
 
16861
- impl From<RefreshOutcome> for liter_llm::cost::refresh::RefreshOutcome {
16861
+ impl From<RefreshOutcome> for liter_llm::RefreshOutcome {
16862
16862
  fn from(val: RefreshOutcome) -> Self {
16863
16863
  match val {
16864
16864
  RefreshOutcome::Disabled => Self::Disabled,
@@ -16868,12 +16868,12 @@ impl From<RefreshOutcome> for liter_llm::cost::refresh::RefreshOutcome {
16868
16868
  }
16869
16869
  }
16870
16870
 
16871
- impl From<liter_llm::cost::refresh::RefreshOutcome> for RefreshOutcome {
16872
- fn from(val: liter_llm::cost::refresh::RefreshOutcome) -> Self {
16871
+ impl From<liter_llm::RefreshOutcome> for RefreshOutcome {
16872
+ fn from(val: liter_llm::RefreshOutcome) -> Self {
16873
16873
  match val {
16874
- liter_llm::cost::refresh::RefreshOutcome::Disabled => Self::Disabled,
16875
- liter_llm::cost::refresh::RefreshOutcome::FromCache => Self::FromCache,
16876
- liter_llm::cost::refresh::RefreshOutcome::Fetched => Self::Fetched,
16874
+ liter_llm::RefreshOutcome::Disabled => Self::Disabled,
16875
+ liter_llm::RefreshOutcome::FromCache => Self::FromCache,
16876
+ liter_llm::RefreshOutcome::Fetched => Self::Fetched,
16877
16877
  }
16878
16878
  }
16879
16879
  }
@@ -17019,16 +17019,16 @@ impl From<liter_llm::types::UserContent> for UserContent {
17019
17019
  }
17020
17020
  }
17021
17021
 
17022
- /// Convert a `liter_llm::cost::refresh::CatalogRefreshError` error to a Magnus runtime error.
17022
+ /// Convert a `liter_llm::CatalogRefreshError` error to a Magnus runtime error.
17023
17023
  #[allow(dead_code)]
17024
- fn catalog_refresh_error_to_magnus_err(e: liter_llm::cost::refresh::CatalogRefreshError) -> magnus::Error {
17024
+ fn catalog_refresh_error_to_magnus_err(e: liter_llm::CatalogRefreshError) -> magnus::Error {
17025
17025
  let msg = e.to_string();
17026
17026
  magnus::Error::new(unsafe { magnus::Ruby::get_unchecked() }.exception_runtime_error(), msg)
17027
17027
  }
17028
17028
 
17029
- /// Convert a `liter_llm::error::LiterLlmError` error to a Magnus runtime error.
17029
+ /// Convert a `liter_llm::LiterLlmError` error to a Magnus runtime error.
17030
17030
  #[allow(dead_code)]
17031
- fn liter_llm_error_to_magnus_err(e: liter_llm::error::LiterLlmError) -> magnus::Error {
17031
+ fn liter_llm_error_to_magnus_err(e: liter_llm::LiterLlmError) -> magnus::Error {
17032
17032
  let msg = e.to_string();
17033
17033
  magnus::Error::new(unsafe { magnus::Ruby::get_unchecked() }.exception_runtime_error(), msg)
17034
17034
  }
@@ -17036,14 +17036,16 @@ fn liter_llm_error_to_magnus_err(e: liter_llm::error::LiterLlmError) -> magnus::
17036
17036
  #[magnus::wrap(class = "LiterLlmErrorInfo", free_immediately, size)]
17037
17037
  pub struct LiterLlmErrorInfo {
17038
17038
  status_code: u16,
17039
+ retry_after: Option<u64>,
17039
17040
  is_transient: bool,
17040
17041
  error_type: String,
17041
17042
  }
17042
17043
 
17043
17044
  #[allow(dead_code)]
17044
- fn liter_llm_error_info(e: &liter_llm::error::LiterLlmError) -> LiterLlmErrorInfo {
17045
+ fn liter_llm_error_info(e: &liter_llm::LiterLlmError) -> LiterLlmErrorInfo {
17045
17046
  LiterLlmErrorInfo {
17046
17047
  status_code: e.status_code(),
17048
+ retry_after: e.retry_after().map(|d| d.as_millis() as u64),
17047
17049
  is_transient: e.is_transient(),
17048
17050
  error_type: e.error_type().to_string(),
17049
17051
  }
@@ -17055,6 +17057,11 @@ impl LiterLlmErrorInfo {
17055
17057
  self.status_code
17056
17058
  }
17057
17059
 
17060
+ /// `retry_after` in whole milliseconds (nil when absent).
17061
+ pub fn retry_after(&self) -> Option<u64> {
17062
+ self.retry_after
17063
+ }
17064
+
17058
17065
  /// Returns `true` if the error is transient and a retry may succeed.
17059
17066
  pub fn transient(&self) -> bool {
17060
17067
  self.is_transient
@@ -18637,6 +18644,7 @@ fn ruby_init(ruby: &Ruby) -> Result<(), Error> {
18637
18644
 
18638
18645
  let liter_llm_error_info_class = module.define_class("LiterLlmErrorInfo", ruby.class_object())?;
18639
18646
  liter_llm_error_info_class.define_method("status_code", magnus::method!(LiterLlmErrorInfo::status_code, 0))?;
18647
+ liter_llm_error_info_class.define_method("retry_after", magnus::method!(LiterLlmErrorInfo::retry_after, 0))?;
18640
18648
  liter_llm_error_info_class.define_method("transient?", magnus::method!(LiterLlmErrorInfo::transient, 0))?;
18641
18649
  liter_llm_error_info_class.define_method("error_type", magnus::method!(LiterLlmErrorInfo::error_type, 0))?;
18642
18650
 
@@ -1,10 +1,10 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:5bcf51fe4904f5876e8b2685e02d50a1d932faa82247d16cedafb3a57552930e
2
+ # alef:hash:ec4b9fddcab939ec9af3ee75ea79f76247e89cb4488bdb821150c16ebeb362c4
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify
5
5
  # frozen_string_literal: true
6
6
 
7
7
  module LiterLlm
8
8
  ## The version string for this package.
9
- VERSION = "2.1.1"
9
+ VERSION = "2.1.4"
10
10
  end
data/sig/types.rbs CHANGED
@@ -1,5 +1,5 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:7da61d9dc1d0d9879fe5db611ee4b5a2abf07cd3f806331e8137f8385bba9527
2
+ # alef:hash:3ecfb5f1cc485b2ce1056911e2946e2b5473b5d5383da6a90dd8d1772fb73f3e
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify
5
5
 
@@ -277,31 +277,31 @@ module LiterLlm
277
277
  end
278
278
 
279
279
  class DefaultClient
280
- def chat: (ChatCompletionRequest req) -> ChatCompletionResponse
280
+ def chat_async: (ChatCompletionRequest req) -> ChatCompletionResponse
281
281
  def chat_stream: (ChatCompletionRequest req) -> Enumerator[ChatCompletionChunk]
282
- def embed: (EmbeddingRequest req) -> EmbeddingResponse
283
- def list_models: () -> ModelsListResponse
284
- def image_generate: (CreateImageRequest req) -> ImagesResponse
285
- def speech: (CreateSpeechRequest req) -> String
286
- def transcribe: (CreateTranscriptionRequest req) -> TranscriptionResponse
287
- def moderate: (ModerationRequest req) -> ModerationResponse
288
- def rerank: (RerankRequest req) -> RerankResponse
289
- def search: (SearchRequest req) -> SearchResponse
290
- def ocr: (OcrRequest req) -> OcrResponse
291
- def create_file: (CreateFileRequest req) -> FileObject
292
- def retrieve_file: (String file_id) -> FileObject
293
- def delete_file: (String file_id) -> DeleteResponse
294
- def list_files: (?FileListQuery query) -> FileListResponse
295
- def file_content: (String file_id) -> String
296
- def create_batch: (CreateBatchRequest req) -> BatchObject
297
- def retrieve_batch: (String batch_id) -> BatchObject
298
- def list_batches: (?BatchListQuery query) -> BatchListResponse
299
- def cancel_batch: (String batch_id) -> BatchObject
300
- def fetch_batch_for_polling: (String batch_id) -> BatchObject
301
- def wait_for_batch: (String batch_id, WaitForBatchConfig config) -> BatchObject
302
- def create_response: (CreateResponseRequest req) -> ResponseObject
303
- def retrieve_response: (String response_id) -> ResponseObject
304
- def cancel_response: (String response_id) -> ResponseObject
282
+ def embed_async: (EmbeddingRequest req) -> EmbeddingResponse
283
+ def list_models_async: () -> ModelsListResponse
284
+ def image_generate_async: (CreateImageRequest req) -> ImagesResponse
285
+ def speech_async: (CreateSpeechRequest req) -> String
286
+ def transcribe_async: (CreateTranscriptionRequest req) -> TranscriptionResponse
287
+ def moderate_async: (ModerationRequest req) -> ModerationResponse
288
+ def rerank_async: (RerankRequest req) -> RerankResponse
289
+ def search_async: (SearchRequest req) -> SearchResponse
290
+ def ocr_async: (OcrRequest req) -> OcrResponse
291
+ def create_file_async: (CreateFileRequest req) -> FileObject
292
+ def retrieve_file_async: (String file_id) -> FileObject
293
+ def delete_file_async: (String file_id) -> DeleteResponse
294
+ def list_files_async: (?FileListQuery query) -> FileListResponse
295
+ def file_content_async: (String file_id) -> String
296
+ def create_batch_async: (CreateBatchRequest req) -> BatchObject
297
+ def retrieve_batch_async: (String batch_id) -> BatchObject
298
+ def list_batches_async: (?BatchListQuery query) -> BatchListResponse
299
+ def cancel_batch_async: (String batch_id) -> BatchObject
300
+ def fetch_batch_for_polling_async: (String batch_id) -> BatchObject
301
+ def wait_for_batch_async: (String batch_id, WaitForBatchConfig config) -> BatchObject
302
+ def create_response_async: (CreateResponseRequest req) -> ResponseObject
303
+ def retrieve_response_async: (String response_id) -> ResponseObject
304
+ def cancel_response_async: (String response_id) -> ResponseObject
305
305
  end
306
306
 
307
307
  class DeleteResponse
@@ -1041,6 +1041,7 @@ module LiterLlm
1041
1041
 
1042
1042
  class LiterLlmErrorInfo
1043
1043
  def status_code: () -> Integer
1044
+ def retry_after: () -> Integer?
1044
1045
  def transient?: () -> bool
1045
1046
  def error_type: () -> String
1046
1047
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liter_llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Na'aman Hirschfeld
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-25 00:00:00.000000000 Z
11
+ date: 2026-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys