lex-llm 0.4.14 → 0.4.15
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/CHANGELOG.md +8 -0
- data/Gemfile +1 -0
- data/lib/legion/extensions/llm/provider.rb +56 -10
- data/lib/legion/extensions/llm/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0d1285ba64b40e878ef58be2e434d7a9090a38c7e9a6a9a12c85fe756096196b
|
|
4
|
+
data.tar.gz: 646974d7c04db898d1f1bbf251dd1c4f74df3d8c7b5b66803358b00e7d2663d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 85d596886b1809404194d7394d5a727bc39464adfd7e847d5d510323d6b777d8831a1a4a2343ba3f814e15415a648afdb78821eb42401b0353f1803bd3ff446f
|
|
7
|
+
data.tar.gz: 5778d0da0bf25dc6acf52553f956dc15eed37efd2de31143006026f3833287a7d872d2640ee260ab4292d16a8c0e04a0b9cde27a1b6f9ff9293d68ecfe17b155
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.15 - 2026-05-21
|
|
4
|
+
|
|
5
|
+
- Add `identity_headers` to base provider — all API calls now include x-legion-identity-* headers when Identity is resolved
|
|
6
|
+
- Add `offering_transport` and `offering_tier` instance methods with class-level `default_transport`/`default_tier` overrides
|
|
7
|
+
- Add `runtime_provider_setting` fallback for model_whitelist/blacklist from Legion::Settings
|
|
8
|
+
- Remove duplicate `offering_transport`/`offering_tier` definitions
|
|
9
|
+
|
|
10
|
+
|
|
3
11
|
## 0.4.14 - 2026-05-16
|
|
4
12
|
|
|
5
13
|
- Normalize `function_calling`, `functions`, and related tool-use capability aliases to include canonical `:tools` on model metadata and routing offerings.
|
data/Gemfile
CHANGED
|
@@ -43,6 +43,25 @@ module Legion
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def headers
|
|
46
|
+
identity_headers
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def identity_headers
|
|
50
|
+
return {} unless defined?(Legion::Identity::Process) && Legion::Identity::Process.respond_to?(:identity_hash)
|
|
51
|
+
|
|
52
|
+
id = Legion::Identity::Process.identity_hash
|
|
53
|
+
hdrs = {
|
|
54
|
+
'x-legion-identity-canonical-name' => id[:canonical_name].to_s,
|
|
55
|
+
'x-legion-identity-trust' => id[:trust].to_s,
|
|
56
|
+
'x-legion-identity-id' => id[:id].to_s,
|
|
57
|
+
'x-legion-identity-kind' => id[:kind].to_s,
|
|
58
|
+
'x-legion-identity-mode' => id[:mode].to_s,
|
|
59
|
+
'x-legion-identity-source' => id[:source].to_s
|
|
60
|
+
}
|
|
61
|
+
hdrs['x-legion-identity-db-principal-id'] = id[:db_principal_id].to_s if id[:db_principal_id]
|
|
62
|
+
hdrs['x-legion-identity-db-identity-id'] = id[:db_identity_id].to_s if id[:db_identity_id]
|
|
63
|
+
hdrs
|
|
64
|
+
rescue StandardError
|
|
46
65
|
{}
|
|
47
66
|
end
|
|
48
67
|
|
|
@@ -292,16 +311,33 @@ module Legion
|
|
|
292
311
|
|
|
293
312
|
def model_whitelist
|
|
294
313
|
wl = config.model_whitelist if config.respond_to?(:model_whitelist)
|
|
295
|
-
wl ||= settings[:model_whitelist] if respond_to?(:settings)
|
|
314
|
+
wl ||= settings[:model_whitelist] if respond_to?(:settings) && settings.is_a?(Hash)
|
|
315
|
+
wl ||= runtime_provider_setting(:model_whitelist)
|
|
296
316
|
Array(wl).map { |p| p.to_s.downcase }
|
|
297
317
|
end
|
|
298
318
|
|
|
299
319
|
def model_blacklist
|
|
300
320
|
bl = config.model_blacklist if config.respond_to?(:model_blacklist)
|
|
301
|
-
bl ||= settings[:model_blacklist] if respond_to?(:settings)
|
|
321
|
+
bl ||= settings[:model_blacklist] if respond_to?(:settings) && settings.is_a?(Hash)
|
|
322
|
+
bl ||= runtime_provider_setting(:model_blacklist)
|
|
302
323
|
Array(bl).map { |p| p.to_s.downcase }
|
|
303
324
|
end
|
|
304
325
|
|
|
326
|
+
def runtime_provider_setting(key)
|
|
327
|
+
return nil unless defined?(Legion::Settings)
|
|
328
|
+
|
|
329
|
+
ext = Legion::Settings[:extensions]
|
|
330
|
+
return nil unless ext.is_a?(Hash) && ext[:llm].is_a?(Hash)
|
|
331
|
+
|
|
332
|
+
provider_key = self.class.respond_to?(:slug) ? self.class.slug.to_sym : nil
|
|
333
|
+
return nil unless provider_key
|
|
334
|
+
|
|
335
|
+
provider_conf = ext[:llm][provider_key]
|
|
336
|
+
provider_conf.is_a?(Hash) ? provider_conf[key] : nil
|
|
337
|
+
rescue StandardError
|
|
338
|
+
nil
|
|
339
|
+
end
|
|
340
|
+
|
|
305
341
|
def model_allowed?(model_name)
|
|
306
342
|
name = model_name.to_s.downcase
|
|
307
343
|
wl = model_whitelist
|
|
@@ -313,6 +349,16 @@ module Legion
|
|
|
313
349
|
true
|
|
314
350
|
end
|
|
315
351
|
|
|
352
|
+
# ── Offering defaults ─────────────────────────────────────────────
|
|
353
|
+
|
|
354
|
+
def offering_transport
|
|
355
|
+
config.respond_to?(:transport) ? config.transport : self.class.default_transport
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
def offering_tier
|
|
359
|
+
config.respond_to?(:tier) ? config.tier : self.class.default_tier
|
|
360
|
+
end
|
|
361
|
+
|
|
316
362
|
# ── Multi-host base_url resolution ────────────────────────────────
|
|
317
363
|
|
|
318
364
|
def resolve_base_url
|
|
@@ -437,6 +483,14 @@ module Legion
|
|
|
437
483
|
[]
|
|
438
484
|
end
|
|
439
485
|
|
|
486
|
+
def default_transport
|
|
487
|
+
:http
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
def default_tier
|
|
491
|
+
:frontier
|
|
492
|
+
end
|
|
493
|
+
|
|
440
494
|
def local?
|
|
441
495
|
false
|
|
442
496
|
end
|
|
@@ -503,14 +557,6 @@ module Legion
|
|
|
503
557
|
)
|
|
504
558
|
end
|
|
505
559
|
|
|
506
|
-
def offering_transport
|
|
507
|
-
local? ? :local : :http
|
|
508
|
-
end
|
|
509
|
-
|
|
510
|
-
def offering_tier
|
|
511
|
-
local? ? :local : :direct
|
|
512
|
-
end
|
|
513
|
-
|
|
514
560
|
def offering_usage_type(model)
|
|
515
561
|
model.embedding? ? :embedding : :inference
|
|
516
562
|
end
|