legion-llm 0.7.15 → 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.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +12 -1
  4. data/CLAUDE.md +376 -151
  5. data/Gemfile +1 -0
  6. data/README.md +229 -13
  7. data/advisory_prompt.txt +20 -0
  8. data/lib/legion/llm/api/anthropic/messages.rb +168 -0
  9. data/lib/legion/llm/api/auth.rb +63 -0
  10. data/lib/legion/llm/api/native/chat.rb +127 -0
  11. data/lib/legion/llm/api/native/helpers.rb +346 -0
  12. data/lib/legion/llm/api/native/inference.rb +246 -0
  13. data/lib/legion/llm/api/native/providers.rb +95 -0
  14. data/lib/legion/llm/api/openai/chat_completions.rb +137 -0
  15. data/lib/legion/llm/api/openai/embeddings.rb +66 -0
  16. data/lib/legion/llm/api/openai/models.rb +109 -0
  17. data/lib/legion/llm/api/translators/anthropic_request.rb +110 -0
  18. data/lib/legion/llm/api/translators/anthropic_response.rb +190 -0
  19. data/lib/legion/llm/api/translators/openai_request.rb +88 -0
  20. data/lib/legion/llm/api/translators/openai_response.rb +141 -0
  21. data/lib/legion/llm/api.rb +48 -0
  22. data/lib/legion/llm/audit.rb +35 -13
  23. data/lib/legion/llm/bedrock_bearer_auth.rb +2 -51
  24. data/lib/legion/llm/cache/response.rb +151 -0
  25. data/lib/legion/llm/call/bedrock_auth.rb +53 -0
  26. data/lib/legion/llm/call/claude_config_loader.rb +65 -0
  27. data/lib/legion/llm/call/codex_config_loader.rb +113 -0
  28. data/lib/legion/llm/call/daemon_client.rb +249 -0
  29. data/lib/legion/llm/call/dispatch.rb +142 -0
  30. data/lib/legion/llm/call/embeddings.rb +486 -0
  31. data/lib/legion/llm/call/providers.rb +339 -0
  32. data/lib/legion/llm/call/registry.rb +42 -0
  33. data/lib/legion/llm/call/structured_output.rb +83 -0
  34. data/lib/legion/llm/call.rb +18 -0
  35. data/lib/legion/llm/compat.rb +112 -0
  36. data/lib/legion/llm/config/settings.rb +341 -0
  37. data/lib/legion/llm/config.rb +46 -0
  38. data/lib/legion/llm/context/compressor.rb +205 -0
  39. data/lib/legion/llm/context/curator.rb +332 -0
  40. data/lib/legion/llm/context.rb +11 -0
  41. data/lib/legion/llm/discovery.rb +189 -0
  42. data/lib/legion/llm/fleet/dispatcher.rb +5 -6
  43. data/lib/legion/llm/fleet/handler.rb +1 -6
  44. data/lib/legion/llm/fleet.rb +28 -9
  45. data/lib/legion/llm/helper.rb +5 -5
  46. data/lib/legion/llm/hooks/budget_guard.rb +3 -3
  47. data/lib/legion/llm/hooks/cost_tracking.rb +15 -10
  48. data/lib/legion/llm/hooks/metering.rb +42 -40
  49. data/lib/legion/llm/hooks.rb +10 -7
  50. data/lib/legion/llm/{pipeline → inference}/audit_publisher.rb +20 -4
  51. data/lib/legion/llm/inference/conversation.rb +550 -0
  52. data/lib/legion/llm/{pipeline → inference}/enrichment_injector.rb +1 -1
  53. data/lib/legion/llm/{pipeline → inference}/executor.rb +121 -73
  54. data/lib/legion/llm/{pipeline → inference}/gaia_caller.rb +1 -1
  55. data/lib/legion/llm/{pipeline → inference}/profile.rb +1 -1
  56. data/lib/legion/llm/inference/prompt.rb +222 -0
  57. data/lib/legion/llm/{pipeline → inference}/request.rb +1 -1
  58. data/lib/legion/llm/{pipeline → inference}/response.rb +1 -1
  59. data/lib/legion/llm/{pipeline → inference}/steps/billing.rb +2 -2
  60. data/lib/legion/llm/{pipeline → inference}/steps/classification.rb +1 -1
  61. data/lib/legion/llm/{pipeline → inference}/steps/confidence_scoring.rb +2 -2
  62. data/lib/legion/llm/{pipeline → inference}/steps/debate.rb +1 -1
  63. data/lib/legion/llm/{pipeline → inference}/steps/gaia_advisory.rb +1 -1
  64. data/lib/legion/llm/{pipeline → inference}/steps/knowledge_capture.rb +1 -1
  65. data/lib/legion/llm/{pipeline → inference}/steps/mcp_discovery.rb +1 -1
  66. data/lib/legion/llm/{pipeline → inference}/steps/metering.rb +2 -1
  67. data/lib/legion/llm/{pipeline → inference}/steps/post_response.rb +22 -22
  68. data/lib/legion/llm/{pipeline → inference}/steps/prompt_cache.rb +1 -1
  69. data/lib/legion/llm/{pipeline → inference}/steps/rag_context.rb +1 -1
  70. data/lib/legion/llm/{pipeline → inference}/steps/rag_guard.rb +1 -1
  71. data/lib/legion/llm/{pipeline → inference}/steps/rbac.rb +1 -1
  72. data/lib/legion/llm/{pipeline → inference}/steps/skill_injector.rb +4 -4
  73. data/lib/legion/llm/{pipeline → inference}/steps/span_annotator.rb +1 -1
  74. data/lib/legion/llm/{pipeline → inference}/steps/sticky_helpers.rb +1 -1
  75. data/lib/legion/llm/{pipeline → inference}/steps/sticky_persist.rb +3 -3
  76. data/lib/legion/llm/{pipeline → inference}/steps/sticky_runners.rb +4 -4
  77. data/lib/legion/llm/{pipeline → inference}/steps/tier_assigner.rb +1 -1
  78. data/lib/legion/llm/{pipeline → inference}/steps/token_budget.rb +4 -4
  79. data/lib/legion/llm/{pipeline → inference}/steps/tool_calls.rb +1 -1
  80. data/lib/legion/llm/{pipeline → inference}/steps/tool_discovery.rb +1 -1
  81. data/lib/legion/llm/{pipeline → inference}/steps/tool_history.rb +2 -2
  82. data/lib/legion/llm/{pipeline → inference}/steps/trigger_match.rb +1 -1
  83. data/lib/legion/llm/{pipeline → inference}/steps.rb +1 -1
  84. data/lib/legion/llm/{pipeline → inference}/timeline.rb +1 -1
  85. data/lib/legion/llm/{pipeline → inference}/tool_adapter.rb +1 -1
  86. data/lib/legion/llm/{pipeline → inference}/tool_dispatcher.rb +1 -1
  87. data/lib/legion/llm/{pipeline → inference}/tracing.rb +1 -1
  88. data/lib/legion/llm/inference.rb +736 -0
  89. data/lib/legion/llm/metering/estimator.rb +53 -0
  90. data/lib/legion/llm/metering/tokens.rb +122 -0
  91. data/lib/legion/llm/metering/tracker.rb +101 -0
  92. data/lib/legion/llm/metering.rb +76 -7
  93. data/lib/legion/llm/quality/checker.rb +85 -0
  94. data/lib/legion/llm/quality/confidence/score.rb +53 -0
  95. data/lib/legion/llm/quality/confidence/scorer.rb +239 -0
  96. data/lib/legion/llm/quality/shadow_eval.rb +133 -0
  97. data/lib/legion/llm/quality.rb +13 -0
  98. data/lib/legion/llm/router/arbitrage.rb +117 -0
  99. data/lib/legion/llm/router.rb +1 -1
  100. data/lib/legion/llm/scheduling/batch.rb +180 -0
  101. data/lib/legion/llm/scheduling/off_peak.rb +37 -0
  102. data/lib/legion/llm/skills/base.rb +5 -5
  103. data/lib/legion/llm/tools/confidence.rb +179 -0
  104. data/lib/legion/llm/tools/dispatcher.rb +5 -5
  105. data/lib/legion/llm/tools.rb +13 -0
  106. data/lib/legion/llm/transport/exchanges/fleet.rb +14 -0
  107. data/lib/legion/llm/transport/messages/fleet_error.rb +63 -0
  108. data/lib/legion/llm/transport/messages/fleet_request.rb +32 -0
  109. data/lib/legion/llm/transport/messages/fleet_response.rb +51 -0
  110. data/lib/legion/llm/transport/messages/metering_event.rb +34 -0
  111. data/lib/legion/llm/transport/messages/prompt_event.rb +58 -0
  112. data/lib/legion/llm/transport/messages/skill_event.rb +46 -0
  113. data/lib/legion/llm/transport/messages/tool_event.rb +48 -0
  114. data/lib/legion/llm/transport.rb +19 -0
  115. data/lib/legion/llm/types/chunk.rb +45 -0
  116. data/lib/legion/llm/types/content_block.rb +55 -0
  117. data/lib/legion/llm/types/message.rb +73 -0
  118. data/lib/legion/llm/types/tool_call.rb +69 -0
  119. data/lib/legion/llm/types.rb +13 -0
  120. data/lib/legion/llm/version.rb +1 -1
  121. data/lib/legion/llm.rb +102 -1055
  122. metadata +105 -79
  123. data/lib/legion/llm/arbitrage.rb +0 -115
  124. data/lib/legion/llm/audit/exchange.rb +0 -11
  125. data/lib/legion/llm/audit/prompt_event.rb +0 -56
  126. data/lib/legion/llm/audit/skill_event.rb +0 -44
  127. data/lib/legion/llm/audit/tool_event.rb +0 -46
  128. data/lib/legion/llm/batch.rb +0 -178
  129. data/lib/legion/llm/claude_config_loader.rb +0 -63
  130. data/lib/legion/llm/codex_config_loader.rb +0 -111
  131. data/lib/legion/llm/compressor.rb +0 -203
  132. data/lib/legion/llm/confidence_score.rb +0 -49
  133. data/lib/legion/llm/confidence_scorer.rb +0 -235
  134. data/lib/legion/llm/context_curator.rb +0 -313
  135. data/lib/legion/llm/conversation_store.rb +0 -548
  136. data/lib/legion/llm/cost_estimator.rb +0 -51
  137. data/lib/legion/llm/cost_tracker.rb +0 -99
  138. data/lib/legion/llm/daemon_client.rb +0 -249
  139. data/lib/legion/llm/embeddings.rb +0 -481
  140. data/lib/legion/llm/fleet/error.rb +0 -61
  141. data/lib/legion/llm/fleet/exchange.rb +0 -12
  142. data/lib/legion/llm/fleet/request.rb +0 -30
  143. data/lib/legion/llm/fleet/response.rb +0 -49
  144. data/lib/legion/llm/metering/event.rb +0 -32
  145. data/lib/legion/llm/metering/exchange.rb +0 -11
  146. data/lib/legion/llm/native_dispatch.rb +0 -140
  147. data/lib/legion/llm/off_peak.rb +0 -35
  148. data/lib/legion/llm/override_confidence.rb +0 -177
  149. data/lib/legion/llm/pipeline.rb +0 -22
  150. data/lib/legion/llm/prompt.rb +0 -220
  151. data/lib/legion/llm/provider_registry.rb +0 -40
  152. data/lib/legion/llm/providers.rb +0 -260
  153. data/lib/legion/llm/quality_checker.rb +0 -83
  154. data/lib/legion/llm/response_cache.rb +0 -149
  155. data/lib/legion/llm/routes.rb +0 -757
  156. data/lib/legion/llm/settings.rb +0 -328
  157. data/lib/legion/llm/shadow_eval.rb +0 -131
  158. data/lib/legion/llm/structured_output.rb +0 -81
  159. data/lib/legion/llm/token_tracker.rb +0 -120
  160. /data/lib/legion/llm/{pipeline → inference}/mcp_tool_adapter.rb +0 -0
  161. /data/lib/legion/llm/{usage.rb → metering/usage.rb} +0 -0
  162. /data/lib/legion/llm/router/{escalation_chain.rb → escalation/chain.rb} +0 -0
  163. /data/lib/legion/llm/{escalation_history.rb → router/escalation/history.rb} +0 -0
  164. /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: 2e8391f38dbda2f0d629e206bb8844f50768d4200808b85e543f71115d639a65
