legion-llm 0.7.8 → 0.8.0
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/.gitignore +1 -0
- data/CHANGELOG.md +54 -1
- data/CLAUDE.md +376 -151
- data/Gemfile +1 -0
- data/README.md +229 -13
- data/advisory_prompt.txt +20 -0
- data/lib/legion/llm/api/anthropic/messages.rb +168 -0
- data/lib/legion/llm/api/auth.rb +63 -0
- data/lib/legion/llm/api/native/chat.rb +127 -0
- data/lib/legion/llm/api/native/helpers.rb +346 -0
- data/lib/legion/llm/api/native/inference.rb +246 -0
- data/lib/legion/llm/api/native/providers.rb +95 -0
- data/lib/legion/llm/api/openai/chat_completions.rb +137 -0
- data/lib/legion/llm/api/openai/embeddings.rb +66 -0
- data/lib/legion/llm/api/openai/models.rb +109 -0
- data/lib/legion/llm/api/translators/anthropic_request.rb +110 -0
- data/lib/legion/llm/api/translators/anthropic_response.rb +190 -0
- data/lib/legion/llm/api/translators/openai_request.rb +88 -0
- data/lib/legion/llm/api/translators/openai_response.rb +141 -0
- data/lib/legion/llm/api.rb +48 -0
- data/lib/legion/llm/audit.rb +35 -13
- data/lib/legion/llm/bedrock_bearer_auth.rb +2 -51
- data/lib/legion/llm/cache/response.rb +151 -0
- data/lib/legion/llm/call/bedrock_auth.rb +53 -0
- data/lib/legion/llm/call/claude_config_loader.rb +65 -0
- data/lib/legion/llm/call/codex_config_loader.rb +113 -0
- data/lib/legion/llm/call/daemon_client.rb +249 -0
- data/lib/legion/llm/call/dispatch.rb +142 -0
- data/lib/legion/llm/call/embeddings.rb +486 -0
- data/lib/legion/llm/call/providers.rb +339 -0
- data/lib/legion/llm/call/registry.rb +42 -0
- data/lib/legion/llm/call/structured_output.rb +83 -0
- data/lib/legion/llm/call.rb +18 -0
- data/lib/legion/llm/compat.rb +112 -0
- data/lib/legion/llm/config/settings.rb +341 -0
- data/lib/legion/llm/config.rb +46 -0
- data/lib/legion/llm/context/compressor.rb +205 -0
- data/lib/legion/llm/context/curator.rb +332 -0
- data/lib/legion/llm/context.rb +11 -0
- data/lib/legion/llm/discovery.rb +189 -0
- data/lib/legion/llm/fleet/dispatcher.rb +5 -6
- data/lib/legion/llm/fleet/handler.rb +1 -6
- data/lib/legion/llm/fleet.rb +28 -9
- data/lib/legion/llm/helper.rb +5 -5
- data/lib/legion/llm/hooks/budget_guard.rb +3 -3
- data/lib/legion/llm/hooks/cost_tracking.rb +15 -10
- data/lib/legion/llm/hooks/metering.rb +42 -40
- data/lib/legion/llm/hooks.rb +10 -7
- data/lib/legion/llm/{pipeline → inference}/audit_publisher.rb +20 -4
- data/lib/legion/llm/inference/conversation.rb +550 -0
- data/lib/legion/llm/{pipeline → inference}/enrichment_injector.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/executor.rb +121 -73
- data/lib/legion/llm/{pipeline → inference}/gaia_caller.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/profile.rb +1 -1
- data/lib/legion/llm/inference/prompt.rb +222 -0
- data/lib/legion/llm/{pipeline → inference}/request.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/response.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/billing.rb +2 -2
- data/lib/legion/llm/inference/steps/classification.rb +254 -0
- data/lib/legion/llm/{pipeline → inference}/steps/confidence_scoring.rb +2 -2
- data/lib/legion/llm/{pipeline → inference}/steps/debate.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/gaia_advisory.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/knowledge_capture.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/mcp_discovery.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/metering.rb +2 -1
- data/lib/legion/llm/{pipeline → inference}/steps/post_response.rb +22 -22
- data/lib/legion/llm/{pipeline → inference}/steps/prompt_cache.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/rag_context.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/rag_guard.rb +7 -2
- data/lib/legion/llm/{pipeline → inference}/steps/rbac.rb +17 -9
- data/lib/legion/llm/{pipeline → inference}/steps/skill_injector.rb +4 -4
- data/lib/legion/llm/{pipeline → inference}/steps/span_annotator.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/sticky_helpers.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/sticky_persist.rb +3 -3
- data/lib/legion/llm/{pipeline → inference}/steps/sticky_runners.rb +4 -4
- data/lib/legion/llm/{pipeline → inference}/steps/tier_assigner.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/token_budget.rb +4 -4
- data/lib/legion/llm/{pipeline → inference}/steps/tool_calls.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/tool_discovery.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps/tool_history.rb +2 -2
- data/lib/legion/llm/{pipeline → inference}/steps/trigger_match.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/steps.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/timeline.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/tool_adapter.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/tool_dispatcher.rb +1 -1
- data/lib/legion/llm/{pipeline → inference}/tracing.rb +1 -1
- data/lib/legion/llm/inference.rb +736 -0
- data/lib/legion/llm/metering/estimator.rb +53 -0
- data/lib/legion/llm/metering/tokens.rb +122 -0
- data/lib/legion/llm/metering/tracker.rb +101 -0
- data/lib/legion/llm/metering.rb +76 -7
- data/lib/legion/llm/quality/checker.rb +85 -0
- data/lib/legion/llm/quality/confidence/score.rb +53 -0
- data/lib/legion/llm/quality/confidence/scorer.rb +239 -0
- data/lib/legion/llm/quality/shadow_eval.rb +133 -0
- data/lib/legion/llm/quality.rb +13 -0
- data/lib/legion/llm/router/arbitrage.rb +117 -0
- data/lib/legion/llm/router.rb +1 -1
- data/lib/legion/llm/scheduling/batch.rb +180 -0
- data/lib/legion/llm/scheduling/off_peak.rb +37 -0
- data/lib/legion/llm/skills/base.rb +5 -5
- data/lib/legion/llm/tools/confidence.rb +179 -0
- data/lib/legion/llm/tools/dispatcher.rb +5 -5
- data/lib/legion/llm/tools.rb +13 -0
- data/lib/legion/llm/transport/exchanges/fleet.rb +14 -0
- data/lib/legion/llm/transport/messages/fleet_error.rb +63 -0
- data/lib/legion/llm/transport/messages/fleet_request.rb +32 -0
- data/lib/legion/llm/transport/messages/fleet_response.rb +51 -0
- data/lib/legion/llm/transport/messages/metering_event.rb +34 -0
- data/lib/legion/llm/transport/messages/prompt_event.rb +58 -0
- data/lib/legion/llm/transport/messages/skill_event.rb +46 -0
- data/lib/legion/llm/transport/messages/tool_event.rb +48 -0
- data/lib/legion/llm/transport.rb +19 -0
- data/lib/legion/llm/types/chunk.rb +45 -0
- data/lib/legion/llm/types/content_block.rb +55 -0
- data/lib/legion/llm/types/message.rb +73 -0
- data/lib/legion/llm/types/tool_call.rb +69 -0
- data/lib/legion/llm/types.rb +13 -0
- data/lib/legion/llm/version.rb +1 -1
- data/lib/legion/llm.rb +102 -1055
- metadata +105 -79
- data/lib/legion/llm/arbitrage.rb +0 -115
- data/lib/legion/llm/audit/exchange.rb +0 -11
- data/lib/legion/llm/audit/prompt_event.rb +0 -56
- data/lib/legion/llm/audit/skill_event.rb +0 -44
- data/lib/legion/llm/audit/tool_event.rb +0 -46
- data/lib/legion/llm/batch.rb +0 -178
- data/lib/legion/llm/claude_config_loader.rb +0 -63
- data/lib/legion/llm/codex_config_loader.rb +0 -111
- data/lib/legion/llm/compressor.rb +0 -203
- data/lib/legion/llm/confidence_score.rb +0 -49
- data/lib/legion/llm/confidence_scorer.rb +0 -235
- data/lib/legion/llm/context_curator.rb +0 -313
- data/lib/legion/llm/conversation_store.rb +0 -548
- data/lib/legion/llm/cost_estimator.rb +0 -51
- data/lib/legion/llm/cost_tracker.rb +0 -99
- data/lib/legion/llm/daemon_client.rb +0 -249
- data/lib/legion/llm/embeddings.rb +0 -481
- data/lib/legion/llm/fleet/error.rb +0 -61
- data/lib/legion/llm/fleet/exchange.rb +0 -12
- data/lib/legion/llm/fleet/request.rb +0 -30
- data/lib/legion/llm/fleet/response.rb +0 -49
- data/lib/legion/llm/metering/event.rb +0 -32
- data/lib/legion/llm/metering/exchange.rb +0 -11
- data/lib/legion/llm/native_dispatch.rb +0 -140
- data/lib/legion/llm/off_peak.rb +0 -35
- data/lib/legion/llm/override_confidence.rb +0 -177
- data/lib/legion/llm/pipeline/steps/classification.rb +0 -115
- data/lib/legion/llm/pipeline.rb +0 -22
- data/lib/legion/llm/prompt.rb +0 -220
- data/lib/legion/llm/provider_registry.rb +0 -40
- data/lib/legion/llm/providers.rb +0 -257
- data/lib/legion/llm/quality_checker.rb +0 -83
- data/lib/legion/llm/response_cache.rb +0 -149
- data/lib/legion/llm/routes.rb +0 -739
- data/lib/legion/llm/settings.rb +0 -328
- data/lib/legion/llm/shadow_eval.rb +0 -131
- data/lib/legion/llm/structured_output.rb +0 -81
- data/lib/legion/llm/token_tracker.rb +0 -120
- /data/lib/legion/llm/{pipeline → inference}/mcp_tool_adapter.rb +0 -0
- /data/lib/legion/llm/{usage.rb → metering/usage.rb} +0 -0
- /data/lib/legion/llm/router/{escalation_chain.rb → escalation/chain.rb} +0 -0
- /data/lib/legion/llm/{escalation_history.rb → router/escalation/history.rb} +0 -0
- /data/lib/legion/llm/{escalation_tracker.rb → router/escalation/tracker.rb} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: df10648acc8e54784f2c3e097d4fdf585e914264f78d1584f34483243eeea22a
|
|
4
|
+
data.tar.gz: dd01e52bb2a5b5f1096c2f4c91662252930531d8e96617511f1471b31a232566
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c86a186203b5398f95c05e27c4cde7e07d0d981bfc53a316e5cf2e2d363332f5cfdb96acb961e3d8565fe10b4b88078cfd713cb9b61fb7a58bd598597e403ef7
|
|
7
|
+
data.tar.gz: 0b98ce0936adebd8f55cb6fd1075343e698b5c27c9b264ebb884bfe640177a9594bee0b0076c93fb3714e346dbd4d5acf797316c40d2ea3045d299cdf3f6779f
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,59 @@
|
|
|
1
1
|
# Legion LLM Changelog
|
|
2
2
|
|
|
3
|
-
## [
|
|
3
|
+
## [0.8.0] - 2026-04-21
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- BREAKING: Module hierarchy restructured — see compat.rb for full alias list
|
|
7
|
+
- Dead `lex-llm-gateway` references removed
|
|
8
|
+
- `hooks/metering.rb` + `hooks/cost_tracking.rb` collapsed into `Metering.install_hook`
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- OpenAI-compatible API: POST /v1/chat/completions, GET /v1/models, POST /v1/embeddings
|
|
12
|
+
- Anthropic-compatible API: POST /v1/messages
|
|
13
|
+
- Config-driven /v1/ auth: settings[:llm][:api][:auth]
|
|
14
|
+
- Backward compat aliases via compat.rb with deprecation warnings
|
|
15
|
+
|
|
16
|
+
## [0.7.15] - 2026-04-20
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- PHI cloud provider gate: `compliance.phi_block_cloud` (default: `false`) blocks restricted-classified requests from cloud providers when enabled. Warns on permit when disabled. Cloud provider list configurable via `compliance.cloud_providers`. Fixes #72
|
|
20
|
+
|
|
21
|
+
## [0.7.14] - 2026-04-20
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- PII/PHI redaction mode: `compliance.redact_pii` (default: `false`) replaces detected patterns with configurable placeholder token before pipeline continues. Placeholder configurable via `compliance.redaction_placeholder` (default: `[REDACTED]`)
|
|
25
|
+
- `compliance.strict_hipaa` setting (default: `false`): when enabled, scans all 12 HIPAA patterns; when disabled, scans only core 3 (SSN, email, phone) for lighter processing. Closes #73
|
|
26
|
+
|
|
27
|
+
## [0.7.13] - 2026-04-20
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Classification step now always runs the PII/PHI scan, even on unclassified requests — defaults to `:public` baseline. Configurable via `compliance.default_level` (default: `:public`) and `compliance.classification_scan` (default: `true`). Fixes #70
|
|
31
|
+
|
|
32
|
+
## [0.7.12] - 2026-04-20
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- RBAC step now respects `rbac.fail_open` setting (default: `true`) when `Legion::Rbac` is unavailable. Fleet callers are always blocked. Non-fleet callers are permitted with a warning when `fail_open` is true, or blocked with 503 when false. Fixes #69
|
|
36
|
+
|
|
37
|
+
## [0.7.11] - 2026-04-20
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- RAG faithfulness check now logs a warning when RAG context is present but no `Hooks::RagGuard` is registered, instead of silently skipping. Fixes #71
|
|
41
|
+
- RAG faithfulness failure now logs at warn level in addition to appending to pipeline warnings array
|
|
42
|
+
|
|
43
|
+
## [0.7.10] - 2026-04-20
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
- `configure_anthropic` now passes `base_url` through to RubyLLM (`anthropic_api_base`) when present, enabling custom API gateways and proxies. Fixes #68
|
|
47
|
+
- `configure_openai` now passes `base_url` through to RubyLLM (`openai_api_base`) when present, for consistency with Anthropic and Ollama providers
|
|
48
|
+
- `configure_gemini` now passes `base_url` through to RubyLLM (`gemini_api_base`) when present, for consistency with Anthropic and Ollama providers
|
|
49
|
+
|
|
50
|
+
## [0.7.9] - 2026-04-18
|
|
51
|
+
### Added
|
|
52
|
+
- Expanded PII/PHI classification to cover 12 HIPAA Safe Harbor identifier patterns (was 3) and 20 PHI keywords (was 11). Partial fix for #73
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
- `web_fetch` client tool now delegates to `Legion::CLI::Chat::WebFetch.fetch` instead of bare `Net::HTTP.get` — gains SSL, redirect following, HTML-to-markdown conversion, and `maxLength` truncation (LegionIO/LegionIO#153)
|
|
56
|
+
- Added `web_search` client tool dispatch via `Legion::CLI::Chat::WebSearch.search` — previously fell through to generic "not executable server-side" error (LegionIO/LegionIO#154)
|
|
4
57
|
|
|
5
58
|
## [0.7.8] - 2026-04-17
|
|
6
59
|
### Fixed
|