brainiac-github 0.0.2 → 0.0.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: 349dea99e9af54116610ef4d46162210af43d3ff1b0cbad891aef306483cffc3
4
- data.tar.gz: 7f3a383dd917c7cd5b066f2f1027d10b670b1ca0b8291fc58b3cd052c88c3203
3
+ metadata.gz: 58c7781338d9306f96983620c1e19d0d6f844f33d1b6843fdc625b66752b7d82
4
+ data.tar.gz: 473c5d503104d10370891c2d452aad5d450980703122a10d2e09af0f4d3350d9
5
5
  SHA512:
6
- metadata.gz: '05028d62ddd36e394db50d37873e8380ee6fb2c75ded41104d5e25502847fbd23b3de5984bd53576323356ffed4c5711df8e9796d45fe43ad828aa51c24eb102'
7
- data.tar.gz: 9d662f48d40ddb9ba386324af8c76ab980fb3f611c4b2b6ddfc38fdb1f6bb4881f88ed455842caeba6a9a205af474b61c99a104e7e7f8e71cefa9760a1ea1f10
6
+ metadata.gz: dceffc28a15ae991ac61b2f257f44c2847708818eea23263e192751da092ff969a5c37a61d73fa71a072f7a151f030bf287f78d98365a1e41dd19f6a88976ca6
7
+ data.tar.gz: ec5bb6fcf641fe7128e641de48e57e4282f00f713321aaab8d0788788306adbcf3d07868eb745120162acb752a7396c419f478c853747e75ba67494159433ef0
@@ -101,19 +101,25 @@ module Brainiac
101
101
  repo_path = project_config["repo_path"]
102
102
 
103
103
  result = find_work_item_by_branch(branch)
104
- return [200, { status: "ignored", reason: "no matching card" }.to_json] unless result
105
104
 
106
- _internal_id, card_info = result
107
- card_number = card_info["number"]
108
- unless card_number
109
- LOG.warn "Card has no number — can't dispatch review"
110
- return [200, { status: "ignored", reason: "card has no number" }.to_json]
105
+ if result
106
+ _internal_id, card_info = result
107
+ card_number = card_info["number"]
108
+ unless card_number
109
+ LOG.warn "Card has no number can't dispatch review"
110
+ return [200, { status: "ignored", reason: "card has no number" }.to_json]
111
+ end
112
+ card_key = "card-#{card_number}"
113
+ else
114
+ card_info = {}
115
+ card_number = nil
116
+ card_key = "pr-#{repo_name.tr("/", "-")}-#{pr_number}"
111
117
  end
112
118
 
113
- card_key = "card-#{card_number}"
114
119
  return [200, { status: "ignored", reason: "session already active" }.to_json] if session_active?(card_key)
115
120
 
116
- LOG.info "PR review submitted by #{reviewer} on PR ##{pr_number} for card ##{card_number} (project: #{project_key})"
121
+ card_context = card_number ? " for card ##{card_number}" : ""
122
+ LOG.info "PR review submitted by #{reviewer} on PR ##{pr_number}#{card_context} (project: #{project_key})"
117
123
  dispatch_pr_review(card_number, card_key, card_info, pr_number, review, reviewer,
118
124
  repo_name, project_key, project_config, repo_path)
119
125
 
@@ -150,27 +156,31 @@ module Brainiac
150
156
  branch = JSON.parse(pr_data)["branch"]
151
157
 
152
158
  result = find_work_item_by_branch(branch)
153
- unless result
154
- LOG.info "No card found for PR ##{pr_number} (branch: #{branch})"
155
- return [200, { status: "ignored", reason: "no matching card" }.to_json]
156
- end
157
159
 
158
- _, card_info = result
159
- card_number = card_info["number"]
160
- worktree = card_info["worktree"]
160
+ if result
161
+ _, card_info = result
162
+ card_number = card_info["number"]
163
+ worktree = card_info["worktree"]
161
164
 
