lex-llm-mlx 0.3.14 → 0.5.2

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: 9a5f07677e062b3ceae93a12bab74008e5e35db5a09b46b9320cfbc31a8af69d
4
- data.tar.gz: 0f6a18d0bf42ab8cf68badcbd2df4f99c79010628a490f795492a4a3c598d178
3
+ metadata.gz: 7e5f9a7dab605748337a587418be077e253a7e6b497c6b014ecba9875043c6ad
4
+ data.tar.gz: 3114258fbcc3dd3b6f184f28d83bc14c866187947a08c42bf6128f86e002c9c3
5
5
  SHA512:
6
- metadata.gz: 8927c48ba63e30e983815492651b406b29a54eaf1be1c590827cef602f643e24d7560bb9dbc904a59bcfa0e7181a8e82c397b0a956f266fea1a84b0af160b808
7
- data.tar.gz: e6b5cf2b773446df1643da169106b68e8e71b69df77379c24e498b69a710472ccf51180fc147fcccec49a7d71cb787df783072a1e08664aa0dc23d412308ed69
6
+ metadata.gz: 12ae5ec7295decb7048148673f35daac26c2737f0739b4d236a2097ac07d6b7c5eddcad7af5bbde8fc7e6c2ca3d4bea570a2021ff6d0b30f2eff1e45711dc836
7
+ data.tar.gz: d227264342de019670a47624dcf121ae21c9ed9653d3e65c47d15ff754c05da407b44b29e20de06ee357f21b5bf34fffe7fac9869c1cacecefcd2ed21fd42c62
data/.rubocop.yml CHANGED
@@ -14,5 +14,13 @@ Metrics/BlockLength:
14
14
  - spec/**/*
15
15
  Metrics/MethodLength:
16
16
  Enabled: false
17
+ RSpec/ExampleLength:
18
+ Enabled: false
17
19
  RSpec/MultipleExpectations:
18
20
  Enabled: false
