Class: Protege::LoadTextResolver
- Inherits:
-
Resolver
- Object
- Resolver
- Protege::LoadTextResolver
- Defined in:
- app/resolvers/protege/load_text_resolver.rb
Overview
General-purpose resolver that runs a block and contributes its returned String as one context
message — the computed-text sibling of LoadFileResolver (text from a file) and LoadRecordResolver (text from
records). The block receives the resolver context, so the text can be derived from the agent or
the inbound message. The canonical use is an agent's system prompt held in a column:
resolvers do |chain|
chain.use(Protege::LoadTextResolver, role: :system) { |ctx| ctx.agent.instructions }
end
role chooses how the text enters the conversation (+:system+ for a prompt, +:user+/+:assistant+
to seed turns) and defaults to :system. A nil or blank result contributes nothing (returns
nil), so an unset column simply adds no message.
Instance Method Summary collapse
-
#initialize(role: :system) {|context| ... } ⇒ LoadTextResolver
constructor
A new instance of LoadTextResolver.
-
#resolve(context:) ⇒ Protege::ModelMessage?
Run the block and emit its text as a single message, or
nilwhen the result is blank.
Constructor Details
#initialize(role: :system) {|context| ... } ⇒ LoadTextResolver
Returns a new instance of LoadTextResolver.
21 22 23 24 25 26 27 |
# File 'app/resolvers/protege/load_text_resolver.rb', line 21 def initialize(role: :system, &block) super() raise ArgumentError, 'LoadTextResolver requires a block returning text' unless block @role = role @block = block end |
Instance Method Details
#resolve(context:) ⇒ Protege::ModelMessage?
Run the block and emit its text as a single message, or nil when the result is blank.
33 34 35 36 37 38 |
# File 'app/resolvers/protege/load_text_resolver.rb', line 33 def resolve(context:) content = @block.call(context).to_s.strip return nil if content.empty? (role: @role, content:) end |