4
- data.tar.gz: ae14b4b492a61f8d626ae388ea819851372050df2ee78c7a37fd831e7e4d3fa4
3
+ metadata.gz: df10648acc8e54784f2c3e097d4fdf585e914264f78d1584f34483243eeea22a
4
+ data.tar.gz: dd01e52bb2a5b5f1096c2f4c91662252930531d8e96617511f1471b31a232566
5
5
  SHA512:
6
- metadata.gz: 58253917894e86a8050b7655109a912ebec090cb6eb85607264d5b6a7927d8222bfb5de6e87689e7ce51e0679beb30af7c0e7375a477fca533605564706f6d2e
7
- data.tar.gz: 3ae513c0ac3ffa347357be2ff50b8ee67ff2170ab416413855ce4f99e3558c17d7627365bf8e6cd4da579dd176d019163533db50ef255ad5f2f8a1504948e453
6
+ metadata.gz: c86a186203b5398f95c05e27c4cde7e07d0d981bfc53a316e5cf2e2d363332f5cfdb96acb961e3d8565fe10b4b88078cfd713cb9b61fb7a58bd598597e403ef7
7
+ data.tar.gz: 0b98ce0936adebd8f55cb6fd1075343e698b5c27c9b264ebb884bfe640177a9594bee0b0076c93fb3714e346dbd4d5acf797316c40d2ea3045d299cdf3f6779f
data/.gitignore CHANGED
@@ -18,3 +18,4 @@ legion.log
18
18
  .DS_Store
19
19
  .worktrees/
20
20
  .claude/
21
+ docs/
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # Legion LLM Changelog
2
2
 
3
- ## [Unreleased]
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
4
15
 
5
16
  ## [0.7.15] - 2026-04-20
6
17