brainiac-github 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/brainiac/plugins/github/handler.rb +33 -4
- data/lib/brainiac/plugins/github/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 43962acb8ab8344a4e420e841550114d53082045252252ad340944dad73d267f
|
|
4
|
+
data.tar.gz: eb8769a6f13771b1d057133fe8c72c3f3482602528ad0494475eb14022ea0d33
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bf3b0e3b90397dfd8232b2bd1fefab1f228dbb2b206d4f9b2766cbd064b6b2c9f4007bd651a7f3ab4ae91bd8934d674e814c931ef4549cf38eaa70b58d74b182
|
|
7
|
+
data.tar.gz: b22dae8eacf0a45f9032eaadf63a33e945a17d4647ced3195254eb48d17962c2cf459a52214948d29407066c5217a09f21c093876cdd4dbde5e177e1296cabd2
|
|
@@ -14,6 +14,21 @@ module Brainiac
|
|
|
14
14
|
repo_full_name = payload.dig("repository", "full_name")
|
|
15
15
|
|
|
16
16
|
default_branch = payload.dig("repository", "default_branch") || "main"
|
|
17
|
+
|
|
18
|
+
# Extract card number from branch name (e.g., "fizzy-1182-add-goodbye-method" → 1182)
|
|
19
|
+
card_number_from_branch = branch&.match(/^fizzy-(\d+)-/)&.[](1)&.to_i
|
|
20
|
+
|
|
21
|
+
# Emit a hook for ALL merges (including epic branches) so consumers can decide
|
|
22
|
+
if card_number_from_branch
|
|
23
|
+
Brainiac.emit(:pr_merged_to_branch,
|
|
24
|
+
card_number: card_number_from_branch,
|
|
25
|
+
branch: branch,
|
|
26
|
+
base_branch: base,
|
|
27
|
+
pr_url: pr_url,
|
|
28
|
+
pr_title: pr_title,
|
|
29
|
+
repo_full_name: repo_full_name)
|
|
30
|
+
end
|
|
31
|
+
|
|
17
32
|
unless base == default_branch
|
|
18
33
|
LOG.info "PR merged into #{base}, not #{default_branch} — ignoring"
|
|
19
34
|
return [200, { status: "ignored", reason: "not merged into #{default_branch}" }.to_json]
|
|
@@ -111,10 +126,6 @@ module Brainiac
|
|
|
111
126
|
review_state = review["state"]
|
|
112
127
|
reviewer = review.dig("user", "login")
|
|
113
128
|
|
|
114
|
-
unless %w[changes_requested commented].include?(review_state)
|
|
115
|
-
return [200, { status: "ignored", reason: "review state: #{review_state}" }.to_json]
|
|
116
|
-
end
|
|
117
|
-
|
|
118
129
|
project_result = identify_project_by_repo(repo_name)
|
|
119
130
|
return [200, { status: "ignored", reason: "no matching project" }.to_json] unless project_result
|
|
120
131
|
|
|
@@ -134,6 +145,24 @@ module Brainiac
|
|
|
134
145
|
card_info = {}
|
|
135
146
|
card_number = nil
|
|
136
147
|
end
|
|
148
|
+
|
|
149
|
+
# Always emit the hook so gate tracking works for approvals too
|
|
150
|
+
Brainiac.emit(:pr_review_received,
|
|
151
|
+
card_number: card_number,
|
|
152
|
+
reviewer: reviewer,
|
|
153
|
+
review_state: review_state,
|
|
154
|
+
pr_number: pr_number,
|
|
155
|
+
repo_name: repo_name,
|
|
156
|
+
project_config: project_config,
|
|
157
|
+
repo_path: repo_path)
|
|
158
|
+
|
|
159
|
+
# Only dispatch the implementation agent for changes_requested or commented reviews
|
|
160
|
+
# Approvals don't need the agent to do anything (the gate hook handles the flow)
|
|
161
|
+
unless %w[changes_requested commented].include?(review_state)
|
|
162
|
+
LOG.info "PR review (#{review_state}) by #{reviewer} on PR ##{pr_number} — hook emitted, no agent dispatch"
|
|
163
|
+
return [200, { status: "processed", card: card_number, pr: pr_number, reviewer: reviewer, action: "hook_only" }.to_json]
|
|
164
|
+
end
|
|
165
|
+
|
|
137
166
|
card_key = "pr-review-#{repo_name.tr("/", "-")}-#{pr_number}"
|
|
138
167
|
|
|
139
168
|
return [200, { status: "ignored", reason: "session already active" }.to_json] if session_active?(card_key)
|