@sentry/junior-github 0.181.1 → 0.183.0

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.
package/dist/plugin.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * GitHub plugin runtime boundary.
3
3
  *
4
- * This module composes GitHub hooks and owns GitHub egress policy.
4
+ * This module composes GitHub hooks, resource events, and credentials.
5
5
  */
6
6
  import { type PluginRegistration } from "@sentry/junior-plugin-api";
7
7
  import { type GitHubAppPermissions } from "./permissions.js";
@@ -19,6 +19,7 @@ declare const githubPullRequestOutcomeInputSchema: z.ZodObject<{
19
19
  merged: "merged";
20
20
  closed_unmerged: "closed_unmerged";
21
21
  }>;
22
+ title: z.ZodOptional<z.ZodString>;
22
23
  updatedAt: z.ZodDate;
23
24
  }, z.core.$strict>;
24
25
  export type GitHubPullRequestOutcomeInput = z.output<typeof githubPullRequestOutcomeInputSchema>;
@@ -1,4 +1,4 @@
1
- import type { SubscribableResource } from "@sentry/junior-plugin-api";
1
+ import { type SubscribableResource } from "@sentry/junior-plugin-api";
2
2
  export declare const GITHUB_PULL_REQUEST_EVENTS: readonly ["pull_request.checks.failed", "pull_request.checks.recovered", "pull_request.comment.created", "pull_request.opened", "pull_request.ready_for_review", "pull_request.review.approved", "pull_request.review.changes_requested", "pull_request.review.commented", "pull_request.review_comment.created", "pull_request.merged", "pull_request.closed_unmerged"];
3
3
  export type GitHubPullRequestEvent = (typeof GITHUB_PULL_REQUEST_EVENTS)[number];
4
4
  /** App-configured pull request resource event behavior. */
@@ -14,6 +14,12 @@ export interface GitHubPullRequestSubscriptionConfig {
14
14
  intent: string;
15
15
  }
16
16
  export declare const GITHUB_PULL_REQUEST_SUGGESTED_EVENTS: readonly ["pull_request.checks.failed", "pull_request.comment.created", "pull_request.ready_for_review", "pull_request.review.changes_requested", "pull_request.review.commented", "pull_request.review_comment.created", "pull_request.merged", "pull_request.closed_unmerged"];
17
+ /** Exact values GitHub may set on pull request event data. Missing keys do not match. */
18
+ export declare const GITHUB_PULL_REQUEST_MATCH_FIELDS: Record<string, {
19
+ kind: "string" | "number" | "boolean";
20
+ description: string;
21
+ enum?: string[] | undefined;
22
+ }>;
17
23
  /** Build the stable pull request identity shared by tools and webhooks. */
18
24
  export declare function gitHubPullRequestResource(input: {
19
25
  number: number;
package/dist/testing.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  normalizeGitHubResourceEvents
3
- } from "./chunk-GXZVNEIB.js";
3
+ } from "./chunk-KXAUXJ3Q.js";
4
4
  export {
5
5
  normalizeGitHubResourceEvents
6
6
  };
