@sentry/junior-github 0.179.0 → 0.181.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.
@@ -104,7 +104,7 @@ function gitHubPullRequestSubscribable(input) {
104
104
  );
105
105
  return {
106
106
  ...gitHubPullRequestResource(input),
107
- ...suggestedEvents.length > 0 ? { suggestedEvents: [...suggestedEvents] } : {},
107
+ ...suggestedEvents.length > 0 ? { suggestedEvents: [...suggestedEvents] } : void 0,
108
108
  supportedEvents: [...GITHUB_PULL_REQUEST_EVENTS],
109
109
  type: "pull_request"
110
110
  };
@@ -272,7 +272,7 @@ function normalizeDeploymentStatusEvent(deliveryId, body) {
272
272
  eventType,
273
273
  occurredAtMs: providerTime(parsed.statusCreatedAt) ?? Date.now(),
274
274
  identifier: resource.identifier,
275
- ...terminal && completeOnTerminalEvent ? { terminal: true } : {},
275
+ ...terminal && completeOnTerminalEvent ? { terminal: true } : void 0,
276
276
  trustedSummary: `${resource.label} ${outcome} (deployment ${parsed.deploymentId}).`,
277
277
  untrustedText: parsed.description ?? void 0
278
278
  })
@@ -352,7 +352,7 @@ function buildCheckSuiteResourceEvent(args) {
352
352
  if (args.eventType === "pull_request.checks.failed" && failingCount > 0) {
353
353
  data.failingChecks = failingChecks.map((check) => ({
354
354
  conclusion: check.conclusion,
355
- ...check.htmlUrl ? { htmlUrl: check.htmlUrl } : {},
355
+ ...check.htmlUrl ? { htmlUrl: check.htmlUrl } : void 0,
356
356
  checkRunId: check.checkRunId
357
357
  }));
358
358
  }
@@ -374,7 +374,7 @@ function buildCheckSuiteResourceEvent(args) {
374
374
  identifier: resource.identifier,
375
375
  trustedSummary,
376
376
  data,
377
- ...untrustedText ? { untrustedText } : {}
377
+ ...untrustedText ? { untrustedText } : void 0
378
378
  };
379
379
  }
380
380
  function selectFailingChecks(checkRuns, options) {
@@ -397,7 +397,7 @@ function selectFailingChecks(checkRuns, options) {
397
397
  failing.push({
398
398
  checkRunId,
399
399
  conclusion,
400
- ...htmlUrl ? { htmlUrl } : {},
400
+ ...htmlUrl ? { htmlUrl } : void 0,
401
401
  name
402
402
  });
403
403
  }
@@ -529,7 +529,7 @@ function normalizeIssueEvents(deliveryId, body) {
529
529
  occurredAtMs,
530
530
  identifier: issue.identifier,
531
531
  trustedSummary: `${issue.label} was ${state}.`,
532
- ...untrustedText ? { untrustedText } : {}
532
+ ...untrustedText ? { untrustedText } : void 0
533
533
  },
534
534
  {
535
535
  eventKey: gitHubEventKey(deliveryId, `issue.${state}`),
@@ -537,7 +537,7 @@ function normalizeIssueEvents(deliveryId, body) {
537
537
  occurredAtMs,
538
538
  identifier: repository.identifier,
539
539
  trustedSummary: `${issue.label} was ${state}.`,
540
- ...untrustedText ? { untrustedText } : {}
540
+ ...untrustedText ? { untrustedText } : void 0
541
541
  }
542
542
  ];
543
543
  }
@@ -640,9 +640,9 @@ function pullRequestLifecycleEvents(input) {
640
640
  eventType: input.eventType,
641
641
  occurredAtMs: input.occurredAtMs,
642
642
  identifier: input.resource.identifier,
643
- ...input.terminal ? { terminal: true } : {},
643
+ ...input.terminal ? { terminal: true } : void 0,
644
644
  trustedSummary: input.trustedSummary,
645
- ...input.untrustedText ? { untrustedText: input.untrustedText } : {}
645
+ ...input.untrustedText ? { untrustedText: input.untrustedText } : void 0
646
646
  },
647
647
  input.repo
648
648
  );
@@ -751,9 +751,9 @@ function normalizeReleaseEvent(deliveryId, body) {
751
751
  eventType,
752
752
  occurredAtMs: providerTime(parsed.data.release.published_at) ?? Date.now(),
753
753
  identifier: resource.identifier,
754
- ...completeOnTerminalEvent ? { terminal: true } : {},
754
+ ...completeOnTerminalEvent ? { terminal: true } : void 0,
755
755
  trustedSummary: `${resource.label} was published (release ${parsed.data.release.id}).`,
756
- ...untrustedText ? { untrustedText } : {}
756
+ ...untrustedText ? { untrustedText } : void 0
757
757
  })
758
758
  );
759
759
  }
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  normalizeGitHubResourceEvents,
16
16
  parseCheckSuiteEnrichmentTarget,
17
17
  selectFailingChecks
18
- } from "./chunk-7CREKH4I.js";
18
+ } from "./chunk-GXZVNEIB.js";
19
19
 
20
20
  // src/plugin.ts
21
21
  import {
@@ -208,9 +208,9 @@ async function githubRequest(apiBase, path, params) {
208
208
  Accept: "application/vnd.github+json",
209
209
  Authorization: `Bearer ${params.token}`,
210
210
  "X-GitHub-Api-Version": "2022-11-28",
211
- ...params.body ? { "Content-Type": "application/json" } : {}
211
+ ...params.body ? { "Content-Type": "application/json" } : void 0
212
212
  },
213
- ...params.body ? { body: JSON.stringify(params.body) } : {}
213
+ ...params.body ? { body: JSON.stringify(params.body) } : void 0
214
214
  });
215
215
  const text2 = await response.text();
216
216
  let parsed;
@@ -277,7 +277,7 @@ function parseOAuthTokenResponse(data, requestedScope) {
277
277
  const result = {
278
278
  accessToken: data.access_token,
279
279
  refreshToken: data.refresh_token,
280
- ...scope ? { scope } : {}
280
+ ...scope ? { scope } : void 0
281
281
  };
282
282
  if (data.expires_in !== void 0) {
283
283
  if (typeof data.expires_in !== "number" || !Number.isFinite(data.expires_in) || data.expires_in <= 0) {
@@ -350,8 +350,8 @@ function createCredentialLease(input) {
350
350
  return {
351
351
  type: "lease",
352
352
  lease: {
353
- ...input.account ? { account: input.account } : {},
354
- ...input.authorization ? { authorization: input.authorization } : {},
353
+ ...input.account ? { account: input.account } : void 0,
354
+ ...input.authorization ? { authorization: input.authorization } : void 0,
355
355
  expiresAt: new Date(input.expiresAtMs).toISOString(),
356
356
  headerTransforms: (input.domains ?? (input.authorization ? GITHUB_ASSET_UPLOAD_CREDENTIAL_DOMAINS : GITHUB_CREDENTIAL_DOMAINS)).map((domain) => ({
357
357
  domain,
@@ -366,14 +366,14 @@ function githubUserAuthorization(scope) {
366
366
  return {
367
367
  type: "oauth",
368
368
  provider: "github",
369
- ...scope ? { scope } : {}
369
+ ...scope ? { scope } : void 0
370
370
  };
371
371
  }
372
372
  function credentialNeeded(message, scope, allowAuthorization = true) {
373
373
  return {
374
374
  type: "needed",
375
375
  message,
376
- ...allowAuthorization ? { authorization: githubUserAuthorization(scope) } : {}
376
+ ...allowAuthorization ? { authorization: githubUserAuthorization(scope) } : void 0
377
377
  };
378
378
  }
379
379
  function credentialUnavailable(message) {
@@ -457,7 +457,7 @@ async function resolveUserAccount(tokens) {
457
457
  handle: login.trim(),
458
458
  id: String(id),
459
459
  label: login.trim(),
460
- ...url ? { url } : {}
460
+ ...url ? { url } : void 0
461
461
  };
462
462
  }
463
463
  async function tokensWithAccount(tokenSlot, stored, scope) {
@@ -540,9 +540,9 @@ async function refreshUserTokensWithLock(tokenSlot, scope, options) {
540
540
  };
541
541
  }
542
542
  const refreshedTokens = {
543
- ...latest.refreshTokenExpiresAt ? { refreshTokenExpiresAt: latest.refreshTokenExpiresAt } : {},
543
+ ...latest.refreshTokenExpiresAt ? { refreshTokenExpiresAt: latest.refreshTokenExpiresAt } : void 0,
544
544
  ...refreshed,
545
- ...latest.account ? { account: latest.account } : {}
545
+ ...latest.account ? { account: latest.account } : void 0
546
546
  };
547
547
  await tokenSlot.set(refreshedTokens);
548
548
  return { ok: true, tokens: refreshedTokens };
@@ -620,8 +620,8 @@ async function issueInstallationToken(options) {
620
620
  const appJwt = createAppJwt(appId, options.privateKeyEnv);
621
621
  const permissions = "permissions" in options ? options.permissions : typeof options.loadPermissions === "function" ? await options.loadPermissions({ appJwt, installationId }) : void 0;
622
622
  const body = {
623
- ...permissions ? { permissions } : {},
624
- ..."repositories" in options ? { repositories: options.repositories } : {}
623
+ ...permissions ? { permissions } : void 0,
624
+ ..."repositories" in options ? { repositories: options.repositories } : void 0
625
625
  };
626
626
  const accessTokenResponse = await githubRequest(
627
627
  "https://api.github.com",
@@ -760,10 +760,11 @@ var cloneSchema = z.object({
760
760
  path: z.string(),
761
761
  repo: z.string()
762
762
  });
763
- var outputSchema = pluginToolOutputSchema.extend({
764
- target: z.literal("cloneRepository"),
765
- ...cloneSchema.shape
766
- });
763
+ var outputSchema = pluginToolOutputSchema.merge(
764
+ cloneSchema.extend({
765
+ target: z.literal("cloneRepository")
766
+ })
767
+ );
767
768
  function parseRepo(value) {
768
769
  const parts = value.split("/").map((part) => part.trim());
769
770
  if (parts.length !== 2 || !parts[0] || !parts[1]) {
@@ -1174,17 +1175,18 @@ var gitHubIssueDataSchema = z2.object({
1174
1175
  subscribable: subscribableResourceSchema.optional(),
1175
1176
  url: z2.string()
1176
1177
  });
1177
- var gitHubIssueOutputSchema = pluginToolOutputSchema2.extend({
1178
- target: z2.literal("createIssue"),
1179
- ...gitHubIssueDataSchema.shape
1180
- });
1178
+ var gitHubIssueOutputSchema = pluginToolOutputSchema2.merge(
1179
+ gitHubIssueDataSchema.extend({
1180
+ target: z2.literal("createIssue")
1181
+ })
1182
+ );
1181
1183
  function gitHubIssueToolResult(input, result, canSubscribe) {
1182
1184
  const repo = parseRepo2(input.repo);
1183
1185
  const subscribable = canSubscribe ? gitHubIssueSubscribable({
1184
1186
  number: result.number,
1185
1187
  repo: `${repo.owner}/${repo.name}`
1186
1188
  }) : void 0;
1187
- const data = { ...result, ...subscribable ? { subscribable } : {} };
1189
+ const data = { ...result, ...subscribable ? { subscribable } : void 0 };
1188
1190
  return {
1189
1191
  target: "createIssue",
1190
1192
  ...data
@@ -1272,7 +1274,7 @@ async function createGitHubIssueRequest(conversationId, input, ctx, dashboardUrl
1272
1274
  conversationId,
1273
1275
  dashboardUrl
1274
1276
  ),
1275
- ...labels?.length ? { labels } : {}
1277
+ ...labels?.length ? { labels } : void 0
1276
1278
  };
1277
1279
  return new Request(
1278
1280
  `https://api.github.com/repos/${encodeURIComponent(
@@ -1463,10 +1465,11 @@ var deploymentSourceSchema = z3.object({
1463
1465
  repo: z3.string(),
1464
1466
  subscribable: subscribableResourceSchema2.optional()
1465
1467
  }).strict();
1466
- var outputSchema2 = pluginToolOutputSchema3.extend({
1467
- target: z3.literal("getDeployment"),
1468
- ...deploymentSourceSchema.shape
1469
- }).strict();
1468
+ var outputSchema2 = pluginToolOutputSchema3.merge(
1469
+ deploymentSourceSchema.extend({
1470
+ target: z3.literal("getDeployment")
1471
+ })
1472
+ );
1470
1473
  var providerCreatorSchema = z3.object({ login: z3.string() }).passthrough().nullable();
1471
1474
  var providerDeploymentSchema = z3.object({
1472
1475
  created_at: z3.string(),
@@ -1608,7 +1611,7 @@ function createGitHubGetDeploymentTool(ctx) {
1608
1611
  deployment,
1609
1612
  environment: input.environment ?? null,
1610
1613
  repo: repo.ref,
1611
- ...subscribable ? { subscribable } : {}
1614
+ ...subscribable ? { subscribable } : void 0
1612
1615
  };
1613
1616
  return {
1614
1617
  target: "getDeployment",
@@ -1701,10 +1704,11 @@ var gitHubPullRequestDataSchema = z4.object({
1701
1704
  subscribable: subscribableResourceSchema3.optional(),
1702
1705
  subscription: resourceEventSubscriptionResultSchema.optional()
1703
1706
  });
1704
- var gitHubPullRequestOutputSchema = pluginToolOutputSchema4.extend({
1705
- target: z4.literal("createPullRequest"),
1706
- ...gitHubPullRequestDataSchema.shape
1707
- });
1707
+ var gitHubPullRequestOutputSchema = pluginToolOutputSchema4.merge(
1708
+ gitHubPullRequestDataSchema.extend({
1709
+ target: z4.literal("createPullRequest")
1710
+ })
1711
+ );
1708
1712
  function parseCreatePullRequestInput(input) {
1709
1713
  try {
1710
1714
  return Value2.Parse(createPullRequestInputSchema, input);
@@ -1744,9 +1748,10 @@ async function readJsonResponse2(response) {
1744
1748
  }
1745
1749
  function githubApiErrorMessage2(payload) {
1746
1750
  if (payload && typeof payload === "object" && !Array.isArray(payload)) {
1747
- const message = payload.message;
1751
+ const record = payload;
1752
+ const message = record.message;
1748
1753
  if (typeof message === "string") {
1749
- const details = githubApiErrorDetails(payload);
1754
+ const details = githubApiErrorDetails(record);
1750
1755
  return details ? `${message}: ${details}` : message;
1751
1756
  }
1752
1757
  }
@@ -1804,7 +1809,7 @@ async function createGitHubPullRequestRequest(conversationId, input, ctx, dashbo
1804
1809
  conversationId,
1805
1810
  dashboardUrl
1806
1811
  ),
1807
- ...input.draft !== void 0 ? { draft: input.draft } : {}
1812
+ ...input.draft !== void 0 ? { draft: input.draft } : void 0
1808
1813
  };
1809
1814
  return new Request(
1810
1815
  `https://api.github.com/repos/${encodeURIComponent(
@@ -1857,9 +1862,9 @@ function gitHubPullRequestToolResult(input, result, canSubscribe, omitSuggestedE
1857
1862
  const subscribable = canSubscribe ? gitHubPullRequestSubscribable({
1858
1863
  number: result.number,
1859
1864
  repo: `${repo.owner}/${repo.name}`,
1860
- ...omitSuggestedEvents ? { omitSuggestedEvents } : {}
1865
+ ...omitSuggestedEvents ? { omitSuggestedEvents } : void 0
1861
1866
  }) : void 0;
1862
- return { ...result, ...subscribable ? { subscribable } : {} };
1867
+ return { ...result, ...subscribable ? { subscribable } : void 0 };
1863
1868
  }
1864
1869
  async function annotatePullRequest(ctx, input, result) {
1865
1870
  const repo = parseRepo4(input.repo);
@@ -2030,10 +2035,11 @@ var pullRequestSchema = z5.object({
2030
2035
  title: z5.string(),
2031
2036
  url: z5.string()
2032
2037
  });
2033
- var outputSchema3 = pluginToolOutputSchema5.extend({
2034
- target: z5.literal("getPullRequest"),
2035
- ...pullRequestSchema.shape
2036
- });
2038
+ var outputSchema3 = pluginToolOutputSchema5.merge(
2039
+ pullRequestSchema.extend({
2040
+ target: z5.literal("getPullRequest")
2041
+ })
2042
+ );
2037
2043
  function parseRepo5(value) {
2038
2044
  const parts = value.split("/").map((part) => part.trim());
2039
2045
  if (parts.length !== 2 || !parts[0] || !parts[1]) {
@@ -2106,7 +2112,7 @@ function createGitHubGetPullRequestTool(ctx) {
2106
2112
  merged: providerResult.merged,
2107
2113
  number: providerResult.number,
2108
2114
  state: providerResult.state,
2109
- ...subscribable ? { subscribable } : {},
2115
+ ...subscribable ? { subscribable } : void 0,
2110
2116
  title: providerResult.title,
2111
2117
  url: providerResult.html_url
2112
2118
  };
@@ -2149,10 +2155,11 @@ var releaseSourceSchema = z6.object({
2149
2155
  subscribable: subscribableResourceSchema5.optional(),
2150
2156
  tag: z6.string().nullable()
2151
2157
  }).strict();
2152
- var outputSchema4 = pluginToolOutputSchema6.extend({
2153
- target: z6.literal("getRelease"),
2154
- ...releaseSourceSchema.shape
2155
- }).strict();
2158
+ var outputSchema4 = pluginToolOutputSchema6.merge(
2159
+ releaseSourceSchema.extend({
2160
+ target: z6.literal("getRelease")
2161
+ })
2162
+ );
2156
2163
  var providerReleaseSchema = z6.object({
2157
2164
  created_at: z6.string(),
2158
2165
  draft: z6.boolean(),
@@ -2263,7 +2270,7 @@ function createGitHubGetReleaseTool(ctx) {
2263
2270
  release,
2264
2271
  repo: repo.ref,
2265
2272
  tag: tag ?? null,
2266
- ...subscribable ? { subscribable } : {}
2273
+ ...subscribable ? { subscribable } : void 0
2267
2274
  };
2268
2275
  return {
2269
2276
  target: "getRelease",
@@ -2292,10 +2299,11 @@ var repositorySchema = z7.object({
2292
2299
  subscribable: subscribableResourceSchema6.optional(),
2293
2300
  url: z7.string()
2294
2301
  });
2295
- var outputSchema5 = pluginToolOutputSchema7.extend({
2296
- target: z7.literal("getRepository"),
2297
- ...repositorySchema.shape
2298
- });
2302
+ var outputSchema5 = pluginToolOutputSchema7.merge(
2303
+ repositorySchema.extend({
2304
+ target: z7.literal("getRepository")
2305
+ })
2306
+ );
2299
2307
  function parseRepo7(value) {
2300
2308
  const parts = value.split("/").map((part) => part.trim());
2301
2309
  if (parts.length !== 2 || !parts[0] || !parts[1]) {
@@ -2359,7 +2367,7 @@ function createGitHubGetRepositoryTool(ctx) {
2359
2367
  description: providerResult.description,
2360
2368
  fullName: providerResult.full_name,
2361
2369
  private: providerResult.private,
2362
- ...subscribable ? { subscribable } : {},
2370
+ ...subscribable ? { subscribable } : void 0,
2363
2371
  url: providerResult.html_url
2364
2372
  };
2365
2373
  return {
@@ -2398,10 +2406,11 @@ var issueSchema = z8.object({
2398
2406
  title: z8.string(),
2399
2407
  url: z8.string()
2400
2408
  });
2401
- var outputSchema6 = pluginToolOutputSchema8.extend({
2402
- target: z8.literal("updateIssue"),
2403
- ...issueSchema.shape
2404
- });
2409
+ var outputSchema6 = pluginToolOutputSchema8.merge(
2410
+ issueSchema.extend({
2411
+ target: z8.literal("updateIssue")
2412
+ })
2413
+ );
2405
2414
  function nonEmptyString4(value, name) {
2406
2415
  if (!value?.trim()) throw new PluginToolInputError9(`${name} is required`);
2407
2416
  return value.trim();
@@ -2451,15 +2460,15 @@ function createGitHubUpdateIssueTool(ctx) {
2451
2460
  const update = parsedInput.data;
2452
2461
  const repo = parseRepo8(update.repo);
2453
2462
  const payload = {
2454
- ...update.title !== void 0 ? { title: update.title } : {},
2463
+ ...update.title !== void 0 ? { title: update.title } : void 0,
2455
2464
  ...update.body !== void 0 ? {
2456
2465
  body: appendGitHubFooter(
2457
2466
  await appendGitHubRequesterAttribution(update.body, ctx),
2458
2467
  nonEmptyString4(ctx.conversationId, "conversationId"),
2459
2468
  ctx.slack?.conversationLink?.url
2460
2469
  )
2461
- } : {},
2462
- ...update.state !== void 0 ? { state: update.state } : {}
2470
+ } : void 0,
2471
+ ...update.state !== void 0 ? { state: update.state } : void 0
2463
2472
  };
2464
2473
  const response = await ctx.egress.fetch({
2465
2474
  provider: "github",
@@ -2499,7 +2508,7 @@ function createGitHubUpdateIssueTool(ctx) {
2499
2508
  body: providerResult.body,
2500
2509
  number: providerResult.number,
2501
2510
  state: providerResult.state,
2502
- ...subscribable ? { subscribable } : {},
2511
+ ...subscribable ? { subscribable } : void 0,
2503
2512
  title: providerResult.title,
2504
2513
  url: providerResult.html_url
2505
2514
  };
@@ -2538,10 +2547,11 @@ var pullRequestSchema2 = z9.object({
2538
2547
  title: z9.string(),
2539
2548
  url: z9.string()
2540
2549
  });
2541
- var outputSchema7 = pluginToolOutputSchema9.extend({
2542
- target: z9.literal("updatePullRequest"),
2543
- ...pullRequestSchema2.shape
2544
- });
2550
+ var outputSchema7 = pluginToolOutputSchema9.merge(
2551
+ pullRequestSchema2.extend({
2552
+ target: z9.literal("updatePullRequest")
2553
+ })
2554
+ );
2545
2555
  function nonEmptyString5(value, name) {
2546
2556
  if (!value?.trim()) {
2547
2557
  throw new PluginToolInputError10(`${name} is required`);
@@ -2594,16 +2604,16 @@ function createGitHubUpdatePullRequestTool(ctx) {
2594
2604
  const update = parsedInput.data;
2595
2605
  const repo = parseRepo9(update.repo);
2596
2606
  const payload = {
2597
- ...update.title !== void 0 ? { title: update.title } : {},
2607
+ ...update.title !== void 0 ? { title: update.title } : void 0,
2598
2608
  ...update.body !== void 0 ? {
2599
2609
  body: appendGitHubFooter(
2600
2610
  await appendGitHubRequesterAttribution(update.body, ctx),
2601
2611
  nonEmptyString5(ctx.conversationId, "conversationId"),
2602
2612
  ctx.slack?.conversationLink?.url
2603
2613
  )
2604
- } : {},
2605
- ...update.base !== void 0 ? { base: update.base } : {},
2606
- ...update.state !== void 0 ? { state: update.state } : {}
2614
+ } : void 0,
2615
+ ...update.base !== void 0 ? { base: update.base } : void 0,
2616
+ ...update.state !== void 0 ? { state: update.state } : void 0
2607
2617
  };
2608
2618
  const response = await ctx.egress.fetch({
2609
2619
  provider: "github",
@@ -2646,7 +2656,7 @@ function createGitHubUpdatePullRequestTool(ctx) {
2646
2656
  draft: providerResult.draft,
2647
2657
  number: providerResult.number,
2648
2658
  state: providerResult.state,
2649
- ...subscribable ? { subscribable } : {},
2659
+ ...subscribable ? { subscribable } : void 0,
2650
2660
  title: providerResult.title,
2651
2661
  url: providerResult.html_url
2652
2662
  };
@@ -3080,7 +3090,7 @@ var githubPullRequestLinkedIssuesInputSchema = z13.object({
3080
3090
  function projectionValues2(input) {
3081
3091
  return {
3082
3092
  closedAt: input.closedAt ?? null,
3083
- ...input.commitComposition ? { commitComposition: input.commitComposition } : {},
3093
+ ...input.commitComposition ? { commitComposition: input.commitComposition } : void 0,
3084
3094
  mergedAt: input.mergedAt ?? null,
3085
3095
  number: input.number,
3086
3096
  openedAt: input.openedAt,
@@ -3361,7 +3371,7 @@ var issueConversationSchema = z14.object({
3361
3371
  id: provider.issue.id,
3362
3372
  user: { login: provider.issue.user.login }
3363
3373
  },
3364
- ...provider.sender ? { sender: { login: provider.sender.login } } : {}
3374
+ ...provider.sender ? { sender: { login: provider.sender.login } } : void 0
3365
3375
  })
3366
3376
  );
3367
3377
  function normalizeGitHubIssueConversations(args) {
@@ -5506,7 +5516,7 @@ function parseGitHubGraphqlRequest(bodyText) {
5506
5516
  ).trim();
5507
5517
  return {
5508
5518
  normalized,
5509
- ...operationName ? { operationName } : {}
5519
+ ...operationName ? { operationName } : void 0
5510
5520
  };
5511
5521
  }
5512
5522
  function escapeRegExp2(value) {
@@ -5694,7 +5704,7 @@ function isGitHubGraphqlMutation(method, upstreamUrl, bodyText, field) {
5694
5704
  }
5695
5705
  function applyGitHubEgressPolicy(input) {
5696
5706
  assertGitHubPullRequestApprovalDenied({
5697
- ...input.bodyText !== void 0 ? { bodyText: input.bodyText } : {},
5707
+ ...input.bodyText !== void 0 ? { bodyText: input.bodyText } : void 0,
5698
5708
  method: input.method,
5699
5709
  upstreamUrl: input.upstreamUrl
5700
5710
  });
@@ -5717,9 +5727,9 @@ function grantForAccess(access, reason, name, leaseScope) {
5717
5727
  return {
5718
5728
  name,
5719
5729
  access,
5720
- ...leaseScope ? { leaseScope } : {},
5730
+ ...leaseScope ? { leaseScope } : void 0,
5721
5731
  reason,
5722
- ...name === "user-write" ? { requirements: USER_WRITE_REQUIREMENTS } : {}
5732
+ ...name === "user-write" ? { requirements: USER_WRITE_REQUIREMENTS } : void 0
5723
5733
  };
5724
5734
  }
5725
5735
  function repositoryLeaseScope(upstreamUrl) {
@@ -5735,9 +5745,9 @@ async function githubGrantForEgress(ctx) {
5735
5745
  const method = ctx.request.method.toUpperCase();
5736
5746
  const upstreamUrl = new URL(ctx.request.url);
5737
5747
  applyGitHubEgressPolicy({
5738
- ...ctx.request.bodyText !== void 0 ? { bodyText: ctx.request.bodyText } : {},
5748
+ ...ctx.request.bodyText !== void 0 ? { bodyText: ctx.request.bodyText } : void 0,
5739
5749
  method,
5740
- ...ctx.request.operation ? { operation: ctx.request.operation } : {},
5750
+ ...ctx.request.operation ? { operation: ctx.request.operation } : void 0,
5741
5751
  upstreamUrl
5742
5752
  });
5743
5753
  if (isGitHubAssetUploadRequest(method, upstreamUrl)) {
@@ -5842,7 +5852,7 @@ function githubPlugin(options = {}) {
5842
5852
  type: "pull_request",
5843
5853
  supportedEvents: [...GITHUB_PULL_REQUEST_EVENTS],
5844
5854
  suggestedEvents: [...GITHUB_PULL_REQUEST_SUGGESTED_EVENTS],
5845
- ...options.pullRequestEvents?.guidance ? { guidance: options.pullRequestEvents.guidance } : {}
5855
+ ...options.pullRequestEvents?.guidance ? { guidance: options.pullRequestEvents.guidance } : void 0
5846
5856
  },
5847
5857
  {
5848
5858
  type: "release_source",
@@ -5889,7 +5899,7 @@ function githubPlugin(options = {}) {
5889
5899
  // GitHub App user-to-server tokens always return scope: "" regardless
5890
5900
  // of what was requested; treat empty response scope as unreported.
5891
5901
  treatEmptyScopeAsUnreported: true,
5892
- ...userScope ? { scope: userScope } : {}
5902
+ ...userScope ? { scope: userScope } : void 0
5893
5903
  },
5894
5904
  commandEnv: {
5895
5905
  [GITHUB_AUTH_TOKEN_ENV]: GITHUB_AUTH_TOKEN_PLACEHOLDER,
package/dist/testing.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  normalizeGitHubResourceEvents
3
- } from "./chunk-7CREKH4I.js";
3
+ } from "./chunk-GXZVNEIB.js";
4
4
  export {
5
5
  normalizeGitHubResourceEvents
6
6
  };
@@ -1,4 +1,4 @@
1
- import type { ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import type { Actor, Identity, PluginLogger, User } from "@sentry/junior-plugin-api";
2
2
  export declare const GITHUB_REQUEST_ATTRIBUTION_START = "<!-- junior-request-attribution:start -->";
3
3
  export declare const GITHUB_REQUEST_ATTRIBUTION_END = "<!-- junior-request-attribution:end -->";
4
4
  /**
@@ -7,4 +7,13 @@ export declare const GITHUB_REQUEST_ATTRIBUTION_END = "<!-- junior-request-attri
7
7
  * Identity lookup is best-effort presentation data. A storage failure falls
8
8
  * back to the already-hydrated actor profile instead of blocking the write.
9
9
  */
10
- export declare function appendGitHubRequesterAttribution(body: string, ctx: Pick<ToolRegistrationHookContext, "actor" | "log" | "users">): Promise<string>;
10
+ export declare function appendGitHubRequesterAttribution(body: string, ctx: {
11
+ actor?: Actor;
12
+ log: PluginLogger;
13
+ users: {
14
+ resolveActor(): Promise<{
15
+ identity?: Identity;
16
+ user?: User;
17
+ } | undefined>;
18
+ };
19
+ }): Promise<string>;
@@ -1,11 +1,14 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type PluginLogger, type PluginSandbox, type PluginWorkspaceToolContext } from "@sentry/junior-plugin-api";
2
2
  /** Clone one GitHub repository into the sandbox as an ad-hoc checkout. */
3
- export declare function createGitHubCloneRepositoryTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubCloneRepositoryTool(ctx: {
4
+ log: PluginLogger;
5
+ sandbox: PluginSandbox;
6
+ workspaces: PluginWorkspaceToolContext;
7
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
8
  repo: string;
5
9
  directory?: string | undefined;
6
10
  allowAdHoc?: boolean | undefined;
7
11
  }, {
8
- [x: string]: unknown;
9
12
  path: string;
10
13
  repo: string;
11
14
  target: "cloneRepository";
@@ -15,7 +18,6 @@ export declare function createGitHubCloneRepositoryTool(ctx: ToolRegistrationHoo
15
18
  reason?: string | undefined;
16
19
  } | undefined;
17
20
  }, {
18
- [x: string]: unknown;
19
21
  path: string;
20
22
  repo: string;
21
23
  target: "cloneRepository";
@@ -6,7 +6,6 @@ export declare function createGitHubIssueTool(ctx: ToolRegistrationHookContext):
6
6
  body?: string | undefined;
7
7
  labels?: string[] | undefined;
8
8
  }, {
9
- [x: string]: unknown;
10
9
  number: number;
11
10
  url: string;
12
11
  target: "createIssue";
@@ -24,7 +23,6 @@ export declare function createGitHubIssueTool(ctx: ToolRegistrationHookContext):
24
23
  suggestedEvents?: string[] | undefined;
25
24
  } | undefined;
26
25
  }, {
27
- [x: string]: unknown;
28
26
  number: number;
29
27
  url: string;
30
28
  target: "createIssue";
@@ -9,7 +9,6 @@ export declare function createGitHubPullRequestTool(ctx: ToolRegistrationHookCon
9
9
  body?: string | undefined;
10
10
  draft?: boolean | undefined;
11
11
  }, {
12
- [x: string]: unknown;
13
12
  number: number;
14
13
  url: string;
15
14
  target: "createPullRequest";
@@ -31,7 +30,6 @@ export declare function createGitHubPullRequestTool(ctx: ToolRegistrationHookCon
31
30
  id: string;
32
31
  } | undefined;
33
32
  }, {
34
- [x: string]: unknown;
35
33
  number: number;
36
34
  url: string;
37
35
  target: "createPullRequest";
@@ -1,6 +1,11 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Read deployment metadata and expose its stable subscription identity. */
3
- export declare function createGitHubGetDeploymentTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubGetDeploymentTool(ctx: {
4
+ egress: PluginEgress;
5
+ resourceEvents: {
6
+ canSubscribe: boolean;
7
+ };
8
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
9
  repo: string;
5
10
  commitSha: string;
6
11
  environment?: string | undefined;
@@ -1,10 +1,14 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Read one PR and expose its stable subscription identity when webhooks are enabled. */
3
- export declare function createGitHubGetPullRequestTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubGetPullRequestTool(ctx: {
4
+ egress: PluginEgress;
5
+ resourceEvents: {
6
+ canSubscribe: boolean;
7
+ };
8
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
9
  repo: string;
5
10
  number: number;
6
11
  }, {
7
- [x: string]: unknown;
8
12
  base: string;
9
13
  draft: boolean;
10
14
  head: string;
@@ -29,7 +33,6 @@ export declare function createGitHubGetPullRequestTool(ctx: ToolRegistrationHook
29
33
  suggestedEvents?: string[] | undefined;
30
34
  } | undefined;
31
35
  }, {
32
- [x: string]: unknown;
33
36
  base: string;
34
37
  draft: boolean;
35
38
  head: string;
@@ -1,6 +1,11 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Read release metadata and expose its stable subscription identity. */
3
- export declare function createGitHubGetReleaseTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubGetReleaseTool(ctx: {
4
+ egress: PluginEgress;
5
+ resourceEvents: {
6
+ canSubscribe: boolean;
7
+ };
8
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
9
  repo: string;
5
10
  tag?: string | undefined;
6
11
  }, {
@@ -1,9 +1,13 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Read one repository and expose its stable subscription identity. */
3
- export declare function createGitHubGetRepositoryTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubGetRepositoryTool(ctx: {
4
+ egress: PluginEgress;
5
+ resourceEvents: {
6
+ canSubscribe: boolean;
7
+ };
8
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
9
  repo: string;
5
10
  }, {
6
- [x: string]: unknown;
7
11
  defaultBranch: string;
8
12
  description: string | null;
9
13
  fullName: string;
@@ -24,7 +28,6 @@ export declare function createGitHubGetRepositoryTool(ctx: ToolRegistrationHookC
24
28
  suggestedEvents?: string[] | undefined;
25
29
  } | undefined;
26
30
  }, {
27
- [x: string]: unknown;
28
31
  defaultBranch: string;
29
32
  description: string | null;
30
33
  fullName: string;
@@ -1,6 +1,8 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Resolve one review thread after GitHub proves it belongs to a Junior-authored PR. */
3
- export declare function createGitHubResolvePullRequestReviewThreadTool(ctx: ToolRegistrationHookContext, botEmail: string | undefined): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubResolvePullRequestReviewThreadTool(ctx: {
4
+ egress: PluginEgress;
5
+ }, botEmail: string | undefined): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
6
  repo: string;
5
7
  threadId: string;
6
8
  }, {
@@ -1,13 +1,31 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type Identity, type User, type Actor, type PluginLogger, type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Update mutable issue metadata while preserving Junior-owned body attribution. */
3
- export declare function createGitHubUpdateIssueTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubUpdateIssueTool(ctx: {
4
+ actor?: Actor;
5
+ conversationId?: string;
6
+ egress: PluginEgress;
7
+ log: PluginLogger;
8
+ resourceEvents: {
9
+ canSubscribe: boolean;
10
+ };
11
+ slack?: {
12
+ conversationLink?: {
13
+ url?: string;
14
+ };
15
+ };
16
+ users: {
17
+ resolveActor(): Promise<{
18
+ identity?: Identity;
19
+ user?: User;
20
+ } | undefined>;
21
+ };
22
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
23
  repo: string;
5
24
  number: number;
6
25
  title?: string | undefined;
7
26
  body?: string | undefined;
8
27
  state?: "open" | "closed" | undefined;
9
28
  }, {
10
- [x: string]: unknown;
11
29
  body: string | null;
12
30
  number: number;
13
31
  state: string;
@@ -28,7 +46,6 @@ export declare function createGitHubUpdateIssueTool(ctx: ToolRegistrationHookCon
28
46
  suggestedEvents?: string[] | undefined;
29
47
  } | undefined;
30
48
  }, {
31
- [x: string]: unknown;
32
49
  body: string | null;
33
50
  number: number;
34
51
  state: string;
@@ -1,6 +1,25 @@
1
- import { type ToolRegistrationHookContext } from "@sentry/junior-plugin-api";
1
+ import { type Identity, type User, type Actor, type PluginLogger, type PluginEgress } from "@sentry/junior-plugin-api";
2
2
  /** Update mutable PR metadata while preserving Junior-owned body attribution. */
3
- export declare function createGitHubUpdatePullRequestTool(ctx: ToolRegistrationHookContext): import("@sentry/junior-plugin-api").PluginToolDefinition<{
3
+ export declare function createGitHubUpdatePullRequestTool(ctx: {
4
+ actor?: Actor;
5
+ conversationId?: string;
6
+ egress: PluginEgress;
7
+ log: PluginLogger;
8
+ resourceEvents: {
9
+ canSubscribe: boolean;
10
+ };
11
+ slack?: {
12
+ conversationLink?: {
13
+ url?: string;
14
+ };
15
+ };
16
+ users: {
17
+ resolveActor(): Promise<{
18
+ identity?: Identity;
19
+ user?: User;
20
+ } | undefined>;
21
+ };
22
+ }): import("@sentry/junior-plugin-api").PluginToolDefinition<{
4
23
  repo: string;
5
24
  number: number;
6
25
  title?: string | undefined;
@@ -8,7 +27,6 @@ export declare function createGitHubUpdatePullRequestTool(ctx: ToolRegistrationH
8
27
  base?: string | undefined;
9
28
  state?: "open" | "closed" | undefined;
10
29
  }, {
11
- [x: string]: unknown;
12
30
  base: string;
13
31
  body: string | null;
14
32
  draft: boolean;
@@ -31,7 +49,6 @@ export declare function createGitHubUpdatePullRequestTool(ctx: ToolRegistrationH
31
49
  suggestedEvents?: string[] | undefined;
32
50
  } | undefined;
33
51
  }, {
34
- [x: string]: unknown;
35
52
  base: string;
36
53
  body: string | null;
37
54
  draft: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/junior-github",
3
- "version": "0.179.0",
3
+ "version": "0.181.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -31,13 +31,14 @@
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.179.0"
34
+ "@sentry/junior-plugin-api": "0.181.0"
35
35
  },
36
36
  "devDependencies": {
37
+ "@oxlint/plugins": "1.79.0",
37
38
  "@types/node": "^25.9.1",
38
- "msw": "^2.14.6",
39
39
  "drizzle-kit": "^0.31.8",
40
- "oxlint": "^1.66.0",
40
+ "msw": "^2.14.6",
41
+ "oxlint": "^1.79.0",
41
42
  "tsup": "^8.5.1",
42
43
  "typescript": "^6.0.3",
43
44
  "vitest": "^4.1.7",