Class: RailsMarkup::HttpStoreProxy
- Inherits:
-
Object
- Object
- RailsMarkup::HttpStoreProxy
- Defined in:
- lib/rails_markup/http_store_proxy.rb
Overview
Proxies store operations to an existing HTTP server. Used when MCP starts but the HTTP port is already taken — delegates reads/writes to the running server's HTTP API.
Instance Method Summary collapse
- #acknowledge(id) ⇒ Object
- #all_pending ⇒ Object
- #create_annotation(session_id:, target:, content:, intent: "change", severity: "suggestion", selected_text: nil, metadata: nil) ⇒ Object
- #create_session(url:, metadata: nil) ⇒ Object
- #dismiss(id, reason: nil) ⇒ Object
- #get_annotation(id) ⇒ Object
- #get_session(id) ⇒ Object
-
#initialize(base_url: "http://localhost:4747") ⇒ HttpStoreProxy
constructor
A new instance of HttpStoreProxy.
- #list_sessions ⇒ Object
- #pending_for_session(session_id) ⇒ Object
- #reply(id, message:) ⇒ Object
- #resolve(id, summary: nil) ⇒ Object
- #serialize_annotation(data) ⇒ Object
-
#serialize_session(data) ⇒ Object
Proxy serialization — data is already serialized from HTTP.
-
#subscribe(_session_id = nil, &_block) ⇒ Object
Watch not supported via HTTP proxy — return empty after timeout.
- #unsubscribe(_sub) ⇒ Object
Constructor Details
#initialize(base_url: "http://localhost:4747") ⇒ HttpStoreProxy
Returns a new instance of HttpStoreProxy.
12 13 14 15 |
# File 'lib/rails_markup/http_store_proxy.rb', line 12 def initialize(base_url: "http://localhost:4747") @base_url = base_url @uri = URI.parse(base_url) end |
Instance Method Details
#acknowledge(id) ⇒ Object
57 58 59 |
# File 'lib/rails_markup/http_store_proxy.rb', line 57 def acknowledge(id) post("/annotations/#{id}/acknowledge", {}) end |
#all_pending ⇒ Object
29 30 31 |
# File 'lib/rails_markup/http_store_proxy.rb', line 29 def all_pending get("/pending") || [] end |
#create_annotation(session_id:, target:, content:, intent: "change", severity: "suggestion", selected_text: nil, metadata: nil) ⇒ Object
50 51 52 53 54 55 |
# File 'lib/rails_markup/http_store_proxy.rb', line 50 def create_annotation(session_id:, target:, content:, intent: "change", severity: "suggestion", selected_text: nil, metadata: nil) post("/sessions/#{session_id}/annotations", { target: target, content: content, intent: intent, severity: severity, selectedText: selected_text, metadata: }) end |
#create_session(url:, metadata: nil) ⇒ Object
25 26 27 |
# File 'lib/rails_markup/http_store_proxy.rb', line 25 def create_session(url:, metadata: nil) post("/sessions", { url: url, metadata: }) end |
#dismiss(id, reason: nil) ⇒ Object
65 66 67 |
# File 'lib/rails_markup/http_store_proxy.rb', line 65 def dismiss(id, reason: nil) post("/annotations/#{id}/dismiss", { reason: reason }) end |
#get_annotation(id) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/rails_markup/http_store_proxy.rb', line 40 def get_annotation(id) # Search all sessions for this annotation (not just pending) list_sessions.each do |session| (session["annotations"] || []).each do |ann| return ann if ann["id"] == id end end nil end |
#get_session(id) ⇒ Object
21 22 23 |
# File 'lib/rails_markup/http_store_proxy.rb', line 21 def get_session(id) get("/sessions/#{id}") end |
#list_sessions ⇒ Object
17 18 19 |
# File 'lib/rails_markup/http_store_proxy.rb', line 17 def list_sessions get("/sessions") || [] end |
#pending_for_session(session_id) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/rails_markup/http_store_proxy.rb', line 33 def pending_for_session(session_id) session = get_session(session_id) return [] unless session (session["annotations"] || []).select { |a| a["status"] == "pending" } end |
#reply(id, message:) ⇒ Object
69 70 71 |
# File 'lib/rails_markup/http_store_proxy.rb', line 69 def reply(id, message:) post("/annotations/#{id}/reply", { message: }) end |
#resolve(id, summary: nil) ⇒ Object
61 62 63 |
# File 'lib/rails_markup/http_store_proxy.rb', line 61 def resolve(id, summary: nil) post("/annotations/#{id}/resolve", { summary: summary }) end |
#serialize_annotation(data) ⇒ Object
78 79 80 |
# File 'lib/rails_markup/http_store_proxy.rb', line 78 def serialize_annotation(data) data end |
#serialize_session(data) ⇒ Object
Proxy serialization — data is already serialized from HTTP
74 75 76 |
# File 'lib/rails_markup/http_store_proxy.rb', line 74 def serialize_session(data) data end |
#subscribe(_session_id = nil, &_block) ⇒ Object
Watch not supported via HTTP proxy — return empty after timeout
83 84 85 |
# File 'lib/rails_markup/http_store_proxy.rb', line 83 def subscribe(_session_id = nil, &_block) nil end |
#unsubscribe(_sub) ⇒ Object
87 88 89 |
# File 'lib/rails_markup/http_store_proxy.rb', line 87 def unsubscribe(_sub) nil end |