lex-llm-mlx 0.3.14 → 0.5.3
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 +4 -4
- data/.rubocop.yml +8 -0
- data/CHANGELOG.md +84 -0
- data/Gemfile +2 -0
- data/lex-llm-mlx.gemspec +5 -2
- data/lib/legion/extensions/llm/mlx/actors/discovery_refresh.rb +940 -94
- data/lib/legion/extensions/llm/mlx/actors/fleet_worker.rb +6 -1
- data/lib/legion/extensions/llm/mlx/provider.rb +169 -150
- data/lib/legion/extensions/llm/mlx/runners/fleet_worker.rb +23 -4
- data/lib/legion/extensions/llm/mlx/version.rb +1 -1
- data/lib/legion/extensions/llm/mlx.rb +59 -25
- metadata +19 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 43228a67440228c5db6f468ca4eb81c3fb032477fce92fbc60432c02b0872290
|
|
4
|
+
data.tar.gz: a91c59aa2bfc248de6f3715d41d46cfd2c0a82531df8c6ceceec8f9b73e5c1e9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 81faf223f32cd773041faad5637d42e76174ee042e723d50867e8d7b4ba5be8059a6489934118c391efc9e34fa1f5a7d7223cc6c80a9dee85a951cbc0042bf85
|
|
7
|
+
data.tar.gz: 7f19db1af208ead30d11984e3a86c67ac4748f64239802cd7851586990311eee667e35c8394722800f0d26d3bd5db1364617667a3e51ea1fab0d06d68bcb8939
|
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,89 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.3] - 2026-08-19
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Publish the immutable four-component lane-weight pair from MLX discovery and reconcile weight-only changes on the existing scheduled writer pass.
|
|
7
|
+
- Serialize initial, recovery, replacement, removal, and shutdown state transitions behind one actor-local mutex without adding a Settings callback or operator workflow.
|
|
8
|
+
- Track configured-but-unpublished weight keys on the existing discovery cadence and log each dormant transition once.
|
|
9
|
+
- Raise the `lex-llm` dependency floor to 0.7.6; the existing `legion-settings` dependency remains unchanged.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- Compare every offering contract field while excluding only non-authoritative evidence observation timestamps, preventing unchanged discovery passes from republishing snapshots while retaining real evidence and weight changes.
|
|
13
|
+
- Treat discovery catalogs as order-independent multisets, so provider reorderings do not republish while adding or removing a duplicate offering remains a significant change.
|
|
14
|
+
- Validate the complete weighted offering set before constructing or claiming a callable scope, so malformed weights leave no orphaned Registry publication and a later corrected ordinary pass activates without restart or operator cleanup.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- Cover the complete writer lifecycle, publication races, failure atomicity, dormant-state cycle, and the actual callable's folded-system OpenAI-compatible wire payload.
|
|
18
|
+
|
|
19
|
+
## [0.5.2] - 2026-08-18
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- Remove synthetic-default discovery filtering and its once-per-boot warning; configured discovery now returns every instance entry.
|
|
23
|
+
|
|
24
|
+
## [0.5.1] - 2026-08-17
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- **Single actor registration** — the provider module no longer extends `Core` at file level, so the
|
|
28
|
+
boot-time submodule walk skips it and the gem's own top-level extension load is the sole actor
|
|
29
|
+
registration (eliminates the double-claim / `FencedPublisherError`).
|
|
30
|
+
- The synthetic-default skip warn now fires once per boot instead of every discovery tick (was
|
|
31
|
+
permanent WARN noise — an unconfigured provider is the normal state).
|
|
32
|
+
- **SSOT v3 fail-forward identity** — Instance identity is now the operator's config name
|
|
33
|
+
(`InstanceKey.instance_id` = the frozen config key the router uses for `instances.<name>`
|
|
34
|
+
lookups). The normalized endpoint `host:port` (plus optional API key SHA256 fingerprint) is
|
|
35
|
+
carried as the secondary `physical_id` for dedup and diagnostics only, never identity.
|
|
36
|
+
Two config names at the same endpoint remain distinct instances (no endpoint collapse).
|
|
37
|
+
All `Inventory::Publisher` calls now pass `physical_id:`.
|
|
38
|
+
- Bump floor to `lex-llm >= 0.7.1` (carries the SSOT v3 `InstanceKey` `physical_id` and the
|
|
39
|
+
Publisher `physical_id:` kwargs; 0.7.0 publishers reject the `physical_id:` kwarg).
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
- Conformance coverage for config-name identity, secondary physical id, and no endpoint
|
|
43
|
+
collapse, plus an authoritative operation-evidence check pinning that embedding models
|
|
44
|
+
publish `chat`/`stream_chat` as `:unsupported` and `embed` as `:supported` so a plain chat
|
|
45
|
+
request cannot misroute to an embedding-only instance.
|
|
46
|
+
|
|
47
|
+
## [0.5.0] - 2026-08-13
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
- **SSOT v3 remediation pass 2** — Resolve all residual compliance violations from the first pass.
|
|
51
|
+
- Remove source obfuscation: `UNKNOWN_EVIDENCE_SRC` constant restored to plain `:default_false` literal.
|
|
52
|
+
- Remove second publication engine: `registry_publisher` class method and `attr_writer` removed from
|
|
53
|
+
`Provider`; `readiness` and `list_models` no longer call `publish_readiness_async` /
|
|
54
|
+
`publish_models_async` on the old `RegistryPublisher`. Single SSOT v3 `Inventory::Publisher` path only.
|
|
55
|
+
- Remove regex-based authoritative capability claims: `extract_catalog_capabilities` and
|
|
56
|
+
`provider_envelope_capabilities` no longer promote model-name regex matches or hardcode streaming;
|
|
57
|
+
unverified capability support is unknown, not promoted to supported.
|
|
58
|
+
- Fix `.rubocop.yml`: remove `RSpec/SpecFilePathFormat` `Exclude` entry for capability spec; rename
|
|
59
|
+
spec to `provider_capability_policy_spec.rb` to satisfy the path format cop cleanly.
|
|
60
|
+
- Fix `settings.dig(:credentials, :api_key)` → `settings[:credentials][:api_key]` per §1.
|
|
61
|
+
- Fix `settings[:endpoint] || 'http://localhost:8000'` → `settings[:endpoint]` (registered default).
|
|
62
|
+
- Fix `api_base` to read the registered default from `settings[:instances][:default][:endpoint]`.
|
|
63
|
+
- Fix swallowed `URI::InvalidURIError` rescue in `extract_host_port`: call `handle_exception` + re-raise.
|
|
64
|
+
- Add `handle_exception` to `check_health` `Faraday::ConnectionFailed` and `StandardError` rescues.
|
|
65
|
+
|
|
66
|
+
## [0.4.0] - 2026-08-13
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
- **SSOT v3 provider migration** — Complete rewrite of `DiscoveryRefresh` actor to use `Inventory::Publisher`,
|
|
70
|
+
`OfferingDraft`, `ProbeCoordinator`, and `ReadinessResult` from lex-llm 0.7.0.
|
|
71
|
+
- Add `MlxCallable` with `disconnect` / `normalize_dispatch_error(error:)` contracts for
|
|
72
|
+
`Inventory::CallableHandle` and `Routing::ProviderOutcome`.
|
|
73
|
+
- Instance identity derived from normalized endpoint `host:port` plus optional API key SHA256 fingerprint.
|
|
74
|
+
- Readiness probed via `/health` (non-inference, non-billable).
|
|
75
|
+
- Embedding detection via model name pattern (`/embed|bge|e5|nomic/i`).
|
|
76
|
+
- Operations: chat/stream_chat supported for non-embedding models; embed supported only for embedding models;
|
|
77
|
+
image/transcribe/translate/speak/moderate unsupported; count_tokens unknown.
|
|
78
|
+
- Fleet worker passes `registry:` kwarg to `ProviderResponder.call` for exact-offering execution.
|
|
79
|
+
- Remove all references to `Legion::LLM::Call::Registry` and `ScopedRefresher`.
|
|
80
|
+
- Bump floor to `lex-llm >= 0.7.0`.
|
|
81
|
+
|
|
82
|
+
### Added
|
|
83
|
+
- Full SSOT v3 conformance spec (`mlx_ssot_v3_conformance_spec.rb`) exercising the shared
|
|
84
|
+
`'an SSOT v3 provider adapter'` examples plus MLX-specific identity, embedding, isolation,
|
|
85
|
+
and fleet execution contract tests.
|
|
86
|
+
|
|
3
87
|
## [0.3.14] - 2026-08-04
|
|
4
88
|
|
|
5
89
|
### Changed
|
data/Gemfile
CHANGED
data/lex-llm-mlx.gemspec
CHANGED
|
@@ -23,9 +23,12 @@ 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.
|
|
29
|
+
spec.add_dependency 'legion-settings', '>= 1.4.2'
|
|
29
30
|
spec.add_dependency 'legion-transport', '>= 1.4.14'
|
|
30
|
-
|
|
31
|
+
# 0.7.6 carries the write-time weight schema/reconciler and the immutable
|
|
32
|
+
# OfferingDraft/OfferingRecord/LaneRecord weight pair used by this writer.
|
|
33
|
+
spec.add_dependency 'lex-llm', '>= 0.7.6'
|
|
31
34
|
end
|