Class: Ocak::PipelineExecutor
- Inherits:
-
Object
- Object
- Ocak::PipelineExecutor
- Includes:
- Planner, StepComments, Verification
- Defined in:
- lib/ocak/pipeline_executor.rb
Defined Under Namespace
Classes: StepContext
Constant Summary
Constants included from Planner
Instance Attribute Summary collapse
-
#issues ⇒ Object
writeonly
Sets the attribute issues.
Instance Method Summary collapse
-
#initialize(config:, issues: nil, shutdown_check: nil) ⇒ PipelineExecutor
constructor
A new instance of PipelineExecutor.
-
#run_pipeline(issue_number, logger:, claude:, chdir: nil, skip_steps: [], complexity: 'full', steps: nil, verification_model: nil, post_start_comment: true, post_summary_comment: true) ⇒ Object
rubocop:disable Metrics/ParameterLists.
Methods included from StepComments
#post_step_comment, #post_step_completion_comment
Methods included from Planner
#build_step_prompt, #parse_planner_output, #plan_batches, #sequential_batches
Methods included from Verification
#lint_extensions_for, #run_final_checks, #run_scoped_lint, #run_verification_with_retry
Constructor Details
#initialize(config:, issues: nil, shutdown_check: nil) ⇒ PipelineExecutor
Returns a new instance of PipelineExecutor.
21 22 23 24 25 |
# File 'lib/ocak/pipeline_executor.rb', line 21 def initialize(config:, issues: nil, shutdown_check: nil) @config = config @issues = issues @shutdown_check = shutdown_check end |
Instance Attribute Details
#issues=(value) ⇒ Object (writeonly)
Sets the attribute issues
19 20 21 |
# File 'lib/ocak/pipeline_executor.rb', line 19 def issues=(value) @issues = value end |
Instance Method Details
#run_pipeline(issue_number, logger:, claude:, chdir: nil, skip_steps: [], complexity: 'full', steps: nil, verification_model: nil, post_start_comment: true, post_summary_comment: true) ⇒ Object
rubocop:disable Metrics/ParameterLists
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ocak/pipeline_executor.rb', line 27 def run_pipeline(issue_number, logger:, claude:, chdir: nil, skip_steps: [], complexity: 'full', # rubocop:disable Metrics/ParameterLists steps: nil, verification_model: nil, post_start_comment: true, post_summary_comment: true) @logger = logger @custom_steps = steps @verification_model = verification_model @post_summary_comment = post_summary_comment chdir ||= @config.project_dir logger.info("=== Starting pipeline for issue ##{issue_number} (#{complexity}) ===") report = RunReport.new(complexity: complexity) state = build_initial_state(complexity, report) start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) post_pipeline_start_comment(issue_number, state) if post_start_comment failure = run_pipeline_steps(issue_number, state, logger: logger, claude: claude, chdir: chdir, skip_steps: skip_steps) log_cost_summary(state[:total_cost], logger) return handle_interrupted(issue_number, state, report, logger) if state[:interrupted] return handle_failure(issue_number, state, failure, report, start_time) if failure failure = run_final_verification(issue_number, logger: logger, claude: claude, chdir: chdir) return handle_failure(issue_number, state, failure, report, start_time) if failure pipeline_state.delete(issue_number) finish_success(issue_number, state, report, start_time, logger) end |