Class: AgentClientProtocol::Client::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/agent_client_protocol/client/connection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(handler, reader, writer) ⇒ Connection

Returns a new instance of Connection.



10
11
12
13
14
15
16
17
18
19
# File 'lib/agent_client_protocol/client/connection.rb', line 10

def initialize(handler, reader, writer)
  @handler = handler
  router = Client.build_router(handler)
  @conn = AgentClientProtocol::Connection.new(
    reader: reader,
    writer: writer,
    handler: router.method(:call)
  )
  handler.on_connect(self)
end

Instance Attribute Details

#connObject (readonly)

Returns the value of attribute conn.



8
9
10
# File 'lib/agent_client_protocol/client/connection.rb', line 8

def conn
  @conn
end

Instance Method Details

#authenticate(method_id:) ⇒ Object



72
73
74
75
76
# File 'lib/agent_client_protocol/client/connection.rb', line 72

def authenticate(method_id:)
  params = Schema::AuthenticateRequest.new(method_id: method_id)
  result = @conn.send_request("authenticate", params.to_h)
  Schema::AuthenticateResponse.from_hash(result)
end

#cancel(session_id:) ⇒ Object



67
68
69
70
# File 'lib/agent_client_protocol/client/connection.rb', line 67

def cancel(session_id:)
  params = Schema::CancelNotification.new(session_id: session_id)
  @conn.send_notification("session/cancel", params.to_h)
end

#closeObject



103
104
105
# File 'lib/agent_client_protocol/client/connection.rb', line 103

def close
  @conn.close
end

#closed?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'lib/agent_client_protocol/client/connection.rb', line 107

def closed?
  @conn.closed?
end

#initialize_agent(protocol_version:, client_capabilities: nil, client_info: nil) ⇒ Object

--- Agent-calling methods (client sends to agent) ---



23
24
25
26
27
28
29
30
31
# File 'lib/agent_client_protocol/client/connection.rb', line 23

def initialize_agent(protocol_version:, client_capabilities: nil, client_info: nil)
  params = Schema::InitializeRequest.new(
    protocol_version: protocol_version,
    client_capabilities: client_capabilities,
    client_info: client_info
  )
  result = @conn.send_request("initialize", params.to_h)
  Schema::InitializeResponse.from_hash(result)
end

#listenObject

--- Lifecycle ---



99
100
101
# File 'lib/agent_client_protocol/client/connection.rb', line 99

def listen
  @conn.listen
end

#load_session(cwd:, session_id:, mcp_servers: []) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/agent_client_protocol/client/connection.rb', line 39

def load_session(cwd:, session_id:, mcp_servers: [])
  params = Schema::LoadSessionRequest.new(
    cwd: cwd,
    session_id: session_id,
    mcp_servers: mcp_servers
  )
  result = @conn.send_request("session/load", params.to_h)
  Schema::LoadSessionResponse.from_hash(result)
end

#new_session(cwd:, mcp_servers: []) ⇒ Object



33
34
35
36
37
# File 'lib/agent_client_protocol/client/connection.rb', line 33

def new_session(cwd:, mcp_servers: [])
  params = Schema::NewSessionRequest.new(cwd: cwd, mcp_servers: mcp_servers)
  result = @conn.send_request("session/new", params.to_h)
  Schema::NewSessionResponse.from_hash(result)
end

#prompt(session_id:, prompt:) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/agent_client_protocol/client/connection.rb', line 49

def prompt(session_id:, prompt:)
  prompt_blocks = case prompt
                  when String
                    [Schema::TextContent.new(text: prompt).to_h]
                  when Array
                    prompt.map { |b| b.is_a?(Schema::BaseModel) ? b.to_h : b }
                  else
                    [prompt.is_a?(Schema::BaseModel) ? prompt.to_h : prompt]
                  end

  params = Schema::PromptRequest.new(
    session_id: session_id,
    prompt: prompt_blocks
  )
  result = @conn.send_request("session/prompt", params.to_h)
  Schema::PromptResponse.from_hash(result)
end

#set_config_option(session_id:, config_id:, value:) ⇒ Object



87
88
89
90
91
92
93
94
95
# File 'lib/agent_client_protocol/client/connection.rb', line 87

def set_config_option(session_id:, config_id:, value:)
  params = Schema::SetSessionConfigOptionRequest.new(
    session_id: session_id,
    config_id: config_id,
    value: value
  )
  result = @conn.send_request("session/set_config_option", params.to_h)
  Schema::SetSessionConfigOptionResponse.from_hash(result)
end

#set_session_mode(session_id:, mode_id:) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/agent_client_protocol/client/connection.rb', line 78

def set_session_mode(session_id:, mode_id:)
  params = Schema::SetSessionModeRequest.new(
    session_id: session_id,
    mode_id: mode_id
  )
  result = @conn.send_request("session/set_mode", params.to_h)
  Schema::SetSessionModeResponse.from_hash(result)
end