lex-llm 0.4.15 → 0.4.18
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.new +54 -0
- data/CHANGELOG.md +27 -0
- data/README.md +349 -153
- data/lex-llm.gemspec +1 -0
- data/lib/legion/extensions/llm/configuration.rb +4 -0
- data/lib/legion/extensions/llm/connection.rb +10 -1
- data/lib/legion/extensions/llm/credential_sources.rb +14 -6
- data/lib/legion/extensions/llm/fleet/token_validator.rb +28 -5
- data/lib/legion/extensions/llm/fleet/worker_execution.rb +13 -2
- data/lib/legion/extensions/llm/model/info.rb +7 -1
- data/lib/legion/extensions/llm/models.json +138 -66
- data/lib/legion/extensions/llm/provider/open_ai_compatible.rb +5 -1
- data/lib/legion/extensions/llm/provider.rb +14 -0
- data/lib/legion/extensions/llm/streaming.rb +5 -1
- data/lib/legion/extensions/llm/transport/messages/fleet_error.rb +1 -0
- data/lib/legion/extensions/llm/transport/messages/fleet_request.rb +1 -0
- data/lib/legion/extensions/llm/transport/messages/fleet_response.rb +1 -0
- data/lib/legion/extensions/llm/version.rb +1 -1
- metadata +16 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 251e67e07340b260806c156849759a36717aa0edded8d487e4781bc18dd6a796
|
|
4
|
+
data.tar.gz: 91cc4357b30623f8d05c26781838daaca04cc610bd0e9437f1dd8e3c7333d965
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a221259bedc60837bab73ef1e497799d2b7712c3c0e9a74f782ba69e361878fc56d5bb3dc63fc0ffffd731d89ea10233a5e015b86033122550ff571cef667030
|
|
7
|
+
data.tar.gz: '0709a98c1239c7e053b8d333d19150e4153c4c1ace084520d92221ceb532cb3fdc01cece4734eda9f0ef37f351f36c4a8aa50d78a500b74af7558ad25ac82c86'
|
data/.rubocop.yml.new
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
TargetRubyVersion: 3.4
|
|
3
|
+
NewCops: enable
|
|
4
|
+
SuggestExtensions: false
|
|
5
|
+
Exclude:
|
|
6
|
+
- docs/**/*
|
|
7
|
+
- vendor/**/*
|
|
8
|
+
- gemfiles/**/*
|
|
9
|
+
- lib/generators/**/templates/**/*
|
|
10
|
+
plugins:
|
|
11
|
+
- rubocop-performance
|
|
12
|
+
- rubocop-rake
|
|
13
|
+
- rubocop-rspec
|
|
14
|
+
- rubocop-legion
|
|
15
|
+
|
|
16
|
+
Layout/LineLength:
|
|
17
|
+
Max: 160
|
|
18
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
|
19
|
+
EnforcedStyle: space
|
|
20
|
+
Layout/HashAlignment:
|
|
21
|
+
EnforcedHashRocketStyle: table
|
|
22
|
+
EnforcedColonStyle: table
|
|
23
|
+
Metrics/MethodLength:
|
|
24
|
+
Max: 60
|
|
25
|
+
Metrics/ClassLength:
|
|
26
|
+
Max: 1500
|
|
27
|
+
Metrics/ModuleLength:
|
|
28
|
+
Max: 1500
|
|
29
|
+
Metrics/BlockLength:
|
|
30
|
+
Max: 40
|
|
31
|
+
Exclude:
|
|
32
|
+
- 'spec/**/*'
|
|
33
|
+
Metrics/AbcSize:
|
|
34
|
+
Max: 85
|
|
35
|
+
Metrics/CyclomaticComplexity:
|
|
36
|
+
Max: 35
|
|
37
|
+
Metrics/PerceivedComplexity:
|
|
38
|
+
Max: 35
|
|
39
|
+
Style/Documentation:
|
|
40
|
+
Enabled: false
|
|
41
|
+
Style/SymbolArray:
|
|
42
|
+
Enabled: true
|
|
43
|
+
Style/FrozenStringLiteralComment:
|
|
44
|
+
Enabled: true
|
|
45
|
+
EnforcedStyle: always
|
|
46
|
+
Naming/FileName:
|
|
47
|
+
Enabled: false
|
|
48
|
+
Naming/PredicateMethod:
|
|
49
|
+
Enabled: false
|
|
50
|
+
Metrics/ParameterLists:
|
|
51
|
+
Max: 9
|
|
52
|
+
Style/RedundantConstantBase:
|
|
53
|
+
Exclude:
|
|
54
|
+
- 'spec/**/*'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.18 - 2026-06-05
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- **Test suite** — All 377 specs passing. Specs exercise shared streaming, chat, models, fleet, credential sources, and provider contract behavior.
|
|
7
|
+
- **RuboCop** — Zero offenses across 110 files.
|
|
8
|
+
|
|
9
|
+
## 0.4.17 - 2026-06-04
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **faraday-typhoeus dependency** — Added `faraday-typhoeus >= 0.2` as a runtime dependency. Connection middleware now prefers `:typhoeus` (libcurl) adapter over `:net_http` to work around Ruby 4.0 + net-http-0.9.1 SSL keep-alive issues that drop connections mid-read (`connection.rb`)
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **Streaming on_data rejects status 0/nil** — `v2_on_data` handler only accepted `env&.status == 200`, causing typhoeus streaming chunks (where status is nil or 0 during active streaming before headers arrive) to be treated as failed responses. Now accepts nil/0 status as valid streaming state (`streaming.rb`)
|
|
16
|
+
|
|
17
|
+
## 0.4.16 - 2026-05-31
|
|
18
|
+
|
|
19
|
+
### Security
|
|
20
|
+
- **FLEET-01**: `FleetRequest`, `FleetResponse`, and `FleetError` now encrypt via `Legion::Crypt` when `fleet.compliance.encrypt_fleet` is true (default). Node-to-node inference traffic with PHI was previously plaintext on AMQP.
|
|
21
|
+
- **FLEET-02**: JWT `verify_issuer` set to `true` — library now validates issuer claim cryptographically.
|
|
22
|
+
- **FLEET-03**: Hashable JWT claims (params, caller, message_context, trace_context) validated via content hash only. No raw PHI values in base64 JWT payloads.
|
|
23
|
+
- **CRED-01**: Credential source probing (claude/codex config files) gated behind `extensions.llm.security.credential_source_probing` setting. Disableable in production.
|
|
24
|
+
- **OPENAI-CRED-01**: Bearer token filter added to Faraday response logger — API keys redacted as `Bearer [REDACTED]` in debug output.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- **FLEET-04**: `validate_policy!` no longer blocks all traffic when `require_policy` is enabled — logs warning and allows instead of raising unconditionally.
|
|
28
|
+
- **FLEET-IDEMPOTENCY-01**: 100k entry cap on replay JTI cache and idempotency cache with LRU eviction under memory pressure.
|
|
29
|
+
|
|
3
30
|
## 0.4.15 - 2026-05-21
|
|
4
31
|
|
|
5
32
|
- Add `identity_headers` to base provider — all API calls now include x-legion-identity-* headers when Identity is resolved
|