Fix GitHub issue mirror dispatch#25
Conversation
|
Warning Review limit reached
More reviews will be available in 18 minutes and 31 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request introduces several enhancements to the orchestrator and CLI, including routing factory progress logs to stderr to keep stdout as clean JSON, adding team ID support to the Linear configuration, implementing progress tracking and warnings for slow remote relayfile operations, and supporting label-less GitHub mirror routing based on source URLs. The review feedback suggests safely handling potentially null or undefined issue descriptions to prevent runtime crashes and simplifying the regex matching logic for GitHub repository URLs.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| const sourceUrlLine = issue.description | ||
| .split(/\r?\n/u) |
There was a problem hiding this comment.
If issue.description is null or undefined at runtime, calling .split() directly on it will throw a TypeError and crash the process. Enforce defensive programming by safely defaulting it to an empty string before splitting.
| const sourceUrlLine = issue.description | |
| .split(/\r?\n/u) | |
| const sourceUrlLine = (issue.description ?? '') | |
| .split(/\r?\n/u) |
|
|
||
| function githubRepoFromUrl(url: string | undefined): string | undefined { | ||
| const match = url?.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/issues\/\d+(?:[/?#].*)?$/iu) | ||
| return match?.[1] && match[2] ? `${match[1]}/${match[2]}` : undefined |
There was a problem hiding this comment.
Since the regular expression /^https:\/\/github\.com\/([^/]+)\/([^/]+)\/issues\/\d+(?:[/?#].*)?$/iu uses + quantifiers for both capture groups, match[1] and match[2] are guaranteed to be non-empty strings if a match is found. The check match?.[1] && match[2] is redundant and can be simplified to just checking if match is truthy.
| return match?.[1] && match[2] ? `${match[1]}/${match[2]}` : undefined | |
| return match ? match[1] + '/' + match[2] : undefined |
5d4254e to
d450974
Compare
Summary
/github/repos/OWNER__REPO/issues/by-id) so factory-labeled issues are discovered even when/github/reposis shallowteamIdson GitHub mirror create drafts so the Linear adapter can materialize them as real issuesSource: https://github.com/OWNER/REPO/issues/Nmetadata before falling back torepos.defaultVerification
npx vitest run src/config/schema.test.ts src/orchestrator/factory.test.tsnpm run buildAgentWorkforce/relayfile-adapters#224:AR-311factory canary /linear/issues/AR-311__436c3c9f-a938-46d8-9de1-63dd829f813b.json --config /tmp/factory-config-relayfile-adapters-only.jsonreturned{ "ok": true, "issue": "AR-311", "status": "dispatched" }Notes
This keeps compatibility with the current Linear adapter create contract by adding
linear.teamIdsconfig support. The local AgentWorkforce root config now pinsAR -> 50cf92f3-f53c-4ab6-bf05-ea76ebd21692, but that root config is outside this repo.Follow-ups filed
https://file.agentrelay.comlistTreeis too shallow for issue discovery