@@ -0,0 +1,80 @@
1
+ /**
2
+ * GitHub check suite resource events.
3
+ */
4
+ import type { ResourceEventInput } from "@sentry/junior-plugin-api";
5
+ export type GitHubFailingCheck = {
6
+ checkRunId: number;
7
+ conclusion: string;
8
+ htmlUrl?: string;
9
+ name: string;
10
+ };
11
+ /** Pull request values filled in when a match filter needs them. */
12
+ export type GitHubCheckSuitePullRequestFacts = {
13
+ authorEmail?: string;
14
+ authorUsername?: string;
15
+ isDraft?: boolean;
16
+ };
17
+ /** Optional values for one check suite event. */
18
+ export type GitHubCheckSuiteFacts = {
19
+ failingChecks?: GitHubFailingCheck[];
20
+ /** Pull request values by number when a match filter needs them. */
21
+ pullRequestFactsByNumber?: Record<number, GitHubCheckSuitePullRequestFacts>;
22
+ };
23
+ /** Build a browser URL for one check suite. GitHub does not send html_url. */
24
+ export declare function buildCheckSuiteUrl(args: {
25
+ checkSuiteId: number;
26
+ headSha: string;
27
+ repo: string;
28
+ }): string;
29
+ /** Build the trusted data and summary for one check-suite PR event. */
30
+ export declare function buildCheckSuiteResourceEvent(args: {
31
+ appName?: string;
32
+ authorEmail?: string;
33
+ authorUsername?: string;
34
+ checkSuiteId?: number;
35
+ deliveryId: string;
36
+ eventType: "pull_request.checks.failed" | "pull_request.checks.recovered";
37
+ failingChecks?: GitHubFailingCheck[];
38
+ headSha?: string;
39
+ isDraft?: boolean;
40
+ latestCheckRunsCount?: number;
41
+ pullRequestNumber: number;
42
+ repo: string;
43
+ suiteConclusion: string;
44
+ }): ResourceEventInput;
45
+ /** Keep only failed check runs from one suite. */
46
+ export declare function selectFailingChecks(checkRuns: unknown, options?: {
47
+ checkSuiteId?: number;
48
+ }): GitHubFailingCheck[];
49
+ /** Normalize a completed check suite for each attached pull request. */
50
+ export declare function normalizeCheckSuiteEvents(deliveryId: string, body: unknown, options?: GitHubCheckSuiteFacts): ResourceEventInput[];
51
+ /** Identifiers and event types one completed check suite may publish. */
52
+ export declare function parseCheckSuitePublishTargets(body: unknown): {
53
+ eventTypes: string[];
54
+ identifiers: string[];
55
+ } | undefined;
56
+ /** Read which check suite values still need a GitHub API load. */
57
+ export declare function parseCheckSuiteFactsTarget(body: unknown, options?: {
58
+ loadPullRequestFacts?: boolean;
59
+ }): {
60
+ checkSuiteId: number;
61
+ headSha: string;
62
+ loadFailingChecks: boolean;
63
+ loadPullRequestFacts: boolean;
64
+ owner: string;
65
+ pullRequestNumbers: number[];
66
+ repoName: string;
67
+ } | undefined;
68
+ /** True when active match filters need pull request fields from the API. */
69
+ export declare function needsCheckSuitePullRequestFacts(matchKeys: Iterable<string>): boolean;
70
+ /** Load failed check runs and optional pull request match fields. */
71
+ export declare function loadCheckSuiteFacts(args: {
72
+ appIdEnv: string;
73
+ body: unknown;
74
+ installationIdEnv: string;
75
+ loadPullRequestFacts?: boolean;
76
+ log?: {
77
+ error(message: string, metadata?: Record<string, unknown>): void;
78
+ };
79
+ privateKeyEnv: string;
80
+ }): Promise<GitHubCheckSuiteFacts | undefined>;
@@ -1,19 +1,21 @@
1
- import type { PluginConversationAnnotations, PluginLogger, PluginRoute, ResourceEventPublisher } from "@sentry/junior-plugin-api";
1
+ import type { CodeChangePublisher, PluginConversationAnnotations, PluginLogger, PluginRoute, ResourceEventPublisher } from "@sentry/junior-plugin-api";
2
2
  import type { GitHubDb } from "../db/database.js";
3
3
  import type { GitHubPullRequestCommitComposition } from "../db/schema.js";
4
- import { type GitHubFailingCheck } from "./resource-events.js";
5
4
  /** Create the public, signed GitHub webhook route owned by the plugin. */
