legion-llm 0.7.0 → 0.7.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9434ffcb40fb1c04975e72914ee52527be3cd88241ed9f173177abd67386e69
4
- data.tar.gz: 1c56c1f6fb21f441d976f4cfc9012023c65f296693f2c18dde54b7dbe89e7f14
3
+ metadata.gz: 8b45bd6da77e9f1bfa54bbe8cef0330984d726a4be291b5da8c2611e5fd1f4c6
4
+ data.tar.gz: 1d2f431ae0acea79e69d1b713e88be7a9ed3ceafad7d6137216205a61c0581e8
5
5
  SHA512:
6
- metadata.gz: 1a2099e39f14bd3750728a6c3015b6cce4a84ea22beca9383ebe9455e5eb1452c0afc52ea380a90650e975a0b8cbe7f405e1a523dad902511eb1854be28f450b
7
- data.tar.gz: b127e711a671a3f11ee40f7f854dc264a99d636be24b5f6ee7d46e943788247e669a65e1a6792745e91f4927c879e069e4e929b13f0ace4d30ab714b1beac792
6
+ metadata.gz: '048b7301876dd85767d05d721a144220a98ec6712fb69b70268cef6d1aafbd25e392cb9e5735734e30edf2790c3f038936c0c2db194cc4710c55b2afb94442b3'
7
+ data.tar.gz: d0e5196c17d049bbee9a14d4a1546b716da5c0781d3e8bba8faae4cc4fa63462ee95fd94acd68b9cd18d30ef2acc6fc1e8d772152d6beca7c1fa25ea96e2cd41
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.7.2] - 2026-04-13
6
+
7
+ ### Fixed
8
+ - `transport_connected?` checks in audit, metering, fleet dispatcher, hooks/metering, and hooks/reflection all used `Legion::Transport.connected?` which does not exist at the module level — always returned `false`, silently dropping all AMQP publishes; replaced with canonical `Legion::Settings[:transport][:connected]` check (#61)
9
+
10
+ ## [0.7.1] - 2026-04-13
11
+
12
+ ### Fixed
13
+ - `Skills::Settings.apply` called undefined `[]=` on `Legion::Settings` module, raising `NoMethodError` that killed `LLM.start` before `@started` was set — caused all `/api/llm/inference` requests to 503 and all `llm_required?` extensions to be skipped (#60)
14
+ - Removed dead `defined?(Legion::Settings)` guard — `legion-settings` is a hard dependency
15
+ - Spec no longer relies on test-stub-only `[]=` that masked the production bug
16
+
5
17
  ## [0.7.0] - 2026-04-12
6
18
 
7
19
  ### Added
@@ -59,9 +59,8 @@ module Legion
59
59
  end
60
60
 
61
61
  def transport_connected?
62
- !!(defined?(Legion::Transport) &&
63
- Legion::Transport.respond_to?(:connected?) &&
64
- Legion::Transport.connected?)
62
+ !!(defined?(Legion::Settings) &&
63
+ Legion::Settings[:transport][:connected] == true)
65
64
  end
66
65
  end
67
66
  end
@@ -74,9 +74,8 @@ module Legion
74
74
  end
75
75
 
76
76
  def transport_ready?
77
- !!(defined?(Legion::Transport) &&
78
- Legion::Transport.respond_to?(:connected?) &&
79
- Legion::Transport.connected?)
77
+ !!(defined?(Legion::Settings) &&
78
+ Legion::Settings[:transport][:connected] == true)
80
79
  end
81
80
 
82
81
  def fleet_enabled?
@@ -77,9 +77,8 @@ module Legion
77
77
  end
78
78
 
79
79
  def transport_metering?
80
- defined?(Legion::Transport) &&
81
- Legion::Transport.respond_to?(:connected?) &&
82
- Legion::Transport.connected?
80
+ defined?(Legion::Settings) &&
81
+ Legion::Settings[:transport][:connected] == true
83
82
  rescue StandardError => e
84
83
  handle_exception(e, level: :debug)
85
84
  false
@@ -222,9 +222,8 @@ module Legion
222
222
  private_class_method :truncate
223
223
 
224
224
  def apollo_transport?
225
- defined?(Legion::Transport) &&
226
- Legion::Transport.respond_to?(:connected?) &&
227
- Legion::Transport.connected?
225
+ defined?(Legion::Settings) &&
226
+ Legion::Settings[:transport][:connected] == true
228
227
  rescue StandardError => e
229
228
  handle_exception(e, level: :debug, operation: 'llm.hooks.reflection.apollo_transport')
230
229
  false
@@ -45,9 +45,8 @@ module Legion
45
45
  end
46
46
 
47
47
  def transport_connected?
48
- !!(defined?(Legion::Transport) &&
49
- Legion::Transport.respond_to?(:connected?) &&
50
- Legion::Transport.connected?)
48
+ !!(defined?(Legion::Settings) &&
49
+ Legion::Settings[:transport][:connected] == true)
51
50
  end
52
51
 
53
52
  def spool_available?
@@ -6,18 +6,18 @@ module Legion
6
6
  module Profile
7
7
  GAIA_SKIP = %i[
8
8
  idempotency conversation_uuid context_load rbac classification
9
- billing gaia_advisory trigger_match tool_discovery context_store post_response
9
+ billing gaia_advisory trigger_match skill_injector tool_discovery context_store post_response
10
10
  ].freeze
11
11
 
12
12
  SYSTEM_SKIP = %i[
13
13
  idempotency conversation_uuid context_load rbac classification
14
- billing gaia_advisory rag_context trigger_match tool_discovery context_store
14
+ billing gaia_advisory rag_context trigger_match skill_injector tool_discovery context_store
15
15
  post_response
16
16
  ].freeze
17
17
 
18
18
  QUICK_REPLY_SKIP = %i[
19
19
  idempotency conversation_uuid context_load classification
20
- gaia_advisory rag_context trigger_match tool_discovery confidence_scoring
20
+ gaia_advisory rag_context trigger_match skill_injector tool_discovery confidence_scoring
21
21
  tool_calls context_store post_response knowledge_capture
22
22
  ].freeze
23
23
 
@@ -25,7 +25,7 @@ module Legion
25
25
 
26
26
  SERVICE_SKIP = %i[
27
27
  conversation_uuid context_load gaia_advisory
28
- rag_context trigger_match tool_discovery confidence_scoring
28
+ rag_context trigger_match skill_injector tool_discovery confidence_scoring
29
29
  tool_calls context_store knowledge_capture
30
30
  ].freeze
31
31
 
@@ -18,13 +18,8 @@ module Legion
18
18
  module_function
19
19
 
20
20
  def apply
21
- return unless defined?(Legion::Settings)
22
-
23
- llm_settings = (Legion::Settings[:llm] || {}).dup
24
- current = llm_settings[:skills] || {}
25
- merged = deep_merge(DEFAULTS, current)
26
- llm_settings[:skills] = merged
27
- Legion::Settings[:llm] = llm_settings
21
+ current = Legion::Settings[:llm][:skills] || {}
22
+ Legion::Settings[:llm][:skills] = deep_merge(DEFAULTS, current)
28
23
  end
29
24
 
30
25
  def deep_merge(base, override)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module LLM
5
- VERSION = '0.7.0'
5
+ VERSION = '0.7.2'
6
6
  end
7
7
  end
data/lib/legion/llm.rb CHANGED
@@ -823,9 +823,7 @@ module Legion
823
823
 
824
824
  log.info("Escalation event: #{final_outcome}, #{history.size} attempts")
825
825
 
826
- if defined?(Legion::Transport) && Legion::Transport.respond_to?(:connected?) && Legion::Transport.connected?
827
- Transport::Messages::EscalationEvent.new(payload).publish
828
- end
826
+ Transport::Messages::EscalationEvent.new(payload).publish if defined?(Legion::Settings) && Legion::Settings[:transport][:connected] == true
829
827
  rescue StandardError => e
830
828
  handle_exception(e, level: :warn, operation: 'llm.publish_escalation_event', outcome: final_outcome)
831
829
  nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity