Class: Aidp::Temporal::Activities::CreatePrActivity
- Inherits:
-
BaseActivity
- Object
- Temporalio::Activity::Definition
- BaseActivity
- Aidp::Temporal::Activities::CreatePrActivity
- Defined in:
- lib/aidp/temporal/activities/create_pr_activity.rb
Overview
Activity that creates a pull request from implemented changes Handles git operations and GitHub PR creation
Instance Method Summary collapse
Methods inherited from BaseActivity
#activity_context, #cancellation_requested?, #check_cancellation!, #heartbeat
Instance Method Details
#execute(input) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/aidp/temporal/activities/create_pr_activity.rb', line 12 def execute(input) with_activity_context do project_dir = input[:project_dir] issue_number = input[:issue_number] implementation = input[:implementation] iterations = input[:iterations] # Validate issue_number is numeric to prevent injection unless issue_number.to_s.match?(/\A\d+\z/) return error_result("Invalid issue number: must be numeric") end log_activity("creating_pr", project_dir: project_dir, issue_number: issue_number) # Ensure we have commits to push unless has_uncommitted_changes?(project_dir) || has_unpushed_commits?(project_dir) return error_result("No changes to create PR from") end # Create branch if needed branch_name = ensure_branch(project_dir, issue_number) heartbeat(phase: "branch_created", branch: branch_name) # Commit any uncommitted changes if has_uncommitted_changes?(project_dir) commit_changes(project_dir, issue_number, iterations) end heartbeat(phase: "changes_committed") # Push branch push_branch(project_dir, branch_name) heartbeat(phase: "branch_pushed") # Create PR pr_result = create_pull_request( project_dir: project_dir, branch_name: branch_name, issue_number: issue_number, implementation: implementation, iterations: iterations ) if pr_result[:success] success_result( pr_url: pr_result[:pr_url], pr_number: pr_result[:pr_number], branch: branch_name ) else error_result(pr_result[:error] || "Failed to create PR") end end end |