6
5
  export declare function createGitHubWebhookRoute(args: {
7
6
  annotations: PluginConversationAnnotations;
7
+ appIdEnv: string;
8
8
  botEmail(): string | undefined;
9
9
  classifyPullRequestCommits?(input: {
10
10
  number: number;
11
11
  repositoryFullName: string;
12
12
  }): Promise<GitHubPullRequestCommitComposition | undefined>;
13
+ codeChanges: CodeChangePublisher;
13
14
  db: GitHubDb;
14
15
  installationId(): string | undefined;
15
- loadFailingChecks?(body: unknown): Promise<GitHubFailingCheck[] | undefined>;
16
+ installationIdEnv: string;
16
17
  log?: Pick<PluginLogger, "error">;
18
+ privateKeyEnv: string;
17
19
  resourceEvents: ResourceEventPublisher;
18
20
  webhookSecret(): string | undefined;
19
21
  }): PluginRoute;
@@ -1,44 +1,12 @@
1
1
  import type { ResourceEventInput } from "@sentry/junior-plugin-api";
2
- export type GitHubFailingCheck = {
3
- checkRunId: number;
4
- conclusion: string;
5
- htmlUrl?: string;
6
- name: string;
7
- };
8
- /** Build a browser URL for one check suite. GitHub does not send html_url. */
9
- export declare function buildCheckSuiteUrl(args: {
10
- checkSuiteId: number;
11
- headSha: string;
12
- repo: string;
13
- }): string;
14
- /** Build the trusted data and summary for one check-suite PR event. */
15
- export declare function buildCheckSuiteResourceEvent(args: {
16
- appName?: string;
17
- checkSuiteId?: number;
18
- deliveryId: string;
19
- eventType: "pull_request.checks.failed" | "pull_request.checks.recovered";
20
- failingChecks?: GitHubFailingCheck[];
21
- headSha?: string;
22
- latestCheckRunsCount?: number;
23
- pullRequestNumber: number;
24
- repo: string;
25
- suiteConclusion: string;
26
- }): ResourceEventInput;
27
- /** Keep only failed check runs from one suite. */
28
- export declare function selectFailingChecks(checkRuns: unknown, options?: {
29
- checkSuiteId?: number;
30
- }): GitHubFailingCheck[];
31
- /** Read the check suite target used to load failed check runs. */
32
- export declare function parseCheckSuiteEnrichmentTarget(body: unknown): {
33
- checkSuiteId: number;
34
- headSha: string;
35
- owner: string;
36
- repoName: string;
37
- } | undefined;
2
+ import { type GitHubCheckSuiteFacts } from "./check-suite.js";
3
+ export type { GitHubCheckSuiteFacts, GitHubCheckSuitePullRequestFacts, GitHubFailingCheck, } from "./check-suite.js";
4
+ export { buildCheckSuiteResourceEvent, buildCheckSuiteUrl, loadCheckSuiteFacts, needsCheckSuitePullRequestFacts, parseCheckSuiteFactsTarget, parseCheckSuitePublishTargets, selectFailingChecks, } from "./check-suite.js";
5
+ /** Read the check suite target used to load missing suite facts. */
38
6
  /** Normalize one verified GitHub delivery into conversation resource events. */
39
7
  export declare function normalizeGitHubResourceEvents(args: {
40
8
  body: unknown;
9
+ checkSuiteFacts?: GitHubCheckSuiteFacts;
41
10
  deliveryId: string;
42
11
  eventName: string;
43
- failingChecks?: GitHubFailingCheck[];
44
12
  }): ResourceEventInput[];
