Class: Parse::Agent::MCPDispatcher::LogLevelRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/parse/agent/mcp_dispatcher.rb

Overview

Per-session minimum log level, keyed by the MCP session id (the agent's correlation id). LRU-bounded so a stream of sessions that never terminate cannot grow it without limit.

Constant Summary collapse

DEFAULT_MAX_ENTRIES =
10_000

Instance Method Summary collapse

Constructor Details

#initialize(max_entries: DEFAULT_MAX_ENTRIES) ⇒ LogLevelRegistry

Returns a new instance of LogLevelRegistry.



115
116
117
118
119
# File 'lib/parse/agent/mcp_dispatcher.rb', line 115

def initialize(max_entries: DEFAULT_MAX_ENTRIES)
  @levels = {}
  @max = max_entries
  @mutex = Mutex.new
end

Instance Method Details

#forget(session_id) ⇒ Object



139
140
141
142
# File 'lib/parse/agent/mcp_dispatcher.rb', line 139

def forget(session_id)
  return if session_id.nil?
  @mutex.synchronize { @levels.delete(session_id.to_s) }
end

#get(session_id) ⇒ String?

Returns the level the session asked for, or nil when it never sent logging/setLevel.

Returns:

  • (String, nil) —

    the level the session asked for, or nil when it never sent logging/setLevel.



134
135
136
137
# File 'lib/parse/agent/mcp_dispatcher.rb', line 134

def get(session_id)
  return nil if session_id.nil?
  @mutex.synchronize { @levels[session_id.to_s] }
end

#set(session_id, level) ⇒ Object

Parameters:



123
124
125
126
127
128
129
130
# File 'lib/parse/agent/mcp_dispatcher.rb', line 123

def set(session_id, level)
  return if session_id.nil? || session_id.to_s.empty?
  @mutex.synchronize do
    @levels.delete(session_id.to_s)
    @levels[session_id.to_s] = level
    @levels.shift while @levels.size > @max
  end
end