Module: Roast::Tools::CodingAgent
- Extended by:
- CodingAgent
- Includes:
- Helpers::MetadataAccess
- Included in:
- CodingAgent
- Defined in:
- lib/roast/tools/coding_agent.rb
Defined Under Namespace
Classes: CodingAgentError
Class Attribute Summary collapse
-
.configured_command ⇒ Object
Returns the value of attribute configured_command.
-
.configured_options ⇒ Object
Returns the value of attribute configured_options.
Class Method Summary collapse
- .included(base) ⇒ Object
-
.post_configuration_setup(base, config = {}) ⇒ Object
Called after configuration is loaded.
Instance Method Summary collapse
Methods included from Helpers::MetadataAccess
#set_current_step_metadata, #step_metadata
Class Attribute Details
.configured_command ⇒ Object
Returns the value of attribute configured_command.
18 19 20 |
# File 'lib/roast/tools/coding_agent.rb', line 18 def configured_command @configured_command end |
.configured_options ⇒ Object
Returns the value of attribute configured_options.
18 19 20 |
# File 'lib/roast/tools/coding_agent.rb', line 18 def end |
Class Method Details
.included(base) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/roast/tools/coding_agent.rb', line 20 def included(base) base.class_eval do function( :coding_agent, "AI-powered coding agent that runs an instance of the Claude Code agent with the given prompt. If the agent is iterating on previous work, set continue to true.", prompt: { type: "string", description: "The prompt to send to Claude Code" }, include_context_summary: { type: "boolean", description: "Whether to set a summary of the current workflow context as system directive (default: false)", required: false }, continue: { type: "boolean", description: "Whether to continue where the previous coding agent left off or start with a fresh context (default: false, start fresh)", required: false }, retries: { type: "integer", description: "Number of times to retry the coding agent invocation if it terminates with an error (default: 0, no retry)", required: false }, ) do |params| Roast::Tools::CodingAgent.call( params[:prompt], include_context_summary: params[:include_context_summary].presence || false, continue: params[:continue].presence || false, retries: params[:retries], ) end end end |
.post_configuration_setup(base, config = {}) ⇒ Object
Called after configuration is loaded
41 42 43 44 45 |
# File 'lib/roast/tools/coding_agent.rb', line 41 def post_configuration_setup(base, config = {}) self.configured_command = config[CONFIG_CODING_AGENT_COMMAND] # Store any other configuration options (like model) self. = config.except(CONFIG_CODING_AGENT_COMMAND) end |
Instance Method Details
#call(prompt, include_context_summary: false, continue: false, retries: nil) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/roast/tools/coding_agent.rb', line 48 def call(prompt, include_context_summary: false, continue: false, retries: nil) # Use configured retries as default, fall back to 0 if not configured retries ||= CodingAgent.[:retries] || CodingAgent.["retries"] || 0 (retries + 1).times do |iteration| Roast::Helpers::Logger.info("🤖 Running CodingAgent#{iteration > 0 ? ", attempt #{iteration + 1} of #{retries + 1}" : ""}\n") return run_claude_code(prompt, include_context_summary:, continue:) rescue CodingAgentError => e raise e if iteration >= retries Roast::Helpers::Logger.warn("🤖 Retrying after error running CodingAgent: #{e.message}") Roast::Helpers::Logger.debug(e.backtrace.join("\n") + "\n") if ENV["DEBUG"] end Roast::Helpers::Logger.error("🤖 CodingAgent did not complete successfully after multiple retries") rescue StandardError => e "🤖 Error running CodingAgent: #{e.message}".tap do || Roast::Helpers::Logger.error( + "\n") Roast::Helpers::Logger.debug(e.backtrace.join("\n") + "\n") if ENV["DEBUG"] end end |