@@ -0,0 +1,74 @@
1
+ INSERT INTO junior_code_repositories (
2
+ id,
3
+ name,
4
+ provider,
5
+ provider_id,
6
+ url,
7
+ updated_at
8
+ )
9
+ SELECT DISTINCT ON (repository_id)
10
+ gen_random_uuid(),
11
+ repository_full_name,
12
+ 'github',
13
+ repository_id,
14
+ 'https://github.com/' || repository_full_name,
15
+ updated_at
16
+ FROM junior_github_pull_requests
17
+ ORDER BY repository_id, updated_at DESC
18
+ ON CONFLICT (provider, provider_id) DO UPDATE SET
19
+ name = EXCLUDED.name,
20
+ url = EXCLUDED.url,
21
+ updated_at = EXCLUDED.updated_at
22
+ WHERE junior_code_repositories.updated_at <= EXCLUDED.updated_at;
23
+ --> statement-breakpoint
24
+ INSERT INTO junior_code_changes (
25
+ id,
26
+ closed_at,
27
+ conversation_ids,
28
+ merged_at,
29
+ number,
30
+ opened_at,
31
+ provider,
32
+ provider_id,
33
+ repository_id,
34
+ state,
35
+ updated_at,
36
+ url
37
+ )
38
+ SELECT
39
+ gen_random_uuid(),
40
+ github_change.closed_at,
41
+ github_change.conversation_ids,
42
+ github_change.merged_at,
43
+ github_change.number,
44
+ github_change.opened_at,
45
+ 'github',
46
+ github_change.pull_request_id,
47
+ repository.id,
48
+ CASE github_change.state
49
+ WHEN 'closed_unmerged' THEN 'closed'
50
+ ELSE github_change.state
51
+ END,
52
+ github_change.updated_at,
53
+ 'https://github.com/' || github_change.repository_full_name || '/pull/' || github_change.number
54
+ FROM junior_github_pull_requests AS github_change
55
+ JOIN junior_code_repositories AS repository
56
+ ON repository.provider = 'github'
57
+ AND repository.provider_id = github_change.repository_id
58
+ ON CONFLICT (provider, provider_id) DO UPDATE SET
59
+ closed_at = EXCLUDED.closed_at,
60
+ conversation_ids = ARRAY(
61
+ SELECT DISTINCT value
62
+ FROM unnest(
63
+ junior_code_changes.conversation_ids || EXCLUDED.conversation_ids
64
+ ) AS value
65
+ ORDER BY value
66
+ ),
67
+ merged_at = EXCLUDED.merged_at,
68
+ number = EXCLUDED.number,
69
+ opened_at = EXCLUDED.opened_at,
70
+ repository_id = EXCLUDED.repository_id,
71
+ state = EXCLUDED.state,
72
+ updated_at = EXCLUDED.updated_at,
73
+ url = EXCLUDED.url
74
+ WHERE junior_code_changes.updated_at <= EXCLUDED.updated_at;
@@ -0,0 +1,348 @@
1
+ {
2
+ "id": "da9cceed-a211-4f1b-a5b8-ac4237b9caf5",
3
+ "prevId": "a54d392c-28bb-4cd3-ba14-1bcfa793fcce",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.junior_github_issues": {
8
+ "name": "junior_github_issues",
9
+ "schema": "",
10
+ "columns": {
11
+ "issue_id": {
12
+ "name": "issue_id",
13
+ "type": "text",
14
+ "primaryKey": true,
15
+ "notNull": true
16
+ },
17
+ "repository_id": {
18
+ "name": "repository_id",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true
22
+ },
23
+ "repository_full_name": {
24
+ "name": "repository_full_name",
25
+ "type": "text",
26
+ "primaryKey": false,
27
+ "notNull": true
28
+ },
29
+ "number": {
30
+ "name": "number",
31
+ "type": "integer",
32
+ "primaryKey": false,
33
+ "notNull": true
34
+ },
35
+ "state": {
36
+ "name": "state",
37
+ "type": "text",
38
+ "primaryKey": false,
39
+ "notNull": true
40
+ },
41
+ "state_reason": {
42
+ "name": "state_reason",
43
+ "type": "text",
44
+ "primaryKey": false,
45
+ "notNull": false
46
+ },
47
+ "conversation_ids": {
48
+ "name": "conversation_ids",
49
+ "type": "text[]",
50
+ "primaryKey": false,
51
+ "notNull": true,
52
+ "default": "ARRAY[]::text[]"
53
+ },
54
+ "opened_at": {
55
+ "name": "opened_at",
56
+ "type": "timestamp with time zone",
57
+ "primaryKey": false,
58
+ "notNull": true
59
+ },
60
+ "closed_at": {
61
+ "name": "closed_at",
62
+ "type": "timestamp with time zone",
63
+ "primaryKey": false,
64
+ "notNull": false
65
+ },
66
+ "updated_at": {
67
+ "name": "updated_at",
68
+ "type": "timestamp with time zone",
69
+ "primaryKey": false,
70
+ "notNull": true
71
+ }
72
+ },
73
+ "indexes": {
74
+ "junior_github_issues_opened_at_idx": {
75
+ "name": "junior_github_issues_opened_at_idx",
76
+ "columns": [
77
+ {
78
+ "expression": "opened_at",
79
+ "isExpression": false,
80
+ "asc": true,
81
+ "nulls": "last"
82
+ }
83
+ ],
84
+ "isUnique": false,
85
+ "with": {},
86
+ "method": "btree",
87
+ "concurrently": false
88
+ },
89
+ "junior_github_issues_closed_at_idx": {
90
+ "name": "junior_github_issues_closed_at_idx",
91
+ "columns": [
92
+ {
93
+ "expression": "closed_at",
94
+ "isExpression": false,
95
+ "asc": true,
96
+ "nulls": "last"
97
+ }
98
+ ],
99
+ "isUnique": false,
100
+ "with": {},
101
+ "method": "btree",
102
+ "concurrently": false
103
+ },
104
+ "junior_github_issues_open_idx": {
105
+ "name": "junior_github_issues_open_idx",
106
+ "columns": [
107
+ {
108
+ "expression": "issue_id",
109
+ "isExpression": false,
110
+ "asc": true,
111
+ "nulls": "last"
112
+ }
113
+ ],
114
+ "isUnique": false,
115
+ "with": {},
116
+ "method": "btree",
117
+ "where": "\"junior_github_issues\".\"state\" = 'open'",
118
+ "concurrently": false
119
+ }
120
+ },
121
+ "foreignKeys": {},
122
+ "compositePrimaryKeys": {},
123
+ "uniqueConstraints": {},
124
+ "policies": {},
125
+ "checkConstraints": {},
126
+ "isRLSEnabled": false
127
+ },
128
+ "public.junior_github_pull_request_issues": {
129
+ "name": "junior_github_pull_request_issues",
130
+ "schema": "",
131
+ "columns": {
132
+ "pull_request_id": {
133
+ "name": "pull_request_id",
134
+ "type": "text",
135
+ "primaryKey": false,
136
+ "notNull": true
137
+ },
138
+ "issue_repository_full_name": {
139
+ "name": "issue_repository_full_name",
140
+ "type": "text",
141
+ "primaryKey": false,
142
+ "notNull": true
143
+ },
144
+ "issue_number": {
145
+ "name": "issue_number",
146
+ "type": "integer",
147
+ "primaryKey": false,
148
+ "notNull": true
149
+ }
150
+ },
151
+ "indexes": {},
152
+ "foreignKeys": {
153
+ "junior_github_pull_request_issues_pull_request_id_junior_github_pull_requests_pull_request_id_fk": {
154
+ "name": "junior_github_pull_request_issues_pull_request_id_junior_github_pull_requests_pull_request_id_fk",
155
+ "tableFrom": "junior_github_pull_request_issues",
156
+ "columnsFrom": ["pull_request_id"],
157
+ "tableTo": "junior_github_pull_requests",
158
+ "columnsTo": ["pull_request_id"],
159
+ "onUpdate": "no action",
160
+ "onDelete": "cascade"
161
+ }
162
+ },
163
+ "compositePrimaryKeys": {
164
+ "junior_github_pull_request_issues_pull_request_id_issue_repository_full_name_issue_number_pk": {
165
+ "name": "junior_github_pull_request_issues_pull_request_id_issue_repository_full_name_issue_number_pk",
166
+ "columns": [
167
+ "pull_request_id",
168
+ "issue_repository_full_name",
169
+ "issue_number"
170
+ ]
171
+ }
172
+ },
173
+ "uniqueConstraints": {},
174
+ "policies": {},
175
+ "checkConstraints": {},
176
+ "isRLSEnabled": false
177
+ },
178
+ "public.junior_github_pull_requests": {
179
+ "name": "junior_github_pull_requests",
180
+ "schema": "",
181
+ "columns": {
182
+ "pull_request_id": {
183
+ "name": "pull_request_id",
184
+ "type": "text",
185
+ "primaryKey": true,
186
+ "notNull": true
187
+ },
188
+ "repository_id": {
189
+ "name": "repository_id",
190
+ "type": "text",
191
+ "primaryKey": false,
192
+ "notNull": true
193
+ },
194
+ "repository_full_name": {
195
+ "name": "repository_full_name",
196
+ "type": "text",
197
+ "primaryKey": false,
198
+ "notNull": true
199
+ },
200
+ "number": {
201
+ "name": "number",
202
+ "type": "integer",
203
+ "primaryKey": false,
204
+ "notNull": true
205
+ },
206
+ "state": {
207
+ "name": "state",
208
+ "type": "text",
209
+ "primaryKey": false,
210
+ "notNull": true
211
+ },
212
+ "commit_composition": {
213
+ "name": "commit_composition",
214
+ "type": "text",
215
+ "primaryKey": false,
216
+ "notNull": false
217
+ },
218
+ "conversation_ids": {
219
+ "name": "conversation_ids",
220
+ "type": "text[]",
221
+ "primaryKey": false,
222
+ "notNull": true,
223
+ "default": "ARRAY[]::text[]"
224
+ },
225
+ "opened_at": {
226
+ "name": "opened_at",
227
+ "type": "timestamp with time zone",
228
+ "primaryKey": false,
229
+ "notNull": true
230
+ },
231
+ "merged_at": {
232
+ "name": "merged_at",
233
+ "type": "timestamp with time zone",
234
+ "primaryKey": false,
235
+ "notNull": false
236
+ },
237
+ "closed_at": {
238
+ "name": "closed_at",
239
+ "type": "timestamp with time zone",
240
+ "primaryKey": false,
241
+ "notNull": false
242
+ },
243
+ "updated_at": {
244
+ "name": "updated_at",
245
+ "type": "timestamp with time zone",
246
+ "primaryKey": false,
247
+ "notNull": true
248
+ }
249
+ },
250
+ "indexes": {
251
+ "junior_github_pull_requests_opened_at_idx": {
252
+ "name": "junior_github_pull_requests_opened_at_idx",
253
+ "columns": [
254
+ {
255
+ "expression": "opened_at",
256
+ "isExpression": false,
257
+ "asc": true,
258
+ "nulls": "last"
259
+ }
260
+ ],
261
+ "isUnique": false,
262
+ "with": {},
263
+ "method": "btree",
264
+ "concurrently": false
265
+ },
266
+ "junior_github_pull_requests_merged_at_idx": {
267
+ "name": "junior_github_pull_requests_merged_at_idx",
268
+ "columns": [
269
+ {
270
+ "expression": "merged_at",
271
+ "isExpression": false,
272
+ "asc": true,
273
+ "nulls": "last"
274
+ }
275
+ ],
276
+ "isUnique": false,
277
+ "with": {},
278
+ "method": "btree",
279
+ "concurrently": false
280
+ },
281
+ "junior_github_pull_requests_closed_at_idx": {
282
+ "name": "junior_github_pull_requests_closed_at_idx",
283
+ "columns": [
284
+ {
285
+ "expression": "closed_at",
286
+ "isExpression": false,
287
+ "asc": true,
288
+ "nulls": "last"
289
+ }
290
+ ],
291
+ "isUnique": false,
292
+ "with": {},
293
+ "method": "btree",
294
+ "concurrently": false
295
+ },
296
+ "junior_github_pull_requests_open_idx": {
297
+ "name": "junior_github_pull_requests_open_idx",
298
+ "columns": [
299
+ {
300
+ "expression": "pull_request_id",
301
+ "isExpression": false,
302
+ "asc": true,
303
+ "nulls": "last"
304
+ }
305
+ ],
306
+ "isUnique": false,
307
+ "with": {},
308
+ "method": "btree",
309
+ "where": "\"junior_github_pull_requests\".\"state\" = 'open'",
310
+ "concurrently": false
311
+ },
312
+ "junior_github_pull_requests_unmerged_conversations_idx": {
313
+ "name": "junior_github_pull_requests_unmerged_conversations_idx",
314
+ "columns": [
315
+ {
316
+ "expression": "conversation_ids",
317
+ "isExpression": false,
318
+ "asc": true,
319
+ "nulls": "last"
320
+ }
321
+ ],
322
+ "isUnique": false,
323
+ "with": {},
324
+ "method": "gin",
325
+ "where": "\"junior_github_pull_requests\".\"state\" <> 'merged'",
326
+ "concurrently": false
327
+ }
328
+ },
329
+ "foreignKeys": {},
330
+ "compositePrimaryKeys": {},
331
+ "uniqueConstraints": {},
332
+ "policies": {},
333
+ "checkConstraints": {},
334
+ "isRLSEnabled": false
335
+ }
336
+ },
337
+ "enums": {},
338
+ "schemas": {},
339
+ "views": {},
340
+ "sequences": {},
341
+ "roles": {},
342
+ "policies": {},
343
+ "_meta": {
344
+ "columns": {},
345
+ "schemas": {},
346
+ "tables": {}
347
+ }
348
+ }
@@ -57,6 +57,13 @@
57
57
  "when": 1786486305688,
