Class: LittleGhost::AgentBuilder
- Inherits:
-
AssemblyBuilder
- Object
- AssemblyBuilder
- LittleGhost::AgentBuilder
- Defined in:
- lib/little_ghost/assembly_builder.rb
Overview
Builds an Agent definition from declarations made at runtime.
agent = LittleGhost::AgentBuilder.new(id: "customer_support")
agent.model "openrouter:openai/gpt-5.6-luna"
agent.system_prompt "Answer customer questions clearly."
agent.ask("Where is my order?")
It accepts the same configuration calls as an Agent class. Changing the builder affects future builds without changing Agents already built.
Constant Summary collapse
- DECLARATIONS =
%i[ model limits result_schema capture_diagnostics system_template system_prompt tools prompt_local after_initialize before_invocation after_invocation before_model after_model after_model_error before_tool after_tool manage_context detect_tool_loops skills subagent subagents subagent_long_poll_duration agent_as_tool agents_as_tools assembly_as_tool assemblies_as_tools ].freeze
Instance Attribute Summary
Attributes inherited from AssemblyBuilder
Class Method Summary collapse
-
.assembly_kind ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#agent_id(value = nil) ⇒ Object
Reads or assigns the Agent identifier.
-
#initialize(**options) ⇒ AgentBuilder
constructor
Creates a mutable dynamic Agent definition.
-
#method_missing(name, *arguments, **keywords, &block) ⇒ Object
Applies a supported Agent configuration call to future builds.
-
#respond_to_missing?(name, include_private = false) ⇒ Boolean
Reports the declarative methods supported by Agent.
Methods inherited from AssemblyBuilder
#as_tool, #ask, #assembly_id, #assembly_kind, #build, #call, #definition, #description, #start_execution, #stream, #stream_ask, #validate!
Constructor Details
#initialize(**options) ⇒ AgentBuilder
Creates a mutable dynamic Agent definition.
279 280 281 282 |
# File 'lib/little_ghost/assembly_builder.rb', line 279 def initialize(**) super @operations = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *arguments, **keywords, &block) ⇒ Object
Applies a supported Agent configuration call to future builds.
290 291 292 293 294 295 |
# File 'lib/little_ghost/assembly_builder.rb', line 290 def method_missing(name, *arguments, **keywords, &block) return super unless DECLARATIONS.include?(name) @mutex.synchronize { @operations << [name, arguments, keywords, block] } self end |
Class Method Details
.assembly_kind ⇒ Object
:nodoc:
275 |
# File 'lib/little_ghost/assembly_builder.rb', line 275 def assembly_kind = :agent |
Instance Method Details
#agent_id(value = nil) ⇒ Object
Reads or assigns the Agent identifier.
285 286 287 |
# File 'lib/little_ghost/assembly_builder.rb', line 285 def agent_id(value = nil) value.nil? ? assembly_id : assembly_id(value) end |
#respond_to_missing?(name, include_private = false) ⇒ Boolean
Reports the declarative methods supported by Agent.
298 299 300 |
# File 'lib/little_ghost/assembly_builder.rb', line 298 def respond_to_missing?(name, include_private = false) DECLARATIONS.include?(name) || super end |