class Riffer::Skills::Context
rbs_inline: enabled
Attributes
@rbs @backend: Riffer::Skills::Backend @rbs @bodies: Hash[String, String] @rbs @activated: Array @rbs @preactivated: Array
Public Class Methods
Source
# File lib/riffer/skills/context.rb, line 18 def initialize(backend:, skills:, adapter:) @backend = backend @skills = skills @adapter = adapter @bodies = {} #: Hash[String, String] @activated = [] #: Array[String] @preactivated = [] #: Array[String] end
Public Instance Methods
Source
# File lib/riffer/skills/context.rb, line 88 def activatable? available_skills.any? end
Source
# File lib/riffer/skills/context.rb, line 39 def activate(name) body = read(name) unless @activated.include?(name) @activated << name @on_activate&.call(name) end body end
Raises Riffer::ArgumentError if the skill is not in the catalog.
Source
# File lib/riffer/skills/context.rb, line 76 def activated?(name) @activated.include?(name) end
Source
# File lib/riffer/skills/context.rb, line 51 def activation_prompt(name) body = activate(name) @adapter.render_activation(skills.fetch(name), body) end
Raises Riffer::ArgumentError if the skill is not in the catalog.
Source
# File lib/riffer/skills/context.rb, line 67 def deactivate(name) raise Riffer::ArgumentError, "Unknown skill: '#{name}'" unless skills.key?(name) @activated.delete(name) nil end
Raises Riffer::ArgumentError if the skill is not in the catalog.
Source
# File lib/riffer/skills/context.rb, line 82 def model_invocable?(name) skills.key?(name) && !skills.fetch(name).disable_model_invocation end
Source
# File lib/riffer/skills/context.rb, line 59 def preactivate(name) activate(name) @preactivated << name unless @preactivated.include?(name) end
Raises Riffer::ArgumentError if the skill is not in the catalog.
Source
# File lib/riffer/skills/context.rb, line 30 def read(name) raise Riffer::ArgumentError, "Unknown skill: '#{name}'" unless skills.key?(name) @bodies[name] ||= @backend.read_skill(name) end
Raises Riffer::ArgumentError if the skill is not in the catalog.
Source
# File lib/riffer/skills/context.rb, line 94 def system_prompt available = available_skills parts = [] #: Array[String] parts << @adapter.render_catalog(available) unless available.empty? @preactivated.each { |name| parts << @adapter.render_activation(skills.fetch(name), @bodies.fetch(name)) } parts.join("\n\n") end