58
58
  "tag": "0007_shallow_millenium_guard",
59
59
  "breakpoints": true
60
+ },
61
+ {
62
+ "idx": 8,
63
+ "version": "7",
64
+ "when": 1787598510781,
65
+ "tag": "0008_native_code_backfill",
66
+ "breakpoints": true
60
67
  }
61
68
  ]
62
- }
69
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/junior-github",
3
- "version": "0.181.1",
3
+ "version": "0.183.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -31,7 +31,7 @@
31
31
  "@sinclair/typebox": "^0.34.49",
32
32
  "drizzle-orm": "^0.45.2",
33
33
  "zod": "^4.4.3",
34
- "@sentry/junior-plugin-api": "0.181.1"
34
+ "@sentry/junior-plugin-api": "0.183.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@oxlint/plugins": "1.79.0",
@@ -71,7 +71,7 @@ PR titles use the same conventional form as commits: `<type>(<scope>): <Subject>
71
71
 
72
72
  Write the PR body for a reviewer who knows the product but not this change. Use ASD-STE100 English: short sentences, common words, active voice, and one idea per sentence. Avoid dense academic prose and unnecessary jargon.
73
73
 
74
- Explain what this PR changes and why it matters. Add only context the diff cannot show. Keep the body short by default; add structure only when it helps. Omit empty or `N/A` sections, file-by-file narration, copied commit logs, and redundant diff summaries.
74
+ Explain what this PR changes and why it matters. Add only context the diff cannot show. Keep the body short by default; add structure only when it helps. Omit empty or `N/A` sections, file-by-file narration, copied commit logs, and redundant diff summaries. Do not put `Checks`, `Verification`, `Test plan`, or similar validation sections in the PR body; put local check results only in the final user report.
75
75
 
76
76
  Treat the current title, body, and commit messages as fallible context. After material follow-up commits, re-check the title and rewrite the body against the current diff with `github_updatePullRequest`. Never include customer data, PII, secrets, or sensitive thread context, especially in public repositories. Resolve requested assignee/reviewer handles from evidence; skip unconfirmed identities.
77
77
 
@@ -81,4 +81,4 @@ If PR creation or update is blocked, report the exact failed command/tool call a
81
81
 
82
82
  When PR creation returns a subscribable resource hint, subscribe to suggested review/CI events. Report only actionable feedback addressed, build failures fixed, fully green/ready state, or merge.
83
83
 
84
- Return: repo, branch, PR URL/number, checks and results, pre-existing failures, and anything not run with the reason.
84
+ Return to the user (not the PR body): repo, branch, PR URL/number, local check results, pre-existing failures, and anything not run with the reason.