Skip to content

Commit 80e14c4

Browse files
feat(assisted-query): Add metrics search feature flag and forward options
Register gen-ai-explore-metrics-search feature flag to gate the metrics AI search bar independently from the shared gen-ai-search-agent-translate flag. Forward the full options dict to Seer instead of extracting only model_name, so strategy-specific context like metric_context can pass through. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 22867f0 commit 80e14c4

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/sentry/features/temporary.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ def register_temporary_features(manager: FeatureManager) -> None:
124124
manager.add("organizations:gen-ai-features", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
125125
# Enable the 'translate' functionality for GenAI on the explore > traces page
126126
manager.add("organizations:gen-ai-search-agent-translate", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
127+
# Enable AI search bar on the explore > metrics tab
128+
manager.add("organizations:gen-ai-explore-metrics-search", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
127129
# Enable GenAI consent
128130
manager.add("organizations:gen-ai-consent", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
129131
# Enable increased issue_owners rate limit for auto-assignment

src/sentry/seer/endpoints/search_agent_start.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def send_search_agent_start_request(
6666
strategy: str = "Traces",
6767
user_email: str | None = None,
6868
timezone: str | None = None,
69-
model_name: str | None = None,
69+
options: dict[str, Any] | None = None,
7070
viewer_context: SeerViewerContext | None = None,
7171
) -> dict[str, Any]:
7272
"""
@@ -83,10 +83,6 @@ def send_search_agent_start_request(
8383
body["user_email"] = user_email
8484
if timezone:
8585
body["timezone"] = timezone
86-
87-
options: dict[str, Any] = {}
88-
if model_name is not None:
89-
options["model_name"] = model_name
9086
if options:
9187
body["options"] = options
9288

@@ -128,16 +124,22 @@ def post(self, request: Request, organization: Organization) -> Response:
128124
natural_language_query = validated_data["natural_language_query"]
129125
strategy = validated_data.get("strategy", "Traces")
130126
options = validated_data.get("options") or {}
131-
model_name = options.get("model_name")
132127

133128
projects = self.get_projects(
134129
request, organization, project_ids=set(validated_data["project_ids"])
135130
)
136131
project_ids = [project.id for project in projects]
137132

138-
if not features.has(
133+
has_feature = features.has(
139134
"organizations:gen-ai-search-agent-translate", organization, actor=request.user
140-
):
135+
)
136+
if strategy == "Metrics":
137+
has_feature = has_feature or features.has(
138+
"organizations:gen-ai-explore-metrics-search",
139+
organization,
140+
actor=request.user,
141+
)
142+
if not has_feature:
141143
return Response(
142144
{"detail": "Feature flag not enabled"},
143145
status=status.HTTP_403_FORBIDDEN,
@@ -173,7 +175,7 @@ def post(self, request: Request, organization: Organization) -> Response:
173175
strategy=strategy,
174176
user_email=user_email,
175177
timezone=timezone,
176-
model_name=model_name,
178+
options=options if options else None,
177179
viewer_context=viewer_context,
178180
)
179181

0 commit comments

Comments
 (0)