Skip to content
Kward Search API index

Class: Kward::SessionTabDriver

Inherits:
Object
  • Object
show all
Defined in:
lib/kward/tab_driver.rb

Overview

Adapts a session-backed agent to the tab runtime interface. Plugin tab drivers implement the same small surface without becoming Kward sessions.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session:, agent:, worktree: nil) ⇒ SessionTabDriver

Returns a new instance of SessionTabDriver.



8
9
10
11
12
# File 'lib/kward/tab_driver.rb', line 8

def initialize(session:, agent:, worktree: nil)
  @session = session
  @agent = agent
  @worktree = worktree
end

Instance Attribute Details

#agentObject (readonly)

Returns the value of attribute agent.



6
7
8
# File 'lib/kward/tab_driver.rb', line 6

def agent
  @agent
end

#sessionObject (readonly)

Returns the value of attribute session.



6
7
8
# File 'lib/kward/tab_driver.rb', line 6

def session
  @session
end

#worktreeObject (readonly)

Returns the value of attribute worktree.



6
7
8
# File 'lib/kward/tab_driver.rb', line 6

def worktree
  @worktree
end

Instance Method Details

#assistant_labelObject



43
44
45
# File 'lib/kward/tab_driver.rb', line 43

def assistant_label
  nil
end

#conversationObject



18
19
20
# File 'lib/kward/tab_driver.rb', line 18

def conversation
  agent.conversation
end

#descriptorObject



29
30
31
32
33
# File 'lib/kward/tab_driver.rb', line 29

def descriptor
  descriptor = { "kind" => "session", "session_path" => session.path }
  descriptor["worktree"] = worktree.descriptor if worktree
  descriptor
end

#messagesObject



14
15
16
# File 'lib/kward/tab_driver.rb', line 14

def messages
  agent.conversation.messages
end

#session?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/kward/tab_driver.rb', line 35

def session?
  true
end

#submit(input, display_input:, cancellation:, steering: nil, &block) ⇒ Object



22
23
24
25
26
27
# File 'lib/kward/tab_driver.rb', line 22

def submit(input, display_input:, cancellation:, steering: nil, &block)
  options = { cancellation: cancellation }
  options[:display_input] = display_input unless display_input.nil?
  options[:steering] = steering if steering
  agent.ask(input, **options, &block)
end

#supports_steering?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/kward/tab_driver.rb', line 39

def supports_steering?
  true
end