legionio 1.4.98 → 1.4.99

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: 99547889a1a0d5160a4266e544fe9e81f1c1684f2e18037b37a76363e97c9606
4
- data.tar.gz: f0d67884f2b5112954f5e534539eb8919a8b2497dfa28215d12a7a45c99f3a15
3
+ metadata.gz: 8a553c0aa3d45028625552525159880be65a55fb43002865b19e6e02db32feb7
4
+ data.tar.gz: 96aeca93c251fe5fb2f4b6be197511f6094848940d19e2274bf3d77d019382d4
5
5
  SHA512:
6
- metadata.gz: 476a4954da81f8f79e601bcd8cb45a05f275c2055c076f1bc9ec1b93d0dbd61bb955412ca2a1c3777f7bc92f856c442c47adfd405a4013461d2b36927d7f7c52
7
- data.tar.gz: 3e9792cf546097efbd9a08271123f00ee272b170a34654a65888d1ffc0fe1bf316dfb143e5f6932ca0caf2b0df9482e9d7e7ee0ca75eb937b66b5da302f5d1dc
6
+ metadata.gz: 105e4dc81f74bb9a5aef81771a30fcec18ea29171d78040fef5a90d9235e191890c732569a68dd7ac225e68d0b69c35a11b78d78f2917f215b59d39a8c272145
7
+ data.tar.gz: a35491bdef7e4869acae4ee75fc7f303d259ee72c49e4dd30db99e7ea8f176e43c137e344ecbfc8cf6fa3aa0998dafef4e695c49520fb57ecfc9e9a8c3e65485
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Legion Changelog
2
2
 
3
+ ## [1.4.99] - 2026-03-21
4
+
5
+ ### Fixed
6
+ - `Base#manual` resolves String `runner_class` via `Kernel.const_get` before calling `.send` — fixes NoMethodError on lex-telemetry Publisher and lex-llm-gateway SpoolFlush actors
7
+ - `Base#manual` falls back to `:action` when `runner_function` is not defined — fixes NameError on self-contained actors (lex-lex AgentWatcher, lex-detect ObserverTick)
8
+
3
9
  ## [1.4.98] - 2026-03-20
4
10
 
5
11
  ### Fixed
@@ -58,7 +58,7 @@ module Legion
58
58
  model = body[:model]
59
59
  provider = body[:provider]
60
60
 
61
- if cache_available?
61
+ if cache_available? && env['HTTP_X_LEGION_SYNC'] != 'true'
62
62
  llm = Legion::LLM
63
63
  rc = Legion::LLM::ResponseCache
64
64
  rc.init_request(request_id)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ class API < Sinatra::Base
5
+ module Middleware
6
+ class RequestLogger
7
+ def initialize(app)
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
13
+ status, headers, body = @app.call(env)
14
+ duration = ((::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start) * 1000).round(2)
15
+
16
+ Legion::Logging.info "[api] #{env['REQUEST_METHOD']} #{env['PATH_INFO']} #{status} #{duration}ms"
17
+ [status, headers, body]
18
+ rescue StandardError => e
19
+ duration = ((::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start) * 1000).round(2)
20
+ Legion::Logging.error "[api] #{env['REQUEST_METHOD']} #{env['PATH_INFO']} 500 #{duration}ms - #{e.message}"
21
+ raise
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
data/lib/legion/api.rb CHANGED
@@ -8,6 +8,7 @@ require_relative 'readiness'
8
8
  require_relative 'api/middleware/auth'
9
9
  require_relative 'api/middleware/body_limit'
10
10
  require_relative 'api/middleware/rate_limit'
11
+ require_relative 'api/middleware/request_logger'
11
12
  require_relative 'api/helpers'
12
13
  require_relative 'api/validators'
13
14
  require_relative 'api/tasks'
@@ -123,6 +124,7 @@ module Legion
123
124
  register Routes::Acp
124
125
  register Routes::Prompts
125
126
 
127
+ use Legion::API::Middleware::RequestLogger
126
128
  use Legion::Rbac::Middleware if defined?(Legion::Rbac::Middleware)
127
129
 
128
130
  # Hook registry (preserved from original implementation)
@@ -14,7 +14,10 @@ module Legion
14
14
  end
15
15
 
16
16
  def manual
17
- runner_class.send(runner_function, **args)
17
+ klass = runner_class
18
+ klass = Kernel.const_get(klass) if klass.is_a?(String)
19
+ func = respond_to?(:runner_function) ? runner_function : :action
20
+ klass.send(func, **args)
18
21
  rescue StandardError => e
19
22
  Legion::Logging.error e.message
20
23
  Legion::Logging.error e.backtrace
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Legion
4
- VERSION = '1.4.98'
4
+ VERSION = '1.4.99'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legionio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.98
4
+ version: 1.4.99
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -375,6 +375,7 @@ files:
375
375
  - lib/legion/api/middleware/auth.rb
376
376
  - lib/legion/api/middleware/body_limit.rb
377
377
  - lib/legion/api/middleware/rate_limit.rb
378
+ - lib/legion/api/middleware/request_logger.rb
378
379
  - lib/legion/api/middleware/tenant.rb
379
380
  - lib/legion/api/nodes.rb
380
381
  - lib/legion/api/openapi.rb