162
- unless worktree && File.directory?(worktree)
163
- LOG.info "No active worktree for PR ##{pr_number}, ignoring comment"
164
- return [200, { status: "ignored", reason: "no active worktree" }.to_json]
165
+ unless worktree && File.directory?(worktree)
166
+ LOG.info "No active worktree for PR ##{pr_number}, ignoring comment"
167
+ return [200, { status: "ignored", reason: "no active worktree" }.to_json]
168
+ end
169
+
170
+ card_key = "card-#{card_number}"
171
+ else
172
+ card_number = nil
173
+ worktree = project_config["repo_path"]
174
+ card_key = "pr-#{repo_name.tr("/", "-")}-#{pr_number}"
165
175
  end
166
176
 
167
- card_key = "card-#{card_number}"
168
177
  if session_active?(card_key)
169
- LOG.info "Skipping PR comment on card ##{card_number} — agent session already active"
178
+ LOG.info "Skipping PR comment on #{card_key} — agent session already active"
170
179
  return [200, { status: "ignored", reason: "session already active" }.to_json]
171
180
  end
172
181
 
173
- LOG.info "PR comment from #{comment_user} on PR ##{pr_number} for card ##{card_number} (project: #{project_key})"
182
+ card_context = card_number ? " for card ##{card_number}" : ""
183
+ LOG.info "PR comment from #{comment_user} on PR ##{pr_number}#{card_context} (project: #{project_key})"
174
184
  dispatch_pr_comment(card_number, card_key, pr_number, comment_id, comment_user, comment_body,
175
185
  repo_name, worktree, project_key, project_config)
176
186
 
@@ -283,7 +293,8 @@ module Brainiac
283
293
 
284
294
  agent_name = agent_name_for(project_config)
285
295
  prompt = render_prompt(Prompts::PR_COMMENT,
286
- { "CARD_NUMBER" => card_number, "CARD_ID" => card_number,
296
+ { "CARD_NUMBER" => card_number || "PR-#{pr_number}",
297
+ "CARD_ID" => card_number || "PR-#{pr_number}",
287
298
  "COMMENT_CREATOR" => comment_user, "COMMENT_BODY" => comment_body,
288
299
  "PR_NUMBER" => pr_number.to_s, "WORKTREE_PATH" => worktree },
289
300
  brain_context: build_brain_context(agent_name: agent_name, card_number: card_number,
@@ -318,7 +329,8 @@ module Brainiac
318
329
  work_dir = worktree && File.directory?(worktree) ? worktree : repo_path
319
330
 
320
331
  prompt = render_prompt(Prompts::PR_REVIEW,
321
- { "CARD_NUMBER" => card_number, "CARD_ID" => card_number,
332
+ { "CARD_NUMBER" => card_number || "PR-#{pr_number}",
333
+ "CARD_ID" => card_number || "PR-#{pr_number}",
322
334
  "COMMENT_CREATOR" => reviewer, "REVIEW_CONTEXT" => review_context,
323
335
  "PR_NUMBER" => pr_number.to_s, "WORKTREE_PATH" => work_dir },
324
336
  brain_context: build_brain_context(agent_name: agent_name, card_number: card_number,
@@ -326,7 +338,8 @@ module Brainiac
326
338
  agent_name: agent_name, channel: :github)
327
339
 
328
340
  pid, log_file = run_agent(prompt, project_config: project_config, chdir: work_dir,
329
- log_name: "review-#{card_number}", agent_name: agent_name,
341
+ log_name: "review-#{card_number || "pr-#{pr_number}"}",
342
+ agent_name: agent_name,
330
343
  source: :github,
331
344
  source_context: { pr_number: pr_number, repo_name: repo_name, work_dir: work_dir })
332
345
  register_session(card_key, pid, log_file: log_file, agent_name: agent_name)
@@ -3,7 +3,7 @@
3
3
  module Brainiac
4
4
  module Plugins
5
5
  module Github
6
- VERSION = "0.0.2"
6
+ VERSION = "0.0.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.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Davis