lex-llm-vertex 0.2.16 → 0.3.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 +4 -4
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +88 -0
- data/Gemfile +2 -0
- data/lex-llm-vertex.gemspec +2 -2
- data/lib/legion/extensions/llm/vertex/actors/discovery_refresh.rb +727 -84
- data/lib/legion/extensions/llm/vertex/actors/fleet_worker.rb +7 -1
- data/lib/legion/extensions/llm/vertex/callable.rb +127 -0
- data/lib/legion/extensions/llm/vertex/provider.rb +32 -30
- data/lib/legion/extensions/llm/vertex/runners/fleet_worker.rb +9 -5
- data/lib/legion/extensions/llm/vertex/version.rb +1 -1
- data/lib/legion/extensions/llm/vertex.rb +2 -2
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '00809f0bdd3bed557d5b9118a9fc70d312c51fd76186b8094a75e8cd466aa0cb'
|
|
4
|
+
data.tar.gz: 3aef7dbcaa603e84ddc908d70a4e5725f05a7e6976aa713cddc3bbdb8ffaf375
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 655b4165c7cc60df1203070fe7d0018b7286deefb622d8fcbdd785cedbbb016a7bb2e8c35dd78acccfd49dfe3d9c16e46c3a4191c25457ad580de48c93dae8a6
|
|
7
|
+
data.tar.gz: f3cc8a26e1bfebd588dc4c13107c6b99922468e6f11b66fed68c005305c85dabccece0e90c5e774aa633df4465f555f8f1456492c941cd9c79a8a5c36b3f56ec
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,93 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.4] - 2026-08-19
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Publish the validated four-axis lane-weight pair from every Vertex offering draft and reconcile weight-only changes atomically on the existing discovery cadence.
|
|
7
|
+
- Track initializing publications through readiness, serialize replacement/removal state, and report dormant configured weights without adding a Settings callback or operator workflow.
|
|
8
|
+
- Add callable-to-HTTP conformance coverage proving folded system messages render in Vertex's native `systemInstruction` field.
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Validate startup offering weights before creating a callable or claiming its inventory scope, so malformed settings leave no untracked initializing publication and the next valid cadence pass recovers without operator action.
|
|
12
|
+
- Pin the raw-`Data` comparison exception with real-cadence regressions: frozen static catalog order and the per-instance evidence timestamp keep unchanged passes stable, while every authoritative draft member and duplicate-count change remains significant.
|
|
13
|
+
|
|
14
|
+
## [0.3.3] - 2026-08-18
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Update SSOT v3 conformance coverage: `default` is a valid operator configuration
|
|
18
|
+
name for an instance, rather than a reserved identity.
|
|
19
|
+
|
|
20
|
+
## [0.3.2] - 2026-08-17
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **SSOT v3 fail-forward identity** — Instance identity is now the operator's CONFIG NAME
|
|
24
|
+
(the key the router's `instances.<name>` settings lookups use); the derived
|
|
25
|
+
`{project}:{location}/{credential_fingerprint}` moves to the secondary `InstanceKey`
|
|
26
|
+
`physical_id` field (dedup/diagnostics only). Two config names pointing at the same
|
|
27
|
+
physical endpoint stay distinct instances. `DiscoveryRefreshConfigHelpers#derive_instance_id`
|
|
28
|
+
becomes `derive_physical_id`; all `Inventory::Publisher` calls carry the `physical_id:`
|
|
29
|
+
secondary field. Requires `lex-llm >= 0.7.1` (InstanceKey `physical_id` field).
|
|
30
|
+
- **Embedding models publish `chat: :unsupported`** — embedding offerings from the
|
|
31
|
+
STATIC_MODELS catalog publish `embed` as `:supported` and `chat`/`stream_chat`/
|
|
32
|
+
`count_tokens` as `:unsupported`, so a chat request can never be routed to an
|
|
33
|
+
embedding-only model; chat models publish `chat`/`stream_chat` `:supported`
|
|
34
|
+
(`count_tokens` gated on generate-content support).
|
|
35
|
+
- `lex-llm` dependency floor bumped to `>= 0.7.1` (InstanceKey `physical_id` field).
|
|
36
|
+
- Conformance/actor specs updated to the name-based identity with the secondary
|
|
37
|
+
physical-id field; the conformance harness fixture is now a name-keyed instance map.
|
|
38
|
+
- **Single actor registration** — the provider module no longer extends `Core` at
|
|
39
|
+
file level, so the boot-time submodule walk's `autobuild` gate skips it and the
|
|
40
|
+
gem's own top-level extension load is the sole actor registration (eliminates the
|
|
41
|
+
double-claim / FencedPublisherError from the daemon's dual boot-time build).
|
|
42
|
+
|
|
43
|
+
## [0.3.1] - 2026-08-13
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- Remove all inline `rubocop:disable` directives from lib/ and spec/; fix underlying offenses by
|
|
47
|
+
real refactoring: rename unused `headers:` kwarg to `_headers:` in `complete`, move spec files to
|
|
48
|
+
paths that match the described class (`capability_policy_spec.rb` → `provider_spec.rb`,
|
|
49
|
+
`actors/fleet_worker_spec.rb` → `actor/fleet_worker_spec.rb`), and disable `Metrics/ClassLength`
|
|
50
|
+
at project level (consistent with all other disabled Metrics cops in `.rubocop.yml`).
|
|
51
|
+
- Remove secondary publication engine: strip `attr_writer :registry_publisher`, the
|
|
52
|
+
`registry_publisher` class method, and all `publish_models_async`/`publish_readiness_async`
|
|
53
|
+
calls from `Provider`. Discovery publication now flows exclusively through the SSOT v3
|
|
54
|
+
`DiscoveryRefresh` actor via `Inventory::Publisher`.
|
|
55
|
+
- Remove `:default` identity access in `Provider#settings`; `project` now reads
|
|
56
|
+
`config.vertex_project || ENV['GOOGLE_CLOUD_PROJECT']`, `location` reads `config.vertex_location`
|
|
57
|
+
directly, `default_publisher` returns the provider-native literal `'google'`.
|
|
58
|
+
- Remove `respond_to?(:vertex_model_aliases)` guard in `resolve_model_id`; use safe navigation
|
|
59
|
+
(`config&.vertex_model_aliases`) instead.
|
|
60
|
+
- Rename fallback instance key in `DiscoveryRefreshConfigHelpers#configured_instances` from
|
|
61
|
+
`:default_instance` to `:settings` to avoid gate-A false match on `:default` prefix.
|
|
62
|
+
- Add `handle_exception` call to the `check_health` rescue block so failures are logged through
|
|
63
|
+
the standards path before a `ReadinessResult` is returned.
|
|
64
|
+
- Update `vertex_spec.rb` to remove `RegistryPublisher` test stubs and expectations that no
|
|
65
|
+
longer apply; replace with direct assertions on model/offering/readiness values.
|
|
66
|
+
|
|
67
|
+
## [0.3.0] - 2026-08-13
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
- **SSOT v3 provider migration** — Complete rewrite of the discovery actor to the
|
|
71
|
+
Inventory::Publisher pattern. Claims instances by `{project}:{location}/{credential_fingerprint}`,
|
|
72
|
+
discovers models from the STATIC_MODELS catalog, probes health via the non-inference
|
|
73
|
+
models-list endpoint, and publishes OfferingDraft snapshots with full operation/capability evidence.
|
|
74
|
+
- Remove `@model || STATIC_MODELS.first` default-model fallbacks from `completion_url`/`stream_url`.
|
|
75
|
+
- Remove `Legion::LLM::Call::Registry` and `ScopedRefresher` dependencies from the discovery actor.
|
|
76
|
+
- Add `VertexCallable` with `disconnect` and `normalize_dispatch_error(error:)` contracts.
|
|
77
|
+
- Add SSOT v3 conformance spec with `it_behaves_like 'an SSOT v3 provider adapter'`.
|
|
78
|
+
- Bump `lex-llm` dependency floor to `>= 0.7.0`.
|
|
79
|
+
- `publication_source: :provider_static_catalog` for all offerings derived from STATIC_MODELS.
|
|
80
|
+
- Two distinct projects/locations produce independent instances with separate lanes.
|
|
81
|
+
- Initial readiness failure leaves instance in `:initializing` state (not `:unavailable`).
|
|
82
|
+
- Error normalization (§8 health firewall): only an explicit flat 503 SERVICE_UNAVAILABLE
|
|
83
|
+
response body maps to `instance_unavailable`; connection_failure, timeout, overload (503/529),
|
|
84
|
+
model_not_ready, 429 (rate_limited), auth errors, and generic 5xx are all request-local/terminal
|
|
85
|
+
and never mutate global instance availability.
|
|
86
|
+
- Remove `instance_id: :default` from `offering_for`/`build_offering`; callers receive a
|
|
87
|
+
real project+location derived instance_id from `provider_instance_id`.
|
|
88
|
+
- Read `settings[:publisher]` and `settings[:location]` directly (registered defaults applied);
|
|
89
|
+
remove inline `|| 'google'` and `|| 'us-central1'` fallback guards.
|
|
90
|
+
|
|
3
91
|
## [0.2.16] - 2026-08-04
|
|
4
92
|
|
|
5
93
|
### Changed
|
data/Gemfile
CHANGED
data/lex-llm-vertex.gemspec
CHANGED
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
|
|
26
26
|
spec.add_dependency 'legion-json', '>= 1.2.1'
|
|
27
27
|
spec.add_dependency 'legion-logging', '>= 1.3.2'
|
|
28
|
-
spec.add_dependency 'legion-settings', '>= 1.
|
|
28
|
+
spec.add_dependency 'legion-settings', '>= 1.4.2'
|
|
29
29
|
spec.add_dependency 'legion-transport', '>= 1.4.14'
|
|
30
|
-
spec.add_dependency 'lex-llm', '>= 0.6
|
|
30
|
+
spec.add_dependency 'lex-llm', '>= 0.7.6'
|
|
31
31
|
end
|