Skip to content
Kward Search API index

Class: Kward::PluginRegistry::Context

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

Overview

Runtime context passed to plugin commands, footers, prompt context renderers, and transcript event handlers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(conversation:, args: "", session: nil, workspace_root: Dir.pwd, say_callback: nil) ⇒ Context

Creates an object for trusted plugin loading and dispatch.



77
78
79
80
81
82
83
# File 'lib/kward/plugin_registry.rb', line 77

def initialize(conversation:, args: "", session: nil, workspace_root: Dir.pwd, say_callback: nil)
  @conversation = conversation
  @args = args.to_s
  @session = session
  @workspace_root = workspace_root
  @say_callback = say_callback
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



74
75
76
# File 'lib/kward/plugin_registry.rb', line 74

def args
  @args
end

#workspace_rootObject (readonly)

Returns the value of attribute workspace_root.



74
75
76
# File 'lib/kward/plugin_registry.rb', line 74

def workspace_root
  @workspace_root
end

Instance Method Details

#allow(message = nil, metadata: nil) ⇒ Hooks::Decision

Allows the current lifecycle event to continue.

Returns:



125
126
127
# File 'lib/kward/plugin_registry.rb', line 125

def allow(message = nil, metadata: nil)
  Hooks::Decision.allow(message, metadata: )
end

#ask(message = nil, metadata: nil) ⇒ Hooks::Decision

Requests frontend approval for the current lifecycle event.

Returns:



137
138
139
# File 'lib/kward/plugin_registry.rb', line 137

def ask(message = nil, metadata: nil)
  Hooks::Decision.ask(message, metadata: )
end

#defer(message = nil, payload: nil, metadata: nil) ⇒ Hooks::Decision

Defers the event when the current workflow supports it.

Returns:



162
163
164
# File 'lib/kward/plugin_registry.rb', line 162

def defer(message = nil, payload: nil, metadata: nil)
  Hooks::Decision.defer(message, payload: payload, metadata: )
end

#deny(message = nil, metadata: nil) ⇒ Hooks::Decision

Denies the current lifecycle event.

Returns:



131
132
133
# File 'lib/kward/plugin_registry.rb', line 131

def deny(message = nil, metadata: nil)
  Hooks::Decision.deny(message, metadata: )
end

#modify(payload, message: nil, metadata: nil) ⇒ Hooks::Decision

Continues with an event-specific payload replacement.

Parameters:

  • payload (Hash)

    replacement fields supported by the event

Returns:



144
145
146
# File 'lib/kward/plugin_registry.rb', line 144

def modify(payload, message: nil, metadata: nil)
  Hooks::Decision.modify(payload, message: message, metadata: )
end

#refresh_system_message!nil

Requests that the conversation rebuild its system message after plugin state changes that affect prompt context.

Returns:

  • (nil)


118
119
120
121
# File 'lib/kward/plugin_registry.rb', line 118

def refresh_system_message!
  @conversation.refresh_system_message! if @conversation.respond_to?(:refresh_system_message!)
  nil
end

#retry(message = nil, payload: nil, metadata: nil) ⇒ Hooks::Decision

Requests a retry when the current event supports it.

Returns:



156
157
158
# File 'lib/kward/plugin_registry.rb', line 156

def retry(message = nil, payload: nil, metadata: nil)
  Hooks::Decision.retry(message, payload: payload, metadata: )
end

#say(message) ⇒ nil

Emits command output to the active frontend when available.

Parameters:

  • message (#to_s)

    message to display

Returns:

  • (nil)


94
95
96
97
# File 'lib/kward/plugin_registry.rb', line 94

def say(message)
  @say_callback&.call(message.to_s)
  nil
end

#session_idString?

Returns active session identifier.

Returns:

  • (String, nil)

    active session identifier



100
101
102
# File 'lib/kward/plugin_registry.rb', line 100

def session_id
  @session&.id
end

#session_nameString?

Returns human-readable active session name.

Returns:

  • (String, nil)

    human-readable active session name



105
106
107
# File 'lib/kward/plugin_registry.rb', line 105

def session_name
  @session&.name
end

#session_pathString?

Returns saved active session path.

Returns:

  • (String, nil)

    saved active session path



110
111
112
# File 'lib/kward/plugin_registry.rb', line 110

def session_path
  @session&.path
end

#transcriptTranscript

Returns read-only transcript wrapper.

Returns:



86
87
88
# File 'lib/kward/plugin_registry.rb', line 86

def transcript
  Transcript.new(@conversation)
end

#warn(message = nil, metadata: nil) ⇒ Hooks::Decision

Allows the event while recording a warning.

Returns:



150
151
152
# File 'lib/kward/plugin_registry.rb', line 150

def warn(message = nil, metadata: nil)
  Hooks::Decision.warn(message, metadata: )
end