Module: Legion::Context
- Defined in:
- lib/legion/context.rb
Defined Under Namespace
Classes: SessionContext
Class Method Summary collapse
- .current_session ⇒ Object
- .current_task_context ⇒ Object
- .end_session ⇒ Object
- .session_metadata ⇒ Object
- .start_session(user_id: nil) ⇒ Object
- .with_session(ctx) ⇒ Object
- .with_task_context(message) ⇒ Object
Class Method Details
.current_session ⇒ Object
23 24 25 |
# File 'lib/legion/context.rb', line 23 def current_session Thread.current[:legion_session_context] end |
.current_task_context ⇒ Object
55 56 57 |
# File 'lib/legion/context.rb', line 55 def current_task_context Thread.current[:legion_context] end |
.end_session ⇒ Object
49 50 51 52 53 |
# File 'lib/legion/context.rb', line 49 def end_session ctx = Thread.current[:legion_session_context] Legion::Logging.debug "[Context] session cleared: #{ctx&.session_id}" if defined?(Legion::Logging) Thread.current[:legion_session_context] = nil end |
.session_metadata ⇒ Object
35 36 37 38 39 40 |
# File 'lib/legion/context.rb', line 35 def ctx = current_session return {} unless ctx ctx.to_h end |
.start_session(user_id: nil) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/legion/context.rb', line 42 def start_session(user_id: nil) ctx = SessionContext.new(user_id: user_id) Thread.current[:legion_session_context] = ctx Legion::Logging.debug "[Context] session started: #{ctx.session_id}" if defined?(Legion::Logging) ctx end |
.with_session(ctx) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/legion/context.rb', line 27 def with_session(ctx) previous = Thread.current[:legion_session_context] Thread.current[:legion_session_context] = ctx yield ensure Thread.current[:legion_session_context] = previous end |
.with_task_context(message) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/legion/context.rb', line 59 def with_task_context() previous = Thread.current[:legion_context] Thread.current[:legion_context] = { task_id: [:task_id], conversation_id: [:conversation_id], chain_id: [:chain_id], function: [:function], runner_class: [:runner_class] }.compact yield ensure Thread.current[:legion_context] = previous end |