21
+ Layout/LineLength:
22
+ Exclude:
23
+ - spec/**/*
24
+ RSpec/SpecFilePathFormat:
25
+ CustomTransform:
26
+ Actor: actors
data/CHANGELOG.md CHANGED
@@ -1,5 +1,73 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.5.2] - 2026-08-18
4
+
5
+ ### Fixed
6
+ - Remove synthetic-default discovery filtering and its once-per-boot warning; configured discovery now returns every instance entry.
7
+
8
+ ## [0.5.1] - 2026-08-17
9
+
10
+ ### Changed
11
+ - **Single actor registration** — the provider module no longer extends `Core` at file level, so the
12
+ boot-time submodule walk skips it and the gem's own top-level extension load is the sole actor
13
+ registration (eliminates the double-claim / `FencedPublisherError`).
14
+ - The synthetic-default skip warn now fires once per boot instead of every discovery tick (was
15
+ permanent WARN noise — an unconfigured provider is the normal state).
16
+ - **SSOT v3 fail-forward identity** — Instance identity is now the operator's config name
17
+ (`InstanceKey.instance_id` = the frozen config key the router uses for `instances.<name>`
18
+ lookups). The normalized endpoint `host:port` (plus optional API key SHA256 fingerprint) is
19
+ carried as the secondary `physical_id` for dedup and diagnostics only, never identity.
20
+ Two config names at the same endpoint remain distinct instances (no endpoint collapse).
21
+ All `Inventory::Publisher` calls now pass `physical_id:`.
22
+ - Bump floor to `lex-llm >= 0.7.1` (carries the SSOT v3 `InstanceKey` `physical_id` and the
23
+ Publisher `physical_id:` kwargs; 0.7.0 publishers reject the `physical_id:` kwarg).
24
+
25
+ ### Added
26
+ - Conformance coverage for config-name identity, secondary physical id, and no endpoint
27
+ collapse, plus an authoritative operation-evidence check pinning that embedding models
28
+ publish `chat`/`stream_chat` as `:unsupported` and `embed` as `:supported` so a plain chat
29
+ request cannot misroute to an embedding-only instance.
30
+
31
+ ## [0.5.0] - 2026-08-13
32
+
33
+ ### Changed
34
+ - **SSOT v3 remediation pass 2** — Resolve all residual compliance violations from the first pass.
35
+ - Remove source obfuscation: `UNKNOWN_EVIDENCE_SRC` constant restored to plain `:default_false` literal.
36
+ - Remove second publication engine: `registry_publisher` class method and `attr_writer` removed from
37
+ `Provider`; `readiness` and `list_models` no longer call `publish_readiness_async` /
38
+ `publish_models_async` on the old `RegistryPublisher`. Single SSOT v3 `Inventory::Publisher` path only.
39
+ - Remove regex-based authoritative capability claims: `extract_catalog_capabilities` and
40
+ `provider_envelope_capabilities` no longer promote model-name regex matches or hardcode streaming;
41
+ unverified capability support is unknown, not promoted to supported.
42
+ - Fix `.rubocop.yml`: remove `RSpec/SpecFilePathFormat` `Exclude` entry for capability spec; rename
43
+ spec to `provider_capability_policy_spec.rb` to satisfy the path format cop cleanly.
44
+ - Fix `settings.dig(:credentials, :api_key)` → `settings[:credentials][:api_key]` per §1.
45
+ - Fix `settings[:endpoint] || 'http://localhost:8000'` → `settings[:endpoint]` (registered default).
46
+ - Fix `api_base` to read the registered default from `settings[:instances][:default][:endpoint]`.
47
+ - Fix swallowed `URI::InvalidURIError` rescue in `extract_host_port`: call `handle_exception` + re-raise.
48
+ - Add `handle_exception` to `check_health` `Faraday::ConnectionFailed` and `StandardError` rescues.
49
+
50
+ ## [0.4.0] - 2026-08-13
51
+
52
+ ### Changed
53
+ - **SSOT v3 provider migration** — Complete rewrite of `DiscoveryRefresh` actor to use `Inventory::Publisher`,
54
+ `OfferingDraft`, `ProbeCoordinator`, and `ReadinessResult` from lex-llm 0.7.0.
55
+ - Add `MlxCallable` with `disconnect` / `normalize_dispatch_error(error:)` contracts for
56
+ `Inventory::CallableHandle` and `Routing::ProviderOutcome`.
57
+ - Instance identity derived from normalized endpoint `host:port` plus optional API key SHA256 fingerprint.
58
+ - Readiness probed via `/health` (non-inference, non-billable).
59
+ - Embedding detection via model name pattern (`/embed|bge|e5|nomic/i`).
60
+ - Operations: chat/stream_chat supported for non-embedding models; embed supported only for embedding models;
61
+ image/transcribe/translate/speak/moderate unsupported; count_tokens unknown.
62
+ - Fleet worker passes `registry:` kwarg to `ProviderResponder.call` for exact-offering execution.
63
+ - Remove all references to `Legion::LLM::Call::Registry` and `ScopedRefresher`.
64
+ - Bump floor to `lex-llm >= 0.7.0`.
65
+
66
+ ### Added
67
+ - Full SSOT v3 conformance spec (`mlx_ssot_v3_conformance_spec.rb`) exercising the shared
68
+ `'an SSOT v3 provider adapter'` examples plus MLX-specific identity, embedding, isolation,
69
+ and fleet execution contract tests.
70
+
3
71
  ## [0.3.14] - 2026-08-04
4
72
 
5
73
  ### Changed
data/Gemfile CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
+ gem 'lex-llm'
6
+
5
7
  gemspec
6
8
 
7
9
  group :development do
data/lex-llm-mlx.gemspec CHANGED
@@ -23,9 +23,13 @@ Gem::Specification.new do |spec|
23
23
  spec.files = `git ls-files -z`.split("\x0").reject { |file| file.match(%r{^(spec|test|features|tmp|coverage)/}) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
+ spec.add_dependency 'faraday', '>= 1.10.0'
26
27
  spec.add_dependency 'legion-json', '>= 1.2.1'
27
28
  spec.add_dependency 'legion-logging', '>= 1.3.2'
28
- spec.add_dependency 'legion-settings', '>= 1.3.14'
29
+ spec.add_dependency 'legion-settings', '>= 1.4.2'
29
30
  spec.add_dependency 'legion-transport', '>= 1.4.14'
30
- spec.add_dependency 'lex-llm', '>= 0.6.0'
31
+ # 0.7.1 carries the SSOT v3 InstanceKey (instance_id = config name +
32
+ # secondary physical_id) and the Publisher physical_id: kwargs the
33
+ # discovery actor calls. 0.7.0 publishers reject the physical_id: kwarg.
34
+ spec.add_dependency 'lex-llm', '>= 0.7.1'
31
35
  end