Class: AgentClientProtocol::Agent::Connection
- Inherits:
-
Object
- Object
- AgentClientProtocol::Agent::Connection
- Defined in:
- lib/agent_client_protocol/agent/connection.rb
Instance Attribute Summary collapse
-
#conn ⇒ Object
readonly
Returns the value of attribute conn.
Instance Method Summary collapse
- #close ⇒ Object
- #closed? ⇒ Boolean
- #create_terminal(session_id:, command:, args: nil, cwd: nil, env: nil) ⇒ Object
-
#initialize(handler, reader, writer) ⇒ Connection
constructor
A new instance of Connection.
- #kill_terminal(session_id:, terminal_id:) ⇒ Object
-
#listen ⇒ Object
--- Lifecycle ---.
- #read_text_file(session_id:, path:, line: nil, limit: nil) ⇒ Object
- #release_terminal(session_id:, terminal_id:) ⇒ Object
- #request_permission(session_id:, tool_call:, options:) ⇒ Object
-
#session_update(session_id:, update:) ⇒ Object
--- Client-calling methods (agent sends to client) ---.
- #terminal_output(session_id:, terminal_id:) ⇒ Object
- #wait_for_terminal_exit(session_id:, terminal_id:) ⇒ Object
- #write_text_file(session_id:, path:, content:) ⇒ Object
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/agent/connection.rb', line 10 def initialize(handler, reader, writer) @handler = handler router = Agent.build_router(handler) @conn = AgentClientProtocol::Connection.new( reader: reader, writer: writer, handler: router.method(:call) ) handler.on_connect(self) end |
Instance Attribute Details
#conn ⇒ Object (readonly)
Returns the value of attribute conn.
8 9 10 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 8 def conn @conn end |
Instance Method Details
#close ⇒ Object
116 117 118 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 116 def close @conn.close end |
#closed? ⇒ Boolean
120 121 122 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 120 def closed? @conn.closed? end |
#create_terminal(session_id:, command:, args: nil, cwd: nil, env: nil) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 62 def create_terminal(session_id:, command:, args: nil, cwd: nil, env: nil) params = Schema::CreateTerminalRequest.new( session_id: session_id, command: command, args: args, cwd: cwd, env: env ) result = @conn.send_request("terminal/create", params.to_h) Schema::CreateTerminalResponse.from_hash(result) end |
#kill_terminal(session_id:, terminal_id:) ⇒ Object
101 102 103 104 105 106 107 108 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 101 def kill_terminal(session_id:, terminal_id:) params = Schema::KillTerminalCommandRequest.new( session_id: session_id, terminal_id: terminal_id ) result = @conn.send_request("terminal/kill", params.to_h) Schema::KillTerminalCommandResponse.from_hash(result) end |
#listen ⇒ Object
--- Lifecycle ---
112 113 114 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 112 def listen @conn.listen end |
#read_text_file(session_id:, path:, line: nil, limit: nil) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 41 def read_text_file(session_id:, path:, line: nil, limit: nil) params = Schema::ReadTextFileRequest.new( session_id: session_id, path: path, line: line, limit: limit ) result = @conn.send_request("fs/read_text_file", params.to_h) Schema::ReadTextFileResponse.from_hash(result) end |
#release_terminal(session_id:, terminal_id:) ⇒ Object
83 84 85 86 87 88 89 90 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 83 def release_terminal(session_id:, terminal_id:) params = Schema::ReleaseTerminalRequest.new( session_id: session_id, terminal_id: terminal_id ) result = @conn.send_request("terminal/release", params.to_h) Schema::ReleaseTerminalResponse.from_hash(result) end |
#request_permission(session_id:, tool_call:, options:) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 31 def (session_id:, tool_call:, options:) params = Schema::RequestPermissionRequest.new( session_id: session_id, tool_call: tool_call.is_a?(Schema::BaseModel) ? tool_call : Schema::ToolCallUpdate.from_hash(tool_call), options: ) result = @conn.send_request("session/request_permission", params.to_h) Schema::RequestPermissionResponse.from_hash(result) end |
#session_update(session_id:, update:) ⇒ Object
--- Client-calling methods (agent sends to client) ---
23 24 25 26 27 28 29 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 23 def session_update(session_id:, update:) params = Schema::SessionNotification.new( session_id: session_id, update: update ) @conn.send_notification("session/update", params.to_h) end |
#terminal_output(session_id:, terminal_id:) ⇒ Object
74 75 76 77 78 79 80 81 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 74 def terminal_output(session_id:, terminal_id:) params = Schema::TerminalOutputRequest.new( session_id: session_id, terminal_id: terminal_id ) result = @conn.send_request("terminal/output", params.to_h) Schema::TerminalOutputResponse.from_hash(result) end |
#wait_for_terminal_exit(session_id:, terminal_id:) ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 92 def wait_for_terminal_exit(session_id:, terminal_id:) params = Schema::WaitForTerminalExitRequest.new( session_id: session_id, terminal_id: terminal_id ) result = @conn.send_request("terminal/wait_for_exit", params.to_h) Schema::WaitForTerminalExitResponse.from_hash(result) end |
#write_text_file(session_id:, path:, content:) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/agent_client_protocol/agent/connection.rb', line 52 def write_text_file(session_id:, path:, content:) params = Schema::WriteTextFileRequest.new( session_id: session_id, path: path, content: content ) result = @conn.send_request("fs/write_text_file", params.to_h) Schema::WriteTextFileResponse.from_hash(result) end |