@gitkraken/core-gitlens 0.23.0 → 0.25.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.
Files changed (152) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/README.md +23 -15
  3. package/dist/git/errors.d.ts +6 -5
  4. package/dist/git/errors.js +7 -6
  5. package/dist/git/errors.js.map +1 -1
  6. package/dist/git/features.d.ts +1 -1
  7. package/dist/git/features.js +1 -1
  8. package/dist/git/features.js.map +1 -1
  9. package/dist/git/models/remoteProvider.d.ts +4 -1
  10. package/dist/git/models/remoteProvider.js.map +1 -1
  11. package/dist/git/providers/provider.d.ts +4 -2
  12. package/dist/git/utils/branch.utils.d.ts +4 -1
  13. package/dist/git/utils/branch.utils.js +5 -2
  14. package/dist/git/utils/branch.utils.js.map +1 -1
  15. package/dist/git/utils/mergeConflicts.utils.js +2 -2
  16. package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
  17. package/dist/git-cli/cliGitProvider.d.ts +14 -3
  18. package/dist/git-cli/cliGitProvider.js +71 -34
  19. package/dist/git-cli/cliGitProvider.js.map +1 -1
  20. package/dist/git-cli/exec/git.d.ts +7 -1
  21. package/dist/git-cli/exec/git.js +19 -4
  22. package/dist/git-cli/exec/git.js.map +1 -1
  23. package/dist/git-cli/providers/branchRemote.js +2 -5
  24. package/dist/git-cli/providers/branchRemote.js.map +1 -1
  25. package/dist/git-cli/providers/branches.js +4 -4
  26. package/dist/git-cli/providers/branches.js.map +1 -1
  27. package/dist/git-cli/providers/config.js +6 -3
  28. package/dist/git-cli/providers/config.js.map +1 -1
  29. package/dist/git-cli/providers/pausedOperations.js +2 -2
  30. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  31. package/dist/git-cli/providers/staging.js +1 -1
  32. package/dist/ipc/discovery.js +1 -1
  33. package/dist/plus/agents/providers/claudeCodeTranscript.js +6 -6
  34. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  35. package/dist/plus/ai/errors.d.ts +4 -1
  36. package/dist/plus/ai/errors.js +4 -0
  37. package/dist/plus/ai/errors.js.map +1 -1
  38. package/dist/plus/ai/providers/mistralProvider.js +1 -1
  39. package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
  40. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +2 -1
  41. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  42. package/dist/plus/git-github/api/github.js +12 -13
  43. package/dist/plus/git-github/api/github.js.map +1 -1
  44. package/dist/plus/git-github/api/token.d.ts +2 -0
  45. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +1 -1
  46. package/dist/plus/integrations/authentication/cloudIntegrationService.js +6 -1
  47. package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -1
  48. package/dist/plus/integrations/authentication/configuredIntegrationService.js +2 -2
  49. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +18 -5
  50. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -1
  51. package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts +3 -1
  52. package/dist/plus/integrations/authentication/integrationAuthenticationService.js +4 -0
  53. package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -1
  54. package/dist/plus/integrations/authentication/models.d.ts +2 -0
  55. package/dist/plus/integrations/authentication/models.js +2 -1
  56. package/dist/plus/integrations/authentication/models.js.map +1 -1
  57. package/dist/plus/integrations/authentication/observedAuthenticationProvider.js +1 -1
  58. package/dist/plus/integrations/authentication/rejectedTokenTracker.d.ts +5 -4
  59. package/dist/plus/integrations/authentication/rejectedTokenTracker.js +5 -4
  60. package/dist/plus/integrations/authentication/rejectedTokenTracker.js.map +1 -1
  61. package/dist/plus/integrations/index.d.ts +2 -2
  62. package/dist/plus/integrations/index.js +1 -1
  63. package/dist/plus/integrations/index.js.map +1 -1
  64. package/dist/plus/integrations/integrationService.d.ts +6 -0
  65. package/dist/plus/integrations/integrationService.js +3 -3
  66. package/dist/plus/integrations/integrationService.js.map +1 -1
  67. package/dist/plus/integrations/lite.js +1 -1
  68. package/dist/plus/integrations/manager.d.ts +51 -3
  69. package/dist/plus/integrations/models/gitHostIntegration.d.ts +14 -0
  70. package/dist/plus/integrations/models/gitHostIntegration.js +50 -41
  71. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  72. package/dist/plus/integrations/models/integration.d.ts +27 -5
  73. package/dist/plus/integrations/models/integration.js +57 -15
  74. package/dist/plus/integrations/models/integration.js.map +1 -1
  75. package/dist/plus/integrations/models/issueReads.d.ts +6 -0
  76. package/dist/plus/integrations/models/issuesIntegration.js +11 -11
  77. package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
  78. package/dist/plus/integrations/providers/azure/azure.js +2 -2
  79. package/dist/plus/integrations/providers/azureDevOps.js +1 -1
  80. package/dist/plus/integrations/providers/azureDevOpsServer.js +1 -1
  81. package/dist/plus/integrations/providers/bitbucket/bitbucket.js +1 -1
  82. package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
  83. package/dist/plus/integrations/providers/bitbucket-server.js +1 -1
  84. package/dist/plus/integrations/providers/bitbucket.js +1 -1
  85. package/dist/plus/integrations/providers/github.js +1 -1
  86. package/dist/plus/integrations/providers/gitlab/gitlab.js +2 -2
  87. package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
  88. package/dist/plus/integrations/providers/gitlab.js +1 -1
  89. package/dist/plus/integrations/providers/jira-server.js +2 -2
  90. package/dist/plus/integrations/providers/jira.js +1 -1
  91. package/dist/plus/integrations/providers/linear.d.ts +4 -4
  92. package/dist/plus/integrations/providers/linear.js +26 -9
  93. package/dist/plus/integrations/providers/linear.js.map +1 -1
  94. package/dist/plus/integrations/providers/models.js +2 -1
  95. package/dist/plus/integrations/providers/models.js.map +1 -1
  96. package/dist/plus/integrations/providers/providerErrors.js +9 -0
  97. package/dist/plus/integrations/providers/providerErrors.js.map +1 -1
  98. package/dist/plus/integrations/providers/providersApi.d.ts +2 -0
  99. package/dist/plus/integrations/providers/providersApi.js +1 -1
  100. package/dist/plus/integrations/providers/providersApi.js.map +1 -1
  101. package/dist/plus/integrations/providers/trello.js +1 -1
  102. package/dist/plus/integrations/providers/utils.js +1 -1
  103. package/dist/plus/integrations/reads/counts.js +1 -1
  104. package/dist/plus/integrations/reads/cursors.js +1 -1
  105. package/dist/plus/integrations/reads/drains.d.ts +5 -4
  106. package/dist/plus/integrations/reads/drains.js +28 -8
  107. package/dist/plus/integrations/reads/drains.js.map +1 -1
  108. package/dist/plus/integrations/reads/hierarchy.js +1 -1
  109. package/dist/plus/integrations/reads/issueBatch.d.ts +1 -1
  110. package/dist/plus/integrations/reads/issueBatch.js.map +1 -1
  111. package/dist/plus/integrations/reads/issueTracker.d.ts +4 -1
  112. package/dist/plus/integrations/reads/issueTracker.js +1 -1
  113. package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
  114. package/dist/plus/integrations/reads/issues.d.ts +2 -0
  115. package/dist/plus/integrations/reads/issues.js +5 -3
  116. package/dist/plus/integrations/reads/issues.js.map +1 -1
  117. package/dist/plus/integrations/reads/paging.d.ts +5 -6
  118. package/dist/plus/integrations/reads/paging.js +5 -6
  119. package/dist/plus/integrations/reads/paging.js.map +1 -1
  120. package/dist/plus/integrations/reads/pullRequests.d.ts +4 -0
  121. package/dist/plus/integrations/reads/pullRequests.js +4 -2
  122. package/dist/plus/integrations/reads/pullRequests.js.map +1 -1
  123. package/dist/plus/integrations/reads/resolveRepository.js +1 -1
  124. package/dist/plus/integrations/reads/sweeps.js +42 -10
  125. package/dist/plus/integrations/reads/sweeps.js.map +1 -1
  126. package/dist/plus/integrations/results.d.ts +23 -3
  127. package/dist/plus/integrations/results.js.map +1 -1
  128. package/dist/plus/notifications/api.d.ts +20 -0
  129. package/dist/plus/notifications/api.js +89 -0
  130. package/dist/plus/notifications/api.js.map +1 -0
  131. package/dist/plus/notifications/context.d.ts +28 -0
  132. package/dist/plus/notifications/context.js +0 -0
  133. package/dist/plus/notifications/errors.d.ts +13 -0
  134. package/dist/plus/notifications/errors.js +22 -0
  135. package/dist/plus/notifications/errors.js.map +1 -0
  136. package/dist/plus/notifications/models.d.ts +94 -0
  137. package/dist/plus/notifications/models.js +0 -0
  138. package/dist/plus/notifications/notificationsService.d.ts +115 -0
  139. package/dist/plus/notifications/notificationsService.js +381 -0
  140. package/dist/plus/notifications/notificationsService.js.map +1 -0
  141. package/dist/plus/notifications/parse.d.ts +12 -0
  142. package/dist/plus/notifications/parse.js +152 -0
  143. package/dist/plus/notifications/parse.js.map +1 -0
  144. package/dist/plus/notifications/presentation.d.ts +28 -0
  145. package/dist/plus/notifications/presentation.js +55 -0
  146. package/dist/plus/notifications/presentation.js.map +1 -0
  147. package/dist/utils/env/node/exec.d.ts +10 -1
  148. package/dist/utils/env/node/exec.js +41 -4
  149. package/dist/utils/env/node/exec.js.map +1 -1
  150. package/docs/integrations.md +25 -3
  151. package/docs/notifications.md +239 -0
  152. package/package.json +22 -2
