Skip to content
Kward Search API index

Class: Kward::SessionTabDriver

Inherits:
Object
  • Object
show all
Defined in:
lib/kward/tabs/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.



16
17
18
19
20
# File 'lib/kward/tabs/driver.rb', line 16

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

Instance Attribute Details

#agent ⇒ Object (readonly)

Returns the value of attribute agent.



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

def agent
  @agent
end

#session ⇒ Object (readonly)

Returns the value of attribute session.



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

def session
  @session
end

#worktree ⇒ Object (readonly)

Returns the value of attribute worktree.



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

def worktree
  @worktree
end

Instance Method Details

#assistant_label ⇒ Object



51
52
53
# File 'lib/kward/tabs/driver.rb', line 51

def assistant_label
  nil
end

#conversation ⇒ Object



26
27
28
# File 'lib/kward/tabs/driver.rb', line 26

def conversation
  agent.conversation
end

#descriptor ⇒ Object



37
38
39
40
41
# File 'lib/kward/tabs/driver.rb', line 37

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

#messages ⇒ Object



22
23
24
# File 'lib/kward/tabs/driver.rb', line 22

def messages
  agent.conversation.messages
end

#session? ⇒ Boolean

Returns:

  • (Boolean)


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

def session?
  true
end

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



30
31
32
33
34
35
# File 'lib/kward/tabs/driver.rb', line 30

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)


47
48
49
# File 'lib/kward/tabs/driver.rb', line 47

def supports_steering?
  true
end