Class: RubyLLM::MCP::Native::TaskRegistry
- Inherits:
-
Object
- Object
- RubyLLM::MCP::Native::TaskRegistry
- Defined in:
- lib/ruby_llm/mcp/native/task_registry.rb
Overview
In-memory task state cache used by the native client. This keeps task metadata/status synchronized across list/get/cancel calls and out-of-band status notifications.
Instance Method Summary collapse
-
#initialize ⇒ TaskRegistry
constructor
A new instance of TaskRegistry.
- #payload(task_id) ⇒ Object
- #store_payload(task_id, payload) ⇒ Object
- #task(task_id) ⇒ Object
- #tasks ⇒ Object
- #update_status(task_id, status:, status_message: nil) ⇒ Object
- #upsert(task_hash) ⇒ Object
- #upsert_many(task_hashes) ⇒ Object
Constructor Details
#initialize ⇒ TaskRegistry
Returns a new instance of TaskRegistry.
10 11 12 13 14 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 10 def initialize @tasks = {} @payloads = {} @mutex = Mutex.new end |
Instance Method Details
#payload(task_id) ⇒ Object
40 41 42 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 40 def payload(task_id) @mutex.synchronize { @payloads[task_id] } end |
#store_payload(task_id, payload) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 28 def store_payload(task_id, payload) return if task_id.nil? @mutex.synchronize do @payloads[task_id] = payload end end |
#task(task_id) ⇒ Object
36 37 38 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 36 def task(task_id) @mutex.synchronize { @tasks[task_id] } end |
#tasks ⇒ Object
44 45 46 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 44 def tasks @mutex.synchronize { @tasks.values } end |
#update_status(task_id, status:, status_message: nil) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 48 def update_status(task_id, status:, status_message: nil) @mutex.synchronize do task = @tasks[task_id] return nil unless task task["status"] = status task["statusMessage"] = unless .nil? task["lastUpdatedAt"] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ") task end end |
#upsert(task_hash) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 16 def upsert(task_hash) return if task_hash.nil? || task_hash["taskId"].nil? @mutex.synchronize do @tasks[task_hash["taskId"]] = task_hash end end |
#upsert_many(task_hashes) ⇒ Object
24 25 26 |
# File 'lib/ruby_llm/mcp/native/task_registry.rb', line 24 def upsert_many(task_hashes) Array(task_hashes).each { |task| upsert(task) } end |