Class: RubynCode::IDE::Handlers::ApproveToolUseHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/rubyn_code/ide/handlers/approve_tool_use_handler.rb

Overview

Handles the “approveToolUse” JSON-RPC request.

The extension sends this after the user approves or denies a tool invocation surfaced with requiresApproval=true. All pending-approval state lives in the per-session ToolOutput adapter; this handler is a thin delegate so the server has something registered at the method name.

Instance Method Summary collapse

Constructor Details

#initialize(server) ⇒ ApproveToolUseHandler

Returns a new instance of ApproveToolUseHandler.



13
14
15
# File 'lib/rubyn_code/ide/handlers/approve_tool_use_handler.rb', line 13

def initialize(server)
  @server = server
end

Instance Method Details

#call(params) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rubyn_code/ide/handlers/approve_tool_use_handler.rb', line 17

def call(params)
  request_id = params['requestId']
  approved   = params['approved']

  return { 'resolved' => false, 'error' => 'Missing requestId' } unless request_id

  adapter = @server.tool_output_adapter
  return { 'resolved' => false, 'error' => 'No active session' } unless adapter

  resolved = adapter.resolve_approval(request_id, approved ? true : false)
  return { 'resolved' => false, 'error' => "No pending request: #{request_id}" } unless resolved

  { 'resolved' => true, 'requestId' => request_id }
end