Module: Legion::MCP::TracingContext
- Defined in:
- lib/legion/mcp/tracing_context.rb
Constant Summary collapse
- THREAD_KEYS =
%i[ legion_mcp_conversation_id legion_mcp_request_id legion_mcp_exchange_id legion_mcp_tool_call_id legion_mcp_trace_id ].freeze
Class Method Summary collapse
- .clear ⇒ Object
- .current ⇒ Object
- .generate_conversation_id ⇒ Object
- .generate_exchange_id ⇒ Object
- .generate_request_id(jsonrpc_id) ⇒ Object
- .generate_tool_call_id ⇒ Object
- .generate_trace_id ⇒ Object
- .set(conversation_id:, request_id:, exchange_id:, tool_call_id:, trace_id:) ⇒ Object
Class Method Details
.clear ⇒ Object
46 47 48 |
# File 'lib/legion/mcp/tracing_context.rb', line 46 def clear THREAD_KEYS.each { |key| Thread.current[key] = nil } end |
.current ⇒ Object
50 51 52 53 54 55 |
# File 'lib/legion/mcp/tracing_context.rb', line 50 def current THREAD_KEYS.each_with_object({}) do |key, hash| short = key.to_s.delete_prefix('legion_mcp_').to_sym hash[short] = Thread.current[key] end end |
.generate_conversation_id ⇒ Object
18 19 20 |
# File 'lib/legion/mcp/tracing_context.rb', line 18 def generate_conversation_id "mcp_#{SecureRandom.uuid}" end |
.generate_exchange_id ⇒ Object
30 31 32 |
# File 'lib/legion/mcp/tracing_context.rb', line 30 def generate_exchange_id "exch_#{SecureRandom.hex(12)}" end |
.generate_request_id(jsonrpc_id) ⇒ Object
26 27 28 |
# File 'lib/legion/mcp/tracing_context.rb', line 26 def generate_request_id(jsonrpc_id) "req_#{jsonrpc_id || SecureRandom.hex(8)}" end |
.generate_tool_call_id ⇒ Object
34 35 36 |
# File 'lib/legion/mcp/tracing_context.rb', line 34 def generate_tool_call_id "call_#{SecureRandom.hex(12)}" end |
.generate_trace_id ⇒ Object
22 23 24 |
# File 'lib/legion/mcp/tracing_context.rb', line 22 def generate_trace_id SecureRandom.hex(16) end |
.set(conversation_id:, request_id:, exchange_id:, tool_call_id:, trace_id:) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/legion/mcp/tracing_context.rb', line 38 def set(conversation_id:, request_id:, exchange_id:, tool_call_id:, trace_id:) Thread.current[:legion_mcp_conversation_id] = conversation_id Thread.current[:legion_mcp_request_id] = request_id Thread.current[:legion_mcp_exchange_id] = exchange_id Thread.current[:legion_mcp_tool_call_id] = tool_call_id Thread.current[:legion_mcp_trace_id] = trace_id end |