Skip to content

Commit 1d9240e

Browse files
committed
feat(seer): Pass PR assignment flag and GitHub username to Seer
Add feature flag `organizations:seer-assign-prs-to-user` and wire it through both autofix and explorer flows so Seer can assign PRs to the invoking user on GitHub. - Register feature flag in temporary.py - Pass `assign_pr_to_user` in autofix request options - Pass `github_username` and `assign_pr_to_user` in explorer user context Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Agent transcript: https://claudescope.sentry.dev/share/O_Pqf33_KzAdKIC0uHWtBHi4N9k2TWTCmGLf0e0rTrU
1 parent 105fd4b commit 1d9240e

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

src/sentry/features/temporary.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,8 @@ def register_temporary_features(manager: FeatureManager) -> None:
335335
manager.add("organizations:seer-slack-workflows", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
336336
# Enable Seer Explorer in Slack via @mentions
337337
manager.add("organizations:seer-slack-explorer", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
338+
# Assign Seer-created PRs to the invoking user on GitHub
339+
manager.add("organizations:seer-assign-prs-to-user", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False)
338340
# Enable search query attribute validation
339341
manager.add("organizations:search-query-attribute-validation", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
340342
# Enable search query builder to support explicit boolean filters

src/sentry/seer/autofix/autofix.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,9 @@ def _call_autofix(
511511
"sentry:enable_seer_coding", default=ENABLE_SEER_CODING_DEFAULT
512512
),
513513
"stopping_point": stopping_point.value if stopping_point else None,
514+
"assign_pr_to_user": features.has(
515+
"organizations:seer-assign-prs-to-user", group.organization
516+
),
514517
},
515518
"preference": preference.dict() if preference else None,
516519
},

src/sentry/seer/explorer/client_utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from sentry.seer.models import SeerApiError
2929
from sentry.seer.seer_setup import has_seer_access_with_detail
3030
from sentry.seer.signed_seer_api import SeerViewerContext, make_signed_seer_api_request
31+
from sentry.seer.utils import get_github_username_for_user
3132
from sentry.users.models.user import User as SentryUser
3233
from sentry.users.services.user.model import RpcUser
3334
from sentry.users.services.user_option import user_option_service
@@ -284,13 +285,20 @@ def collect_user_org_context(
284285
# Get IP address from http request, if provided
285286
user_ip: str | None = request.META.get("REMOTE_ADDR") if request else None
286287

288+
# Resolve GitHub username for PR assignment/review
289+
github_username = get_github_username_for_user(user, organization.id)
290+
291+
assign_pr_to_user = features.has("organizations:seer-assign-prs-to-user", organization)
292+
287293
return {
288294
"org_slug": organization.slug,
289295
"user_id": user.id,
290296
"user_ip": user_ip,
291297
"user_name": user_name,
292298
"user_email": user.email,
293299
"user_timezone": user_timezone,
300+
"github_username": github_username,
301+
"assign_pr_to_user": assign_pr_to_user,
294302
"user_teams": user_teams,
295303
"user_projects": user_projects,
296304
"all_org_projects": all_org_projects,

0 commit comments

Comments
 (0)