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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5ae816a199e6894108759603b7d806d34000a3da5c44637456cbeb270ed4e8c
4
- data.tar.gz: 06c7c6bb1bf211992d40ba6cf7f50df203300319dea3d34bc4f3630990311edf
3
+ metadata.gz: 43962acb8ab8344a4e420e841550114d53082045252252ad340944dad73d267f
4
+ data.tar.gz: eb8769a6f13771b1d057133fe8c72c3f3482602528ad0494475eb14022ea0d33
5
5
  SHA512:
6
- metadata.gz: 7491a2210feb364892a300ea122f07694d08a82a8f46563e45a36e425346480779ebe82bbb6c1269dbc3ea8bb2805a6fe505b6fa8ee4d957177318c63daece08
7
- data.tar.gz: b99ada00a52071cda049b98e4baa6f68358827dba5dced00bfb2cf1421e9ca2095d756d2364b1c176f54e68209b038ee9922502b6bd6ecb866bea126b200cd04
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)
@@ -3,7 +3,7 @@
3
3
  module Brainiac
4
4
  module Plugins
5
5
  module Github
6
- VERSION = "0.2.2"
6
+ VERSION = "0.2.3"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brainiac-github
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Davis