Skip to content

Commit d605d42

Browse files
authored
feat(llm-detector): Add config for LLM Detected issues (#103158)
pr adds a new config for the ai detected issue category which allows more control over what we show on the issue details page fixes https://linear.app/getsentry/issue/ID-1084/add-new-issue-type-config-for-new-issue-category
1 parent b91b6e1 commit d605d42

File tree

4 files changed

+82
-2
lines changed

4 files changed

+82
-2
lines changed

static/app/components/events/interfaces/performance/spanEvidenceKeyValueList.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,25 @@ function DBQueryInjectionVulnerabilityEvidence({
347347
);
348348
}
349349

350+
function AIDetectedSpanEvidence({
351+
event,
352+
organization,
353+
location,
354+
projectSlug,
355+
}: SpanEvidenceKeyValueListProps) {
356+
const evidenceData = event?.occurrence?.evidenceData ?? {};
357+
return (
358+
<PresortedKeyValueList
359+
data={[
360+
makeTransactionNameRow(event, organization, location, projectSlug),
361+
makeRow(t('Explanation'), evidenceData.explanation),
362+
makeRow(t('Impact'), evidenceData.impact),
363+
makeRow(t('Evidence'), evidenceData.evidence),
364+
]}
365+
/>
366+
);
367+
}
368+
350369
const PREVIEW_COMPONENTS: Partial<
351370
Record<IssueType, (p: SpanEvidenceKeyValueListProps) => React.ReactElement | null>
352371
> = {
@@ -368,6 +387,7 @@ const PREVIEW_COMPONENTS: Partial<
368387
[IssueType.PROFILE_FUNCTION_REGRESSION]: RegressionEvidence,
369388
[IssueType.QUERY_INJECTION_VULNERABILITY]: DBQueryInjectionVulnerabilityEvidence,
370389
[IssueType.WEB_VITALS]: WebVitalsEvidence,
390+
[IssueType.LLM_DETECTED_EXPERIMENTAL]: AIDetectedSpanEvidence,
371391
};
372392

373393
export function SpanEvidenceKeyValueList({
@@ -401,7 +421,6 @@ export function SpanEvidenceKeyValueList({
401421
/>
402422
);
403423
}
404-
405424
const Component = PREVIEW_COMPONENTS[issueType] ?? DefaultSpanEvidence;
406425

407426
return (

static/app/types/group.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ export enum IssueCategory {
103103
HTTP_CLIENT = 'http_client',
104104
DB_QUERY = 'db_query',
105105
MOBILE = 'mobile',
106+
107+
AI_DETECTED = 'ai_detected',
106108
}
107109

108110
/**
@@ -133,6 +135,7 @@ export const ISSUE_CATEGORY_TO_DESCRIPTION: Record<IssueCategory, string> = {
133135
[IssueCategory.CRON]: '',
134136
[IssueCategory.REPLAY]: '',
135137
[IssueCategory.UPTIME]: '',
138+
[IssueCategory.AI_DETECTED]: t('AI detected issues.'),
136139
};
137140

138141
export enum IssueType {
@@ -179,10 +182,14 @@ export enum IssueType {
179182

180183
// Insights Web Vitals
181184
WEB_VITALS = 'web_vitals',
185+
186+
LLM_DETECTED_EXPERIMENTAL = 'llm_detected_experimental',
182187
}
183188

184189
// Update this if adding an issue type that you don't want to show up in search!
185-
export const VISIBLE_ISSUE_TYPES = Object.values(IssueType);
190+
export const VISIBLE_ISSUE_TYPES = Object.values(IssueType).filter(
191+
type => ![IssueType.LLM_DETECTED_EXPERIMENTAL].includes(type)
192+
);
186193

187194
export enum IssueTitle {
188195
ERROR = 'Error',
@@ -226,6 +233,8 @@ export enum IssueTitle {
226233

227234
// Insights Web Vitals
228235
WEB_VITALS = 'Web Vitals',
236+
237+
LLM_DETECTED_EXPERIMENTAL = 'LLM Detected Issue',
229238
}
230239

231240
export const ISSUE_TYPE_TO_ISSUE_TITLE = {
@@ -263,6 +272,8 @@ export const ISSUE_TYPE_TO_ISSUE_TITLE = {
263272
uptime_domain_failure: IssueTitle.UPTIME_DOMAIN_FAILURE,
264273

265274
web_vitals: IssueTitle.WEB_VITALS,
275+
276+
llm_detected_experimental: IssueTitle.LLM_DETECTED_EXPERIMENTAL,
266277
};
267278

268279
export function getIssueTitleFromType(issueType: string): IssueTitle | undefined {
@@ -295,6 +306,7 @@ const OCCURRENCE_TYPE_TO_ISSUE_TYPE = {
295306
2007: IssueType.PROFILE_REGEX_MAIN_THREAD,
296307
2008: IssueType.PROFILE_FRAME_DROP,
297308
2010: IssueType.PROFILE_FUNCTION_REGRESSION,
309+
3501: IssueType.LLM_DETECTED_EXPERIMENTAL,
298310
10001: IssueType.WEB_VITALS,
299311
};
300312

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import {t} from 'sentry/locale';
2+
import type {IssueCategoryConfigMapping} from 'sentry/utils/issueTypeConfig/types';
3+
import {Tab} from 'sentry/views/issueDetails/types';
4+
5+
const aiDetectedConfig: IssueCategoryConfigMapping = {
6+
_categoryDefaults: {
7+
actions: {
8+
archiveUntilOccurrence: {enabled: true},
9+
delete: {
10+
enabled: true,
11+
},
12+
deleteAndDiscard: {
13+
enabled: false,
14+
disabledReason: t('Not yet supported for performance issues'),
15+
},
16+
merge: {
17+
enabled: false,
18+
disabledReason: t('Not yet supported for performance issues'),
19+
},
20+
ignore: {enabled: true},
21+
resolve: {enabled: true},
22+
resolveInRelease: {enabled: true},
23+
share: {enabled: true},
24+
},
25+
pages: {
26+
landingPage: Tab.DETAILS,
27+
events: {enabled: true},
28+
openPeriods: {enabled: false},
29+
checkIns: {enabled: false},
30+
uptimeChecks: {enabled: false},
31+
attachments: {enabled: false},
32+
userFeedback: {enabled: false},
33+
replays: {enabled: false},
34+
tagsTab: {enabled: false},
35+
},
36+
autofix: false,
37+
mergedIssues: {enabled: false},
38+
similarIssues: {enabled: false},
39+
stacktrace: {enabled: false},
40+
spanEvidence: {enabled: true},
41+
evidence: null,
42+
usesIssuePlatform: true,
43+
issueSummary: {enabled: false},
44+
},
45+
};
46+
47+
export default aiDetectedConfig;

static/app/utils/issueTypeConfig/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {t} from 'sentry/locale';
22
import {IssueCategory, IssueType} from 'sentry/types/group';
33
import type {Project} from 'sentry/types/project';
4+
import aiDetectedConfig from 'sentry/utils/issueTypeConfig/aiDetectedConfig';
45
import cronConfig from 'sentry/utils/issueTypeConfig/cronConfig';
56
import dbQueryConfig from 'sentry/utils/issueTypeConfig/dbQueryConfig';
67
import {
@@ -102,6 +103,7 @@ const issueTypeConfig: Config = {
102103
[IssueCategory.DB_QUERY]: dbQueryConfig,
103104
[IssueCategory.MOBILE]: mobileConfig,
104105
[IssueCategory.METRIC]: metricConfig,
106+
[IssueCategory.AI_DETECTED]: aiDetectedConfig,
105107
};
106108

107109
/**

0 commit comments

Comments
 (0)