package/CHANGELOG.md CHANGED
@@ -6,6 +6,37 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.25.0] - 2026-10-30
10
+
11
+ ### Added
12
+
13
+ - Adds `Git.rev_parse__work_tree_of_git_dir(gitDir)`, resolving the working tree in `gitDir`'s parent folder that uses `gitDir` as its git dir, or `undefined` when none does (a bare repository) (git-cli)
14
+ - Adds `scopeConcurrency?: number` to `IntegrationManager.listPullRequestsPage` (repo-scoped reads only), `listIssuesPage`, and `sweepPullRequests`/`sweepClosedPullRequests`, setting the most per-repository requests (per-project for Azure DevOps issues) one provider read keeps in flight. Defaults to 6; a value that isn't a finite number of at least 1 falls back to the default, and a fraction is truncated. A sweep runs up to 6 targets at once, each with this bound (plus/integrations)
15
+ - Adds `includeRemoteInfo?: boolean` to `IntegrationManager.listPullRequestsPage` (repo-scoped reads only) and `sweepPullRequests`/`sweepClosedPullRequests` (repo-scoped targets), an opt-out for the Azure DevOps lookup that fills each row's clone URLs. `false` saves one request per repository (and fork source) per page, at the cost of rows carrying no `refs.base.url`/`refs.head.url` (empty) and no `cloneHttps`/`cloneSsh`. Defaults to `true`, the existing behavior; other providers ignore it (plus/integrations)
16
+ - Adds several targets per provider to `IntegrationManager.sweepPullRequests`/`sweepClosedPullRequests`, one per connection (for example two GitHub Enterprise installations, two Bitbucket Data Center servers or two github.com accounts): `targets` now accepts any number of `ProviderSweepTarget`s of one provider as long as each names a `connectionId` or, on a self-managed host, a `domain`, and a repeat (matched by host however its `domain` is spelled) or an unnamed target beside a named one of the same provider throws a `TypeError`. `ProviderSweepTarget.repos` gives each target its own repositories, overriding the sweep-level `repos` (an empty array reads that target account-wide), and `ProviderSweepResult.failedTargets`/`incompleteTargets` (`ProviderSweepTargetRef[]`: `providerId`, `connectionId`, resolved `domain`) attribute failures per connection, with `failedProviderIds` now listing a provider only when every one of its targets failed and `incompleteProviderIds` any provider with a failed or incomplete target beside one that returned. A sweep with one target per provider is unchanged (plus/integrations)
17
+ - Adds the `plus/notifications` subpaths (`context.js`, `errors.js`, `models.js`, `notificationsService.js` and `presentation.js`): a client and state holder for GitKraken `notifications-service-v2` notifications filtered by product, with a host-implemented `NotificationsContext`. See [`docs/notifications.md`](./docs/notifications.md) (plus/notifications)
18
+
19
+ ### Changed
20
+
21
+ - Bounds the repository and project fan-out of repo-scoped pull request and issue reads (`listPullRequestsPage`, `listIssuesPage` and the pull request sweeps) to 6 requests in flight, instead of one request per repository at once. This applies to the hosts that read repository by repository: pull requests on GitLab, GitLab self-managed, Bitbucket Cloud, Bitbucket Data Center and Azure DevOps, and issues on GitLab, GitLab self-managed and Azure DevOps (per project). Results, ordering and per-repository failure isolation are unchanged; GitHub/GHE already send one query whatever the repo count (plus/integrations)
22
+
23
+ ### Fixed
24
+
25
+ - Fixes self-managed integration reauthentication disconnecting other connections of the same provider: forced reauthentication now validates and disconnects only the selected connection's token (plus/integrations)
26
+ - Fixes `getRepositoryInfo` (and `Git.rev_parse__show_toplevel`) resolving a path inside a repository's `.git` folder — `.git/refs`, `.git/rebase-merge` during a rebase — to that `.git` folder as a bare repository when the repo's config has no `core.bare` line, so a host registered it as a second repository named `.git`. Git guesses "bare" from inside a git dir when `core.bare` is unset; a git dir whose parent folder is a working tree using it now resolves to that working tree. Real bare repos, including a bare clone named `.git` beside its worktrees and a `.bare` folder behind a `.git` file, still resolve to themselves (git-cli)
27
+ - Fixes Bitbucket Data Center repo-scoped pull request reads (`listPullRequestsPage` with `repos` and the pull request sweeps with `repos`) reading only the first page of each repository: a repository with more open pull requests than one page (50 by default) came back `page.truncated` and was never continued, and `page: 2` re-read page 1. Bitbucket Data Center now reads repository by repository like the other numbered hosts, with a continuation cursor per repository, `page` honored, the 6-in-flight bound, and a failed repository attributed as its own scope with its cause (plus/integrations)
28
+ - Fixes GitHub GraphQL throttling (HTTP 200 with an `errors` entry of type `RATE_LIMITED` or `RATE_LIMIT`) being reported as `kind: 'other'` instead of `'rate-limit'` on repo-scoped GitHub and GitHub Enterprise pull request and issue reads (`listPullRequestsPage`, `listIssuesPage` and the pull request sweeps with `repos`), which provider-apis serves and throws without a response status. Core's own GitHub reads now also classify a rate limit that isn't the first GraphQL error (plus/integrations, plus/git-github)
29
+ - Fixes one connection's failed requests disconnecting another connection of the same provider: an integration counted the failures that disconnect it after five (a 4xx, a server error or timeout, or a refused token its forced refresh could not recover) in one budget shared by every connection it reads, so a secondary account read by `connectionId` (e.g. a second target of one provider in `sweepPullRequests`) failing five times dropped the primary account's session and announced the disconnect, and a success on any connection wiped every other connection's count. The budget is now per connection: a read naming the primary's `connectionId` shares the primary's, only the primary's limit disconnects, and a secondary that reaches it keeps reporting each failure on its own reads (plus/integrations, git, plus/git-github)
30
+ - Fixes `getIgnoredPaths` throwing for the whole batch when git refuses one path in it, such as a path beyond a symlink (`fatal: pathspec '...' is beyond a symbolic link`), inside a submodule, outside the repository, or empty. Git answers every path before the one it refuses, so only the paths after it are asked again, less the rest of a folder refused for a symlink or submodule: a refused path counts as not ignored, even alone, and each path is answered once, in one `check-ignore` run plus one per refusal. It still rejects, after one run, when git fails for any other reason, and on cancellation (git-cli)
31
+ - Fixes `fetch`, `pull` and `push` with a remote-tracking branch reference that carries an `upstream` (as a host's remote branch refs may, with the remote's own name) using that name as the branch to fetch or push to, e.g. `git fetch upstream upstream`: `getBranchTrackingWithoutRemote` now returns `undefined` for a remote-tracking branch, and `fetch` reads the branch's own name (git, git-cli)
32
+ - Fixes a git command that fails to launch, such as one run in a folder that no longer exists, keeping the Node process alive for the full git timeout (60 seconds by default): Node clears a spawn's timeout timer only when the process exits, which a failed launch never does, so a short-lived host could hang before exiting. The default spawner now also clears it when the process closes, as Node itself does in [nodejs/node#65506](https://github.com/nodejs/node/pull/65506). A custom `spawn` still receives `timeout` and handles it itself ([#6105](https://github.com/gitkraken/vscode-gitlens/pull/6105)) (git-cli)
33
+
34
+ ## [0.24.0] - 2026-10-28
35
+
36
+ ### Changed
37
+
38
+ - Changes Linear's user-scoped tracker read (`listIssueTrackerIssuesPage` without `includeAllAssignees`, and `IssuesIntegration.getIssuesForProject*` with `options.user`) to also return the GitHub-synced issues the viewer created, not only those assigned to them. Linear's two-way GitHub Issues sync makes the author of a GitHub issue (one who linked their GitHub account to Linear) the creator of its Linear copy but assigns no one the GitHub issue doesn't, so the Linear copy of a GitHub issue the user filed was never read and a host showed only its GitHub copy. Only issues with a GitHub issue attachment and a GitHub sync link (`syncedWith` not `[]`) widen, so the rest of what the viewer created in Linear stays out; a synced row whose link list Linear failed to resolve is kept rather than silently dropped. Asking for `filters: [IssueFilter.Assignee]` by name still reads only assigned issues. Still one query per page; the wider match can take more pages. Requires `@gitkraken/provider-apis` with `LinearGetIssuesInput.githubSyncedCreators`; an older one ignores it and reads assigned issues only ([gitkraken/kepler#4480](https://github.com/gitkraken/kepler/issues/4480)) (plus/integrations)
39
+
9
40
  ## [0.23.0] - 2026-10-28
10
41
 
11
42
  ### Added
@@ -1017,7 +1048,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
1017
1048
 
1018
1049
  - Initial release. Bundles `@gitlens/utils`, `@gitlens/git`, `@gitlens/git-cli`, `@gitlens/ai`, and `@gitlens/git-github` into a single core npm package with subpath exports.
1019
1050
 
1020
- [unreleased]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.23.0...HEAD
1051
+ [unreleased]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.25.0...HEAD
1052
+ [0.25.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.24.0...gitkraken:releases/core/v0.25.0
1053
+ [0.24.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.23.0...gitkraken:releases/core/v0.24.0
1021
1054
  [0.23.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.22.1...gitkraken:releases/core/v0.23.0
1022
1055
  [0.22.1]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.22.0...gitkraken:releases/core/v0.22.1
1023
1056
  [0.22.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.21.0...gitkraken:releases/core/v0.22.0
package/README.md CHANGED
@@ -2,18 +2,19 @@
2
2
 
3
3
  Shared Git, AI, and GitHub primitives from [GitLens](https://github.com/gitkraken/vscode-gitlens), bundled for consumption by internal GitKraken products.
4
4
 
5
- This package flattens eight internal workspace packages into a single tarball:
6
-
7
- | Subpath | Source package | License |
8
- | --------------------- | ----------------------- | -------------- |
9
- | `utils/*` | `@gitlens/utils` | See `LICENSE` |
10
- | `ipc/*` | `@gitlens/ipc` | See `LICENSE` |
11
- | `git/*` | `@gitlens/git` | See `LICENSE` |
12
- | `git-cli/*` | `@gitlens/git-cli` | See `LICENSE` |
13
- | `plus/ai/*` | `@gitlens/ai` | `LICENSE.plus` |
14
- | `plus/git-github/*` | `@gitlens/git-github` | `LICENSE.plus` |
15
- | `plus/agents/*` | `@gitlens/agents` | `LICENSE.plus` |
16
- | `plus/integrations/*` | `@gitlens/integrations` | `LICENSE.plus` |
5
+ This package flattens nine internal workspace packages into a single tarball:
6
+
7
+ | Subpath | Source package | License |
8
+ | ---------------------- | ------------------------ | -------------- |
9
+ | `utils/*` | `@gitlens/utils` | See `LICENSE` |
10
+ | `ipc/*` | `@gitlens/ipc` | See `LICENSE` |
11
+ | `git/*` | `@gitlens/git` | See `LICENSE` |
12
+ | `git-cli/*` | `@gitlens/git-cli` | See `LICENSE` |
13
+ | `plus/ai/*` | `@gitlens/ai` | `LICENSE.plus` |
14
+ | `plus/git-github/*` | `@gitlens/git-github` | `LICENSE.plus` |
15
+ | `plus/agents/*` | `@gitlens/agents` | `LICENSE.plus` |
16
+ | `plus/integrations/*` | `@gitlens/integrations` | `LICENSE.plus` |
17
+ | `plus/notifications/*` | `@gitlens/notifications` | `LICENSE.plus` |
17
18
 
18
19
  ## Usage
19
20
 
@@ -37,6 +38,13 @@ provider-neutral facade at `plus/integrations/index.js`. It has its own guide
37
38
  warning contracts, the filter capability table, and a per-provider capability matrix:
38
39
  [`docs/integrations.md`](./docs/integrations.md).
39
40
 
41
+ ### Notifications
42
+
43
+ Showing GitKraken notifications (the `notifications-service-v2` inbox) in another host goes through
44
+ `plus/notifications/notificationsService.js` and its host context. Its guide covers implementing the context, the
45
+ refresh and toast contracts, and what the host must own (polling, persistence, toast de-duplication, safe link
46
+ handling): [`docs/notifications.md`](./docs/notifications.md).
47
+
40
48
  ### Node vs browser
41
49
 
42
50
  `utils/` uses internal `#env/*` imports that resolve differently based on the target:
@@ -53,7 +61,7 @@ The package is marked `"sideEffects": false` and uses per-file subpath exports.
53
61
  ## Licensing
54
62
 
55
63
  - `LICENSE` — governs `utils/`, `git/`, and `git-cli/`.
56
- - `LICENSE.plus` — governs everything under `plus/` (currently `plus/ai/`, `plus/git-github/`, `plus/agents/`, and `plus/integrations/`). Proprietary; not for redistribution.
64
+ - `LICENSE.plus` — governs everything under `plus/` (currently `plus/ai/`, `plus/git-github/`, `plus/agents/`, `plus/integrations/`, and `plus/notifications/`). Proprietary; not for redistribution.
57
65
 
58
66
  ## Versioning
59
67
 
@@ -63,8 +71,8 @@ Independent from the [GitLens VS Code extension](https://github.com/gitkraken/vs
63
71
 
64
72
  Built from the `packages/` workspace of [vscode-gitlens](https://github.com/gitkraken/vscode-gitlens), by `pnpm --filter @gitkraken/core-gitlens run build` in two steps:
65
73
 
66
- 1. **`tsdown.config.ts`** compiles the eight packages' TypeScript sources straight into `dist/`, one emitted module per source module, each rooted at the subpath in the table above. It reads their `src/` directly — the packages' own manifests resolve to source, so nothing here waits on their `dist/` — and cross-package imports come out as relative paths, with `#env/*` staying external for the `"imports"` field to resolve.
67
- 2. **`scripts/bundle.mjs`** assembles everything around that: it copies the LICENSEs and generates the manifest's `exports`, `imports`, and `dependencies` from the eight sub-packages' own manifests.
74
+ 1. **`tsdown.config.ts`** compiles the nine packages' TypeScript sources straight into `dist/`, one emitted module per source module, each rooted at the subpath in the table above. It reads their `src/` directly — the packages' own manifests resolve to source, so nothing here waits on their `dist/` — and cross-package imports come out as relative paths, with `#env/*` staying external for the `"imports"` field to resolve.
75
+ 2. **`scripts/bundle.mjs`** assembles everything around that: it copies the LICENSEs and generates the manifest's `exports`, `imports`, and `dependencies` from the nine sub-packages' own manifests.
68
76
 
69
77
  Neither the subpath layout nor the generated manifest is hand-written, so adding or removing a bundled package is a one-line change to `scripts/packages.mjs`, which both steps read.
70
78
 
@@ -447,12 +447,13 @@ export declare class RequestRateLimitError extends Error {
447
447
  constructor(original: Error, token: string | undefined, resetAt: number | undefined);
448
448
  }
449
449
  /**
450
- * Spends `provider`'s strike toward disconnecting for a request that failed with a server error or timed out, and
451
- * shows `notify`'s notice; or, with `defer`, leaves both to the batch read that made the request, which counts its
452
- * failed requests once for the whole call (see {@link getDeferredRequestFailure}). A batch fans out into a request
453
- * per target, so one outage would otherwise disconnect the integration in the middle of a batch.
450
+ * Spends a strike toward disconnecting `provider`'s connection `connectionId` (the one whose token made the request;
451
+ * the primary when omitted) for a request that failed with a server error or timed out, and shows `notify`'s notice;
452
+ * or, with `defer`, leaves both to the batch read that made the request, which counts its failed requests once for
453
+ * the whole call (see {@link getDeferredRequestFailure}). A batch fans out into a request per target, so one outage
454
+ * would otherwise disconnect the integration in the middle of a batch.
454
455
  */
455
- export declare function reportRequestFailure(provider: Provider | undefined, ex: Error, notify: () => void, defer: boolean | undefined): void;
456
+ export declare function reportRequestFailure(provider: Provider | undefined, ex: Error, notify: () => void, defer: boolean | undefined, connectionId: string | undefined): void;
456
457
  /** The notice a failed request left to its batch read (see {@link reportRequestFailure}), if it left one. */
457
458
  export declare function getDeferredRequestFailure(ex: unknown): (() => void) | undefined;
458
459
  export type SigningErrorReason = 'noKey' | 'gpgNotFound' | 'sshNotFound' | 'passphraseFailed' | 'unknown';
@@ -960,17 +960,18 @@ var RequestRateLimitError = class RequestRateLimitError extends Error {
960
960
  };
961
961
  const deferredRequestFailures = /* @__PURE__ */ new WeakMap();
962
962
  /**
963
- * Spends `provider`'s strike toward disconnecting for a request that failed with a server error or timed out, and
964
- * shows `notify`'s notice; or, with `defer`, leaves both to the batch read that made the request, which counts its
965
- * failed requests once for the whole call (see {@link getDeferredRequestFailure}). A batch fans out into a request
966
- * per target, so one outage would otherwise disconnect the integration in the middle of a batch.
963
+ * Spends a strike toward disconnecting `provider`'s connection `connectionId` (the one whose token made the request;
964
+ * the primary when omitted) for a request that failed with a server error or timed out, and shows `notify`'s notice;
965
+ * or, with `defer`, leaves both to the batch read that made the request, which counts its failed requests once for
966
+ * the whole call (see {@link getDeferredRequestFailure}). A batch fans out into a request per target, so one outage
967
+ * would otherwise disconnect the integration in the middle of a batch.
967
968
  */
968
- function reportRequestFailure(provider, ex, notify, defer) {
969
+ function reportRequestFailure(provider, ex, notify, defer, connectionId) {
969
970
  if (defer) {
970
971
  deferredRequestFailures.set(ex, notify);
971
972
  return;
972
973
  }
973
- provider?.trackRequestException();
974
+ provider?.trackRequestException({ connectionId });
974
975
  notify();
975
976
  }
976
977
  /** The notice a failed request left to its batch read (see {@link reportRequestFailure}), if it left one. */