@gitkraken/core-gitlens 0.3.1 → 0.4.100

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 (1070) hide show
  1. package/CHANGELOG.md +83 -1
  2. package/README.md +22 -12
  3. package/dist/git/cache.d.ts +29 -2
  4. package/dist/git/cache.d.ts.map +1 -1
  5. package/dist/git/cache.js +67 -7
  6. package/dist/git/cache.js.map +1 -1
  7. package/dist/git/context.d.ts +4 -3
  8. package/dist/git/context.d.ts.map +1 -1
  9. package/dist/git/context.js.map +1 -1
  10. package/dist/git/errors.d.ts +31 -1
  11. package/dist/git/errors.d.ts.map +1 -1
  12. package/dist/git/errors.js +29 -0
  13. package/dist/git/errors.js.map +1 -1
  14. package/dist/git/models/author.d.ts.map +1 -1
  15. package/dist/git/models/author.js.map +1 -1
  16. package/dist/git/models/autolink.d.ts.map +1 -1
  17. package/dist/git/models/autolink.js.map +1 -1
  18. package/dist/git/models/blame.d.ts.map +1 -1
  19. package/dist/git/models/blame.js.map +1 -1
  20. package/dist/git/models/branch.d.ts.map +1 -1
  21. package/dist/git/models/branch.js.map +1 -1
  22. package/dist/git/models/commit.d.ts.map +1 -1
  23. package/dist/git/models/commit.js +1 -1
  24. package/dist/git/models/commit.js.map +1 -1
  25. package/dist/git/models/contributor.d.ts.map +1 -1
  26. package/dist/git/models/contributor.js.map +1 -1
  27. package/dist/git/models/defaultBranch.d.ts.map +1 -1
  28. package/dist/git/models/defaultBranch.js.map +1 -1
  29. package/dist/git/models/diff.d.ts.map +1 -1
  30. package/dist/git/models/diff.js.map +1 -1
  31. package/dist/git/models/file.d.ts.map +1 -1
  32. package/dist/git/models/file.js.map +1 -1
  33. package/dist/git/models/fileChange.d.ts.map +1 -1
  34. package/dist/git/models/fileChange.js.map +1 -1
  35. package/dist/git/models/fileStatus.d.ts +22 -22
  36. package/dist/git/models/fileStatus.d.ts.map +1 -1
  37. package/dist/git/models/fileStatus.js.map +1 -1
  38. package/dist/git/models/graph.d.ts +122 -1
  39. package/dist/git/models/graph.d.ts.map +1 -1
  40. package/dist/git/models/graph.js +4 -0
  41. package/dist/git/models/graph.js.map +1 -1
  42. package/dist/git/models/graphSearch.d.ts.map +1 -1
  43. package/dist/git/models/graphSearch.js.map +1 -1
  44. package/dist/git/models/graphSession.d.ts +177 -0
  45. package/dist/git/models/graphSession.d.ts.map +1 -0
  46. package/dist/git/models/graphSession.js +7 -0
  47. package/dist/git/models/graphSession.js.map +1 -0
  48. package/dist/git/models/issue.d.ts +12 -2
  49. package/dist/git/models/issue.d.ts.map +1 -1
  50. package/dist/git/models/issue.js +3 -1
  51. package/dist/git/models/issue.js.map +1 -1
  52. package/dist/git/models/issueOrPullRequest.d.ts.map +1 -1
  53. package/dist/git/models/issueOrPullRequest.js.map +1 -1
  54. package/dist/git/models/lineRange.d.ts.map +1 -1
  55. package/dist/git/models/lineRange.js.map +1 -1
  56. package/dist/git/models/log.d.ts.map +1 -1
  57. package/dist/git/models/log.js.map +1 -1
  58. package/dist/git/models/mergeConflicts.d.ts.map +1 -1
  59. package/dist/git/models/mergeConflicts.js.map +1 -1
  60. package/dist/git/models/patch.d.ts.map +1 -1
  61. package/dist/git/models/patch.js.map +1 -1
  62. package/dist/git/models/pausedOperationStatus.d.ts.map +1 -1
  63. package/dist/git/models/pausedOperationStatus.js.map +1 -1
  64. package/dist/git/models/pullRequest.d.ts +27 -2
  65. package/dist/git/models/pullRequest.d.ts.map +1 -1
  66. package/dist/git/models/pullRequest.js +7 -1
  67. package/dist/git/models/pullRequest.js.map +1 -1
  68. package/dist/git/models/rebase.d.ts.map +1 -1
  69. package/dist/git/models/rebase.js.map +1 -1
  70. package/dist/git/models/reference.d.ts.map +1 -1
  71. package/dist/git/models/reference.js.map +1 -1
  72. package/dist/git/models/reflog.d.ts.map +1 -1
  73. package/dist/git/models/reflog.js.map +1 -1
  74. package/dist/git/models/remote.d.ts.map +1 -1
  75. package/dist/git/models/remote.js.map +1 -1
  76. package/dist/git/models/remoteProvider.d.ts.map +1 -1
  77. package/dist/git/models/remoteProvider.js.map +1 -1
  78. package/dist/git/models/remoteResource.d.ts.map +1 -1
  79. package/dist/git/models/remoteResource.js.map +1 -1
  80. package/dist/git/models/repository.d.ts +20 -2
  81. package/dist/git/models/repository.d.ts.map +1 -1
  82. package/dist/git/models/repository.js +19 -0
  83. package/dist/git/models/repository.js.map +1 -1
  84. package/dist/git/models/repositoryChangeEvent.d.ts.map +1 -1
  85. package/dist/git/models/repositoryChangeEvent.js.map +1 -1
  86. package/dist/git/models/repositoryIdentities.d.ts.map +1 -1
  87. package/dist/git/models/repositoryIdentities.js.map +1 -1
  88. package/dist/git/models/repositoryMetadata.d.ts.map +1 -1
  89. package/dist/git/models/repositoryMetadata.js.map +1 -1
  90. package/dist/git/models/resourceDescriptor.d.ts +16 -0
  91. package/dist/git/models/resourceDescriptor.d.ts.map +1 -1
  92. package/dist/git/models/resourceDescriptor.js.map +1 -1
  93. package/dist/git/models/revision.d.ts.map +1 -1
  94. package/dist/git/models/revision.js.map +1 -1
  95. package/dist/git/models/search.d.ts.map +1 -1
  96. package/dist/git/models/search.js.map +1 -1
  97. package/dist/git/models/shortlog.d.ts.map +1 -1
  98. package/dist/git/models/shortlog.js.map +1 -1
  99. package/dist/git/models/signature.d.ts +14 -0
  100. package/dist/git/models/signature.d.ts.map +1 -1
  101. package/dist/git/models/signature.js.map +1 -1
  102. package/dist/git/models/staging.d.ts.map +1 -1
  103. package/dist/git/models/staging.js.map +1 -1
  104. package/dist/git/models/stash.d.ts.map +1 -1
  105. package/dist/git/models/stash.js.map +1 -1
  106. package/dist/git/models/status.d.ts.map +1 -1
  107. package/dist/git/models/status.js.map +1 -1
  108. package/dist/git/models/statusFile.d.ts.map +1 -1
  109. package/dist/git/models/statusFile.js.map +1 -1
  110. package/dist/git/models/tag.d.ts +11 -1
  111. package/dist/git/models/tag.d.ts.map +1 -1
  112. package/dist/git/models/tag.js +9 -2
  113. package/dist/git/models/tag.js.map +1 -1
  114. package/dist/git/models/tree.d.ts.map +1 -1
  115. package/dist/git/models/tree.js.map +1 -1
  116. package/dist/git/models/user.d.ts.map +1 -1
  117. package/dist/git/models/user.js.map +1 -1
  118. package/dist/git/models/worktree.d.ts.map +1 -1
  119. package/dist/git/models/worktree.js.map +1 -1
  120. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  121. package/dist/git/parsers/diffParser.js +1 -1
  122. package/dist/git/parsers/diffParser.js.map +1 -1
  123. package/dist/git/parsers/rebaseTodoParser.d.ts.map +1 -1
  124. package/dist/git/parsers/rebaseTodoParser.js.map +1 -1
  125. package/dist/git/providers/blame.d.ts.map +1 -1
  126. package/dist/git/providers/blame.js.map +1 -1
  127. package/dist/git/providers/branches.d.ts +8 -1
  128. package/dist/git/providers/branches.d.ts.map +1 -1
  129. package/dist/git/providers/branches.js.map +1 -1
  130. package/dist/git/providers/commits.d.ts +6 -1
  131. package/dist/git/providers/commits.d.ts.map +1 -1
  132. package/dist/git/providers/commits.js.map +1 -1
  133. package/dist/git/providers/config.d.ts +6 -2
  134. package/dist/git/providers/config.d.ts.map +1 -1
  135. package/dist/git/providers/config.js.map +1 -1
  136. package/dist/git/providers/contributors.d.ts.map +1 -1
  137. package/dist/git/providers/contributors.js.map +1 -1
  138. package/dist/git/providers/diff.d.ts.map +1 -1
  139. package/dist/git/providers/diff.js.map +1 -1
  140. package/dist/git/providers/graph.d.ts +55 -1
  141. package/dist/git/providers/graph.d.ts.map +1 -1
  142. package/dist/git/providers/graph.js.map +1 -1
  143. package/dist/git/providers/operations.d.ts +1 -0
  144. package/dist/git/providers/operations.d.ts.map +1 -1
  145. package/dist/git/providers/operations.js.map +1 -1
  146. package/dist/git/providers/patch.d.ts.map +1 -1
  147. package/dist/git/providers/patch.js.map +1 -1
  148. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  149. package/dist/git/providers/pausedOperations.js.map +1 -1
  150. package/dist/git/providers/provider.d.ts.map +1 -1
  151. package/dist/git/providers/provider.js.map +1 -1
  152. package/dist/git/providers/refs.d.ts.map +1 -1
  153. package/dist/git/providers/refs.js.map +1 -1
  154. package/dist/git/providers/remotes.d.ts.map +1 -1
  155. package/dist/git/providers/remotes.js.map +1 -1
  156. package/dist/git/providers/revision.d.ts.map +1 -1
  157. package/dist/git/providers/revision.js.map +1 -1
  158. package/dist/git/providers/shared/remotes.d.ts.map +1 -1
  159. package/dist/git/providers/shared/remotes.js.map +1 -1
  160. package/dist/git/providers/staging.d.ts.map +1 -1
  161. package/dist/git/providers/staging.js.map +1 -1
  162. package/dist/git/providers/stash.d.ts.map +1 -1
  163. package/dist/git/providers/stash.js.map +1 -1
  164. package/dist/git/providers/status.d.ts +1 -0
  165. package/dist/git/providers/status.d.ts.map +1 -1
  166. package/dist/git/providers/status.js.map +1 -1
  167. package/dist/git/providers/tags.d.ts.map +1 -1
  168. package/dist/git/providers/tags.js.map +1 -1
  169. package/dist/git/providers/types.d.ts.map +1 -1
  170. package/dist/git/providers/types.js.map +1 -1
  171. package/dist/git/providers/worktrees.d.ts +5 -1
  172. package/dist/git/providers/worktrees.d.ts.map +1 -1
  173. package/dist/git/providers/worktrees.js.map +1 -1
  174. package/dist/git/remotes/azure-devops.d.ts.map +1 -1
  175. package/dist/git/remotes/azure-devops.js +27 -31
  176. package/dist/git/remotes/azure-devops.js.map +1 -1
  177. package/dist/git/remotes/bitbucket-server.d.ts.map +1 -1
  178. package/dist/git/remotes/bitbucket-server.js +21 -23
  179. package/dist/git/remotes/bitbucket-server.js.map +1 -1
  180. package/dist/git/remotes/bitbucket.d.ts.map +1 -1
  181. package/dist/git/remotes/bitbucket.js +21 -23
  182. package/dist/git/remotes/bitbucket.js.map +1 -1
  183. package/dist/git/remotes/custom.d.ts.map +1 -1
  184. package/dist/git/remotes/custom.js.map +1 -1
  185. package/dist/git/remotes/gerrit.d.ts.map +1 -1
  186. package/dist/git/remotes/gerrit.js +11 -13
  187. package/dist/git/remotes/gerrit.js.map +1 -1
  188. package/dist/git/remotes/gitea.d.ts.map +1 -1
  189. package/dist/git/remotes/gitea.js +12 -14
  190. package/dist/git/remotes/gitea.js.map +1 -1
  191. package/dist/git/remotes/github.d.ts.map +1 -1
  192. package/dist/git/remotes/github.js +54 -56
  193. package/dist/git/remotes/github.js.map +1 -1
  194. package/dist/git/remotes/gitlab.d.ts.map +1 -1
  195. package/dist/git/remotes/gitlab.js +93 -95
  196. package/dist/git/remotes/gitlab.js.map +1 -1
  197. package/dist/git/remotes/google-source.d.ts.map +1 -1
  198. package/dist/git/remotes/google-source.js.map +1 -1
  199. package/dist/git/remotes/matcher.d.ts.map +1 -1
  200. package/dist/git/remotes/matcher.js.map +1 -1
  201. package/dist/git/run.types.d.ts +62 -3
  202. package/dist/git/run.types.d.ts.map +1 -1
  203. package/dist/git/service.d.ts.map +1 -1
  204. package/dist/git/utils/autolink.utils.d.ts.map +1 -1
  205. package/dist/git/utils/autolink.utils.js.map +1 -1
  206. package/dist/git/utils/blame.utils.d.ts.map +1 -1
  207. package/dist/git/utils/blame.utils.js.map +1 -1
  208. package/dist/git/utils/branch.utils.d.ts.map +1 -1
  209. package/dist/git/utils/branch.utils.js +12 -1
  210. package/dist/git/utils/branch.utils.js.map +1 -1
  211. package/dist/git/utils/commit.utils.d.ts.map +1 -1
  212. package/dist/git/utils/commit.utils.js.map +1 -1
  213. package/dist/git/utils/conflictResolution.utils.d.ts +32 -0
  214. package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -1
  215. package/dist/git/utils/conflictResolution.utils.js +95 -0
  216. package/dist/git/utils/conflictResolution.utils.js.map +1 -1
  217. package/dist/git/utils/contributor.utils.d.ts +1 -1
  218. package/dist/git/utils/contributor.utils.d.ts.map +1 -1
  219. package/dist/git/utils/contributor.utils.js +1 -2
  220. package/dist/git/utils/contributor.utils.js.map +1 -1
  221. package/dist/git/utils/fetch.utils.d.ts.map +1 -1
  222. package/dist/git/utils/fetch.utils.js.map +1 -1
  223. package/dist/git/utils/fileStatus.utils.d.ts +7 -0
  224. package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
  225. package/dist/git/utils/fileStatus.utils.js +6 -0
  226. package/dist/git/utils/fileStatus.utils.js.map +1 -1
  227. package/dist/git/utils/graph.utils.d.ts +20 -0
  228. package/dist/git/utils/graph.utils.d.ts.map +1 -0
  229. package/dist/git/utils/graph.utils.js +40 -0
  230. package/dist/git/utils/graph.utils.js.map +1 -0
  231. package/dist/git/utils/issue.utils.d.ts.map +1 -1
  232. package/dist/git/utils/issue.utils.js +1 -0
  233. package/dist/git/utils/issue.utils.js.map +1 -1
  234. package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +1 -1
  235. package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -1
  236. package/dist/git/utils/mergeConflicts.utils.d.ts.map +1 -1
  237. package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
  238. package/dist/git/utils/pausedOperationStatus.utils.d.ts +13 -13
  239. package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
  240. package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
  241. package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
  242. package/dist/git/utils/pullRequest.utils.js +9 -0
  243. package/dist/git/utils/pullRequest.utils.js.map +1 -1
  244. package/dist/git/utils/reachability.utils.d.ts +20 -2
  245. package/dist/git/utils/reachability.utils.d.ts.map +1 -1
  246. package/dist/git/utils/reachability.utils.js +68 -7
  247. package/dist/git/utils/reachability.utils.js.map +1 -1
  248. package/dist/git/utils/rebase.utils.d.ts.map +1 -1
  249. package/dist/git/utils/rebase.utils.js.map +1 -1
  250. package/dist/git/utils/reference.utils.d.ts.map +1 -1
  251. package/dist/git/utils/reference.utils.js.map +1 -1
  252. package/dist/git/utils/remote.utils.d.ts.map +1 -1
  253. package/dist/git/utils/remote.utils.js.map +1 -1
  254. package/dist/git/utils/repository.utils.d.ts.map +1 -1
  255. package/dist/git/utils/repository.utils.js.map +1 -1
  256. package/dist/git/utils/resourceDescriptor.utils.d.ts.map +1 -1
  257. package/dist/git/utils/resourceDescriptor.utils.js.map +1 -1
  258. package/dist/git/utils/revision.utils.d.ts.map +1 -1
  259. package/dist/git/utils/revision.utils.js.map +1 -1
  260. package/dist/git/utils/search.utils.d.ts.map +1 -1
  261. package/dist/git/utils/search.utils.js.map +1 -1
  262. package/dist/git/utils/sorting.d.ts.map +1 -1
  263. package/dist/git/utils/sorting.js.map +1 -1
  264. package/dist/git/utils/sshKey.utils.d.ts +7 -0
  265. package/dist/git/utils/sshKey.utils.d.ts.map +1 -0
  266. package/dist/git/utils/sshKey.utils.js +25 -0
  267. package/dist/git/utils/sshKey.utils.js.map +1 -0
  268. package/dist/git/utils/status.utils.d.ts.map +1 -1
  269. package/dist/git/utils/status.utils.js.map +1 -1
  270. package/dist/git/utils/statusFile.utils.d.ts.map +1 -1
  271. package/dist/git/utils/statusFile.utils.js.map +1 -1
  272. package/dist/git/utils/tag.utils.d.ts.map +1 -1
  273. package/dist/git/utils/tag.utils.js.map +1 -1
  274. package/dist/git/utils/tooltip.utils.d.ts.map +1 -1
  275. package/dist/git/utils/tooltip.utils.js.map +1 -1
  276. package/dist/git/utils/uriAuthority.d.ts.map +1 -1
  277. package/dist/git/utils/uriAuthority.js.map +1 -1
  278. package/dist/git/utils/user.utils.d.ts.map +1 -1
  279. package/dist/git/utils/user.utils.js.map +1 -1
  280. package/dist/git/utils/worktree.utils.d.ts.map +1 -1
  281. package/dist/git/utils/worktree.utils.js.map +1 -1
  282. package/dist/git/watching/changeEvent.d.ts.map +1 -1
  283. package/dist/git/watching/changeEvent.js.map +1 -1
  284. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  285. package/dist/git/watching/classifyChange.js.map +1 -1
  286. package/dist/git/watching/gitIgnoreFilter.d.ts.map +1 -1
  287. package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
  288. package/dist/git/watching/initWatcher.d.ts.map +1 -1
  289. package/dist/git/watching/initWatcher.js.map +1 -1
  290. package/dist/git/watching/provider.d.ts.map +1 -1
  291. package/dist/git/watching/provider.js.map +1 -1
  292. package/dist/git/watching/watchGroup.d.ts.map +1 -1
  293. package/dist/git/watching/watchGroup.js.map +1 -1
  294. package/dist/git/watching/watchService.d.ts +4 -0
  295. package/dist/git/watching/watchService.d.ts.map +1 -1
  296. package/dist/git/watching/watchService.js +15 -1
  297. package/dist/git/watching/watchService.js.map +1 -1
  298. package/dist/git/watching/watchSession.d.ts +7 -0
  299. package/dist/git/watching/watchSession.d.ts.map +1 -1
  300. package/dist/git/watching/watchSession.js +14 -2
  301. package/dist/git/watching/watchSession.js.map +1 -1
  302. package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
  303. package/dist/git/watching/watcherPatterns.js.map +1 -1
  304. package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
  305. package/dist/git-cli/exec/exec.d.ts.map +1 -1
  306. package/dist/git-cli/exec/exec.errors.d.ts.map +1 -1
  307. package/dist/git-cli/exec/exec.errors.js.map +1 -1
  308. package/dist/git-cli/exec/exec.js.map +1 -1
  309. package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
  310. package/dist/git-cli/exec/exec.types.js.map +1 -1
  311. package/dist/git-cli/exec/features.d.ts.map +1 -1
  312. package/dist/git-cli/exec/features.js.map +1 -1
  313. package/dist/git-cli/exec/git.d.ts +19 -27
  314. package/dist/git-cli/exec/git.d.ts.map +1 -1
  315. package/dist/git-cli/exec/git.js +126 -34
  316. package/dist/git-cli/exec/git.js.map +1 -1
  317. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  318. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  319. package/dist/git-cli/exec/locator.d.ts.map +1 -1
  320. package/dist/git-cli/exec/locator.js.map +1 -1
  321. package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
  322. package/dist/git-cli/parsers/blameParser.js.map +1 -1
  323. package/dist/git-cli/parsers/indexParser.d.ts.map +1 -1
  324. package/dist/git-cli/parsers/indexParser.js.map +1 -1
  325. package/dist/git-cli/parsers/logParser.d.ts +9 -1
  326. package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
  327. package/dist/git-cli/parsers/logParser.js +141 -60
  328. package/dist/git-cli/parsers/logParser.js.map +1 -1
  329. package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +1 -1
  330. package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -1
  331. package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
  332. package/dist/git-cli/parsers/refParser.js.map +1 -1
  333. package/dist/git-cli/parsers/reflogParser.d.ts.map +1 -1
  334. package/dist/git-cli/parsers/reflogParser.js.map +1 -1
  335. package/dist/git-cli/parsers/remoteParser.d.ts.map +1 -1
  336. package/dist/git-cli/parsers/remoteParser.js.map +1 -1
  337. package/dist/git-cli/parsers/shortlogParser.d.ts.map +1 -1
  338. package/dist/git-cli/parsers/shortlogParser.js.map +1 -1
  339. package/dist/git-cli/parsers/signatureParser.d.ts.map +1 -1
  340. package/dist/git-cli/parsers/signatureParser.js.map +1 -1
  341. package/dist/git-cli/parsers/sshSignatureParser.d.ts +21 -0
  342. package/dist/git-cli/parsers/sshSignatureParser.d.ts.map +1 -0
  343. package/dist/git-cli/parsers/sshSignatureParser.js +78 -0
  344. package/dist/git-cli/parsers/sshSignatureParser.js.map +1 -0
  345. package/dist/git-cli/parsers/statusParser.d.ts.map +1 -1
  346. package/dist/git-cli/parsers/statusParser.js.map +1 -1
  347. package/dist/git-cli/parsers/treeParser.d.ts.map +1 -1
  348. package/dist/git-cli/parsers/treeParser.js.map +1 -1
  349. package/dist/git-cli/parsers/worktreeParser.d.ts.map +1 -1
  350. package/dist/git-cli/parsers/worktreeParser.js +5 -7
  351. package/dist/git-cli/parsers/worktreeParser.js.map +1 -1
  352. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  353. package/dist/git-cli/providers/blame.js.map +1 -1
  354. package/dist/git-cli/providers/branches.d.ts +1 -0
  355. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  356. package/dist/git-cli/providers/branches.js +51 -32
  357. package/dist/git-cli/providers/branches.js.map +1 -1
  358. package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +1 -1
  359. package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -1
  360. package/dist/git-cli/providers/commits.d.ts +12 -1
  361. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  362. package/dist/git-cli/providers/commits.js +89 -8
  363. package/dist/git-cli/providers/commits.js.map +1 -1
  364. package/dist/git-cli/providers/config.d.ts.map +1 -1
  365. package/dist/git-cli/providers/config.js.map +1 -1
  366. package/dist/git-cli/providers/contributors.d.ts.map +1 -1
  367. package/dist/git-cli/providers/contributors.js.map +1 -1
  368. package/dist/git-cli/providers/diff.d.ts.map +1 -1
  369. package/dist/git-cli/providers/diff.js.map +1 -1
  370. package/dist/git-cli/providers/graph.d.ts +35 -1
  371. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  372. package/dist/git-cli/providers/graph.js +1434 -330
  373. package/dist/git-cli/providers/graph.js.map +1 -1
  374. package/dist/git-cli/providers/operations.d.ts +1 -0
  375. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  376. package/dist/git-cli/providers/operations.js +22 -1
  377. package/dist/git-cli/providers/operations.js.map +1 -1
  378. package/dist/git-cli/providers/patch.d.ts.map +1 -1
  379. package/dist/git-cli/providers/patch.js.map +1 -1
  380. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  381. package/dist/git-cli/providers/pausedOperations.js +3 -3
  382. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  383. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  384. package/dist/git-cli/providers/refs.js.map +1 -1
  385. package/dist/git-cli/providers/remotes.d.ts.map +1 -1
  386. package/dist/git-cli/providers/remotes.js.map +1 -1
  387. package/dist/git-cli/providers/revision.d.ts +1 -0
  388. package/dist/git-cli/providers/revision.d.ts.map +1 -1
  389. package/dist/git-cli/providers/revision.js +33 -0
  390. package/dist/git-cli/providers/revision.js.map +1 -1
  391. package/dist/git-cli/providers/staging.d.ts.map +1 -1
  392. package/dist/git-cli/providers/staging.js.map +1 -1
  393. package/dist/git-cli/providers/stash.d.ts.map +1 -1
  394. package/dist/git-cli/providers/stash.js.map +1 -1
  395. package/dist/git-cli/providers/status.d.ts +28 -0
  396. package/dist/git-cli/providers/status.d.ts.map +1 -1
  397. package/dist/git-cli/providers/status.js +240 -154
  398. package/dist/git-cli/providers/status.js.map +1 -1
  399. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  400. package/dist/git-cli/providers/tags.js +2 -1
  401. package/dist/git-cli/providers/tags.js.map +1 -1
  402. package/dist/git-cli/providers/worktrees.d.ts +4 -1
  403. package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
  404. package/dist/git-cli/providers/worktrees.js +31 -3
  405. package/dist/git-cli/providers/worktrees.js.map +1 -1
  406. package/dist/git-cli/service.d.ts.map +1 -1
  407. package/dist/git-cli/service.js +8 -0
  408. package/dist/git-cli/service.js.map +1 -1
  409. package/dist/ipc/ipcServer.d.ts.map +1 -1
  410. package/dist/ipc/ipcServer.js +1 -1
  411. package/dist/ipc/ipcServer.js.map +1 -1
  412. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +6 -1
  413. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
  414. package/dist/plus/agents/providers/claudeCodeProvider.js +19 -0
  415. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
  416. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +68 -0
  417. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
  418. package/dist/plus/agents/providers/claudeCodeTranscript.js +262 -8
  419. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  420. package/dist/plus/agents/types.d.ts +36 -2
  421. package/dist/plus/agents/types.d.ts.map +1 -1
  422. package/dist/plus/ai/constants.d.ts +1 -2
  423. package/dist/plus/ai/constants.d.ts.map +1 -1
  424. package/dist/plus/ai/constants.js +1 -8
  425. package/dist/plus/ai/constants.js.map +1 -1
  426. package/dist/plus/ai/errors.d.ts.map +1 -1
  427. package/dist/plus/ai/errors.js.map +1 -1
  428. package/dist/plus/ai/models/conversation.d.ts.map +1 -1
  429. package/dist/plus/ai/models/conversation.js.map +1 -1
  430. package/dist/plus/ai/models/model.d.ts +2 -1
  431. package/dist/plus/ai/models/model.d.ts.map +1 -1
  432. package/dist/plus/ai/models/model.js +50 -1
  433. package/dist/plus/ai/models/model.js.map +1 -1
  434. package/dist/plus/ai/models/promptTemplates.d.ts +5 -2
  435. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  436. package/dist/plus/ai/models/promptTemplates.js.map +1 -1
  437. package/dist/plus/ai/models/provider.d.ts.map +1 -1
  438. package/dist/plus/ai/models/provider.js.map +1 -1
  439. package/dist/plus/ai/models/results.d.ts.map +1 -1
  440. package/dist/plus/ai/models/results.js.map +1 -1
  441. package/dist/plus/ai/prompts.d.ts +1 -1
  442. package/dist/plus/ai/prompts.d.ts.map +1 -1
  443. package/dist/plus/ai/prompts.js +15 -47
  444. package/dist/plus/ai/prompts.js.map +1 -1
  445. package/dist/plus/ai/providers/anthropicProvider.d.ts +5 -0
  446. package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
  447. package/dist/plus/ai/providers/anthropicProvider.js +40 -3
  448. package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
  449. package/dist/plus/ai/providers/azureProvider.d.ts.map +1 -1
  450. package/dist/plus/ai/providers/azureProvider.js.map +1 -1
  451. package/dist/plus/ai/providers/context.d.ts.map +1 -1
  452. package/dist/plus/ai/providers/context.js.map +1 -1
  453. package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
  454. package/dist/plus/ai/providers/deepSeekProvider.js +17 -1
  455. package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
  456. package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
  457. package/dist/plus/ai/providers/geminiProvider.js +25 -6
  458. package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
  459. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
  460. package/dist/plus/ai/providers/gitkrakenProvider.js +1 -0
  461. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
  462. package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -1
  463. package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
  464. package/dist/plus/ai/providers/huggingFaceProvider.js +21 -18
  465. package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
  466. package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
  467. package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
  468. package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
  469. package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
  470. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
  471. package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
  472. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +10 -1
  473. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
  474. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +9 -1
  475. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  476. package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
  477. package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
  478. package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
  479. package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
  480. package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
  481. package/dist/plus/ai/providers/xaiProvider.js +14 -1
  482. package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
  483. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  484. package/dist/plus/ai/utils/ai.utils.js +5 -7
  485. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  486. package/dist/plus/ai/utils/results.utils.d.ts +3 -0
  487. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  488. package/dist/plus/ai/utils/results.utils.js +26 -0
  489. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  490. package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
  491. package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
  492. package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
  493. package/dist/plus/git-github/api/config.d.ts.map +1 -1
  494. package/dist/plus/git-github/api/config.js.map +1 -1
  495. package/dist/plus/git-github/api/github.d.ts +71 -15
  496. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  497. package/dist/plus/git-github/api/github.js +350 -84
  498. package/dist/plus/git-github/api/github.js.map +1 -1
  499. package/dist/plus/git-github/api/github.utils.d.ts.map +1 -1
  500. package/dist/plus/git-github/api/github.utils.js.map +1 -1
  501. package/dist/plus/git-github/api/token.d.ts.map +1 -1
  502. package/dist/plus/git-github/api/token.js.map +1 -1
  503. package/dist/plus/git-github/api/tokenUtils.d.ts.map +1 -1
  504. package/dist/plus/git-github/api/tokenUtils.js.map +1 -1
  505. package/dist/plus/git-github/api/types.d.ts.map +1 -1
  506. package/dist/plus/git-github/api/types.js.map +1 -1
  507. package/dist/plus/git-github/context.d.ts.map +1 -1
  508. package/dist/plus/git-github/models.d.ts +5 -0
  509. package/dist/plus/git-github/models.d.ts.map +1 -1
  510. package/dist/plus/git-github/models.js +27 -2
  511. package/dist/plus/git-github/models.js.map +1 -1
  512. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  513. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  514. package/dist/plus/git-github/providers/github/branches.d.ts +2 -1
  515. package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
  516. package/dist/plus/git-github/providers/github/branches.js +7 -3
  517. package/dist/plus/git-github/providers/github/branches.js.map +1 -1
  518. package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
  519. package/dist/plus/git-github/providers/github/commits.js.map +1 -1
  520. package/dist/plus/git-github/providers/github/config.d.ts.map +1 -1
  521. package/dist/plus/git-github/providers/github/config.js.map +1 -1
  522. package/dist/plus/git-github/providers/github/contributors.d.ts.map +1 -1
  523. package/dist/plus/git-github/providers/github/contributors.js.map +1 -1
  524. package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
  525. package/dist/plus/git-github/providers/github/diff.js +2 -2
  526. package/dist/plus/git-github/providers/github/diff.js.map +1 -1
  527. package/dist/plus/git-github/providers/github/graph.d.ts +12 -1
  528. package/dist/plus/git-github/providers/github/graph.d.ts.map +1 -1
  529. package/dist/plus/git-github/providers/github/graph.js +85 -0
  530. package/dist/plus/git-github/providers/github/graph.js.map +1 -1
  531. package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
  532. package/dist/plus/git-github/providers/github/refs.js.map +1 -1
  533. package/dist/plus/git-github/providers/github/remotes.d.ts.map +1 -1
  534. package/dist/plus/git-github/providers/github/remotes.js.map +1 -1
  535. package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
  536. package/dist/plus/git-github/providers/github/revision.js.map +1 -1
  537. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  538. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  539. package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
  540. package/dist/plus/git-github/providers/github/tags.js +3 -1
  541. package/dist/plus/git-github/providers/github/tags.js.map +1 -1
  542. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
  543. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
  544. package/dist/plus/git-github/providers/githubProvider.d.ts.map +1 -1
  545. package/dist/plus/git-github/providers/githubProvider.js.map +1 -1
  546. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +30 -0
  547. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +1 -0
  548. package/dist/plus/integrations/authentication/cloudIntegrationService.js +214 -0
  549. package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -0
  550. package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +114 -0
  551. package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -0
  552. package/dist/plus/integrations/authentication/configuredIntegrationService.js +497 -0
  553. package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -0
  554. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +112 -0
  555. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +1 -0
  556. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +217 -0
  557. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -0
  558. package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts +62 -0
  559. package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +1 -0
  560. package/dist/plus/integrations/authentication/integrationAuthenticationService.js +126 -0
  561. package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -0
  562. package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +16 -0
  563. package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +1 -0
  564. package/dist/plus/integrations/authentication/manualTokenProvider.js +53 -0
  565. package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -0
  566. package/dist/plus/integrations/authentication/models.d.ts +120 -0
  567. package/dist/plus/integrations/authentication/models.d.ts.map +1 -0
  568. package/dist/plus/integrations/authentication/models.js +64 -0
  569. package/dist/plus/integrations/authentication/models.js.map +1 -0
  570. package/dist/plus/integrations/collectionMetadata.d.ts +21 -0
  571. package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -0
  572. package/dist/plus/integrations/collectionMetadata.js +121 -0
  573. package/dist/plus/integrations/collectionMetadata.js.map +1 -0
  574. package/dist/plus/integrations/constants.d.ts +57 -0
  575. package/dist/plus/integrations/constants.d.ts.map +1 -0
  576. package/dist/plus/integrations/constants.js +138 -0
  577. package/dist/plus/integrations/constants.js.map +1 -0
  578. package/dist/plus/integrations/context.d.ts +358 -0
  579. package/dist/plus/integrations/context.d.ts.map +1 -0
  580. package/dist/plus/integrations/context.js +2 -0
  581. package/dist/plus/integrations/context.js.map +1 -0
  582. package/dist/plus/integrations/errors.d.ts +79 -0
  583. package/dist/plus/integrations/errors.d.ts.map +1 -0
  584. package/dist/plus/integrations/errors.js +150 -0
  585. package/dist/plus/integrations/errors.js.map +1 -0
  586. package/dist/plus/integrations/index.d.ts +77 -0
  587. package/dist/plus/integrations/index.d.ts.map +1 -0
  588. package/dist/plus/integrations/index.js +64 -0
  589. package/dist/plus/integrations/index.js.map +1 -0
  590. package/dist/plus/integrations/integrationService.d.ts +379 -0
  591. package/dist/plus/integrations/integrationService.d.ts.map +1 -0
  592. package/dist/plus/integrations/integrationService.js +1895 -0
  593. package/dist/plus/integrations/integrationService.js.map +1 -0
  594. package/dist/plus/integrations/lite.d.ts +47 -0
  595. package/dist/plus/integrations/lite.d.ts.map +1 -0
  596. package/dist/plus/integrations/lite.js +141 -0
  597. package/dist/plus/integrations/lite.js.map +1 -0
  598. package/dist/plus/integrations/manager.d.ts +332 -0
  599. package/dist/plus/integrations/manager.d.ts.map +1 -0
  600. package/dist/plus/integrations/manager.js +2 -0
  601. package/dist/plus/integrations/manager.js.map +1 -0
  602. package/dist/plus/integrations/models/gitHostIntegration.d.ts +341 -0
  603. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -0
  604. package/dist/plus/integrations/models/gitHostIntegration.js +1146 -0
  605. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -0
  606. package/dist/plus/integrations/models/integration.d.ts +212 -0
  607. package/dist/plus/integrations/models/integration.d.ts.map +1 -0
  608. package/dist/plus/integrations/models/integration.js +627 -0
  609. package/dist/plus/integrations/models/integration.js.map +1 -0
  610. package/dist/plus/integrations/models/issuesIntegration.d.ts +108 -0
  611. package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -0
  612. package/dist/plus/integrations/models/issuesIntegration.js +216 -0
  613. package/dist/plus/integrations/models/issuesIntegration.js.map +1 -0
  614. package/dist/plus/integrations/providerFilters.d.ts +12 -0
  615. package/dist/plus/integrations/providerFilters.d.ts.map +1 -0
  616. package/dist/plus/integrations/providerFilters.js +14 -0
  617. package/dist/plus/integrations/providerFilters.js.map +1 -0
  618. package/dist/plus/integrations/providers/apiClients.d.ts +25 -0
  619. package/dist/plus/integrations/providers/apiClients.d.ts.map +1 -0
  620. package/dist/plus/integrations/providers/apiClients.js +39 -0
  621. package/dist/plus/integrations/providers/apiClients.js.map +1 -0
  622. package/dist/plus/integrations/providers/apiConfig.d.ts +52 -0
  623. package/dist/plus/integrations/providers/apiConfig.d.ts.map +1 -0
  624. package/dist/plus/integrations/providers/apiConfig.js +19 -0
  625. package/dist/plus/integrations/providers/apiConfig.js.map +1 -0
  626. package/dist/plus/integrations/providers/azure/azure.d.ts +59 -0
  627. package/dist/plus/integrations/providers/azure/azure.d.ts.map +1 -0
  628. package/dist/plus/integrations/providers/azure/azure.js +519 -0
  629. package/dist/plus/integrations/providers/azure/azure.js.map +1 -0
  630. package/dist/plus/integrations/providers/azure/models.d.ts +302 -0
  631. package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -0
  632. package/dist/plus/integrations/providers/azure/models.js +203 -0
  633. package/dist/plus/integrations/providers/azure/models.js.map +1 -0
  634. package/dist/plus/integrations/providers/azureDevOps.d.ts +141 -0
  635. package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -0
  636. package/dist/plus/integrations/providers/azureDevOps.js +925 -0
  637. package/dist/plus/integrations/providers/azureDevOps.js.map +1 -0
  638. package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +53 -0
  639. package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +1 -0
  640. package/dist/plus/integrations/providers/bitbucket/bitbucket.js +589 -0
  641. package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -0
  642. package/dist/plus/integrations/providers/bitbucket/models.d.ts +222 -0
  643. package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -0
  644. package/dist/plus/integrations/providers/bitbucket/models.js +158 -0
  645. package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -0
  646. package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +138 -0
  647. package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +1 -0
  648. package/dist/plus/integrations/providers/bitbucket-server/models.js +130 -0
  649. package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -0
  650. package/dist/plus/integrations/providers/bitbucket-server.d.ts +84 -0
  651. package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -0
  652. package/dist/plus/integrations/providers/bitbucket-server.js +242 -0
  653. package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -0
  654. package/dist/plus/integrations/providers/bitbucket.d.ts +84 -0
  655. package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -0
  656. package/dist/plus/integrations/providers/bitbucket.js +477 -0
  657. package/dist/plus/integrations/providers/bitbucket.js.map +1 -0
  658. package/dist/plus/integrations/providers/github/github.d.ts +5 -0
  659. package/dist/plus/integrations/providers/github/github.d.ts.map +1 -0
  660. package/dist/plus/integrations/providers/github/github.js +47 -0
  661. package/dist/plus/integrations/providers/github/github.js.map +1 -0
  662. package/dist/plus/integrations/providers/github/github.utils.d.ts +11 -0
  663. package/dist/plus/integrations/providers/github/github.utils.d.ts.map +1 -0
  664. package/dist/plus/integrations/providers/github/github.utils.js +6 -0
  665. package/dist/plus/integrations/providers/github/github.utils.js.map +1 -0
  666. package/dist/plus/integrations/providers/github/models.d.ts +3 -0
  667. package/dist/plus/integrations/providers/github/models.d.ts.map +1 -0
  668. package/dist/plus/integrations/providers/github/models.js +2 -0
  669. package/dist/plus/integrations/providers/github/models.js.map +1 -0
  670. package/dist/plus/integrations/providers/github.d.ts +116 -0
  671. package/dist/plus/integrations/providers/github.d.ts.map +1 -0
  672. package/dist/plus/integrations/providers/github.js +445 -0
  673. package/dist/plus/integrations/providers/github.js.map +1 -0
  674. package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +71 -0
  675. package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +1 -0
  676. package/dist/plus/integrations/providers/gitlab/gitlab.js +902 -0
  677. package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -0
  678. package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +27 -0
  679. package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +1 -0
  680. package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +53 -0
  681. package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -0
  682. package/dist/plus/integrations/providers/gitlab/models.d.ts +138 -0
  683. package/dist/plus/integrations/providers/gitlab/models.d.ts.map +1 -0
  684. package/dist/plus/integrations/providers/gitlab/models.js +99 -0
  685. package/dist/plus/integrations/providers/gitlab/models.js.map +1 -0
  686. package/dist/plus/integrations/providers/gitlab.d.ts +124 -0
  687. package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -0
  688. package/dist/plus/integrations/providers/gitlab.js +519 -0
  689. package/dist/plus/integrations/providers/gitlab.js.map +1 -0
  690. package/dist/plus/integrations/providers/jira.d.ts +57 -0
  691. package/dist/plus/integrations/providers/jira.d.ts.map +1 -0
  692. package/dist/plus/integrations/providers/jira.js +425 -0
  693. package/dist/plus/integrations/providers/jira.js.map +1 -0
  694. package/dist/plus/integrations/providers/linear.d.ts +58 -0
  695. package/dist/plus/integrations/providers/linear.d.ts.map +1 -0
  696. package/dist/plus/integrations/providers/linear.js +304 -0
  697. package/dist/plus/integrations/providers/linear.js.map +1 -0
  698. package/dist/plus/integrations/providers/models.d.ts +712 -0
  699. package/dist/plus/integrations/providers/models.d.ts.map +1 -0
  700. package/dist/plus/integrations/providers/models.js +850 -0
  701. package/dist/plus/integrations/providers/models.js.map +1 -0
  702. package/dist/plus/integrations/providers/providersApi.d.ts +262 -0
  703. package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -0
  704. package/dist/plus/integrations/providers/providersApi.js +1033 -0
  705. package/dist/plus/integrations/providers/providersApi.js.map +1 -0
  706. package/dist/plus/integrations/providers/trello.d.ts +47 -0
  707. package/dist/plus/integrations/providers/trello.d.ts.map +1 -0
  708. package/dist/plus/integrations/providers/trello.js +141 -0
  709. package/dist/plus/integrations/providers/trello.js.map +1 -0
  710. package/dist/plus/integrations/providers/utils/providerPaging.d.ts +29 -0
  711. package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -0
  712. package/dist/plus/integrations/providers/utils/providerPaging.js +154 -0
  713. package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -0
  714. package/dist/plus/integrations/providers/utils.d.ts +75 -0
  715. package/dist/plus/integrations/providers/utils.d.ts.map +1 -0
  716. package/dist/plus/integrations/providers/utils.js +313 -0
  717. package/dist/plus/integrations/providers/utils.js.map +1 -0
  718. package/dist/plus/integrations/reads/context.d.ts +52 -0
  719. package/dist/plus/integrations/reads/context.d.ts.map +1 -0
  720. package/dist/plus/integrations/reads/context.js +2 -0
  721. package/dist/plus/integrations/reads/context.js.map +1 -0
  722. package/dist/plus/integrations/reads/cursors.d.ts +66 -0
  723. package/dist/plus/integrations/reads/cursors.d.ts.map +1 -0
  724. package/dist/plus/integrations/reads/cursors.js +133 -0
  725. package/dist/plus/integrations/reads/cursors.js.map +1 -0
  726. package/dist/plus/integrations/reads/drains.d.ts +60 -0
  727. package/dist/plus/integrations/reads/drains.d.ts.map +1 -0
  728. package/dist/plus/integrations/reads/drains.js +255 -0
  729. package/dist/plus/integrations/reads/drains.js.map +1 -0
  730. package/dist/plus/integrations/reads/filters.d.ts +81 -0
  731. package/dist/plus/integrations/reads/filters.d.ts.map +1 -0
  732. package/dist/plus/integrations/reads/filters.js +87 -0
  733. package/dist/plus/integrations/reads/filters.js.map +1 -0
  734. package/dist/plus/integrations/reads/hierarchy.d.ts +17 -0
  735. package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -0
  736. package/dist/plus/integrations/reads/hierarchy.js +348 -0
  737. package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
  738. package/dist/plus/integrations/reads/hierarchy.utils.d.ts +53 -0
  739. package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
  740. package/dist/plus/integrations/reads/hierarchy.utils.js +85 -0
  741. package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -0
  742. package/dist/plus/integrations/reads/issueTracker.d.ts +19 -0
  743. package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -0
  744. package/dist/plus/integrations/reads/issueTracker.js +346 -0
  745. package/dist/plus/integrations/reads/issueTracker.js.map +1 -0
  746. package/dist/plus/integrations/reads/issues.d.ts +34 -0
  747. package/dist/plus/integrations/reads/issues.d.ts.map +1 -0
  748. package/dist/plus/integrations/reads/issues.js +244 -0
  749. package/dist/plus/integrations/reads/issues.js.map +1 -0
  750. package/dist/plus/integrations/reads/paging.d.ts +136 -0
  751. package/dist/plus/integrations/reads/paging.d.ts.map +1 -0
  752. package/dist/plus/integrations/reads/paging.js +221 -0
  753. package/dist/plus/integrations/reads/paging.js.map +1 -0
  754. package/dist/plus/integrations/reads/pullRequests.d.ts +32 -0
  755. package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -0
  756. package/dist/plus/integrations/reads/pullRequests.js +151 -0
  757. package/dist/plus/integrations/reads/pullRequests.js.map +1 -0
  758. package/dist/plus/integrations/reads/warnings.d.ts +47 -0
  759. package/dist/plus/integrations/reads/warnings.d.ts.map +1 -0
  760. package/dist/plus/integrations/reads/warnings.js +81 -0
  761. package/dist/plus/integrations/reads/warnings.js.map +1 -0
  762. package/dist/plus/integrations/results.d.ts +189 -0
  763. package/dist/plus/integrations/results.d.ts.map +1 -0
  764. package/dist/plus/integrations/results.js +62 -0
  765. package/dist/plus/integrations/results.js.map +1 -0
  766. package/dist/plus/integrations/telemetry.d.ts +26 -0
  767. package/dist/plus/integrations/telemetry.d.ts.map +1 -0
  768. package/dist/plus/integrations/telemetry.js +11 -0
  769. package/dist/plus/integrations/telemetry.js.map +1 -0
  770. package/dist/plus/integrations/utils/domain.utils.d.ts +5 -0
  771. package/dist/plus/integrations/utils/domain.utils.d.ts.map +1 -0
  772. package/dist/plus/integrations/utils/domain.utils.js +27 -0
  773. package/dist/plus/integrations/utils/domain.utils.js.map +1 -0
  774. package/dist/plus/integrations/utils/integration.utils.d.ts +40 -0
  775. package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -0
  776. package/dist/plus/integrations/utils/integration.utils.js +182 -0
  777. package/dist/plus/integrations/utils/integration.utils.js.map +1 -0
  778. package/dist/utils/array.d.ts.map +1 -1
  779. package/dist/utils/array.js.map +1 -1
  780. package/dist/utils/brand.d.ts.map +1 -1
  781. package/dist/utils/cancellation.d.ts +13 -0
  782. package/dist/utils/cancellation.d.ts.map +1 -1
  783. package/dist/utils/cancellation.js +52 -7
  784. package/dist/utils/cancellation.js.map +1 -1
  785. package/dist/utils/charCode.d.ts.map +1 -1
  786. package/dist/utils/coalescedRun.d.ts +16 -0
  787. package/dist/utils/coalescedRun.d.ts.map +1 -0
  788. package/dist/utils/coalescedRun.js +43 -0
  789. package/dist/utils/coalescedRun.js.map +1 -0
  790. package/dist/utils/color.d.ts.map +1 -1
  791. package/dist/utils/color.js +3 -3
  792. package/dist/utils/color.js.map +1 -1
  793. package/dist/utils/date.d.ts +24 -0
  794. package/dist/utils/date.d.ts.map +1 -1
  795. package/dist/utils/date.js +62 -0
  796. package/dist/utils/date.js.map +1 -1
  797. package/dist/utils/debounce.js +1 -1
  798. package/dist/utils/debounce.js.map +1 -1
  799. package/dist/utils/decorators/debounce.d.ts.map +1 -1
  800. package/dist/utils/decorators/debounce.js.map +1 -1
  801. package/dist/utils/decorators/gate.d.ts.map +1 -1
  802. package/dist/utils/decorators/gate.js +2 -2
  803. package/dist/utils/decorators/gate.js.map +1 -1
  804. package/dist/utils/decorators/log.d.ts.map +1 -1
  805. package/dist/utils/decorators/log.js +5 -5
  806. package/dist/utils/decorators/log.js.map +1 -1
  807. package/dist/utils/decorators/memoize.d.ts.map +1 -1
  808. package/dist/utils/decorators/memoize.js +2 -2
  809. package/dist/utils/decorators/memoize.js.map +1 -1
  810. package/dist/utils/decorators/resolver.d.ts.map +1 -1
  811. package/dist/utils/decorators/resolver.js.map +1 -1
  812. package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
  813. package/dist/utils/decorators/sequentialize.js +2 -2
  814. package/dist/utils/decorators/sequentialize.js.map +1 -1
  815. package/dist/utils/decorators/serializable.d.ts.map +1 -1
  816. package/dist/utils/decorators/serializable.js +1 -1
  817. package/dist/utils/decorators/serializable.js.map +1 -1
  818. package/dist/utils/dedupedAsyncCache.d.ts.map +1 -1
  819. package/dist/utils/disposable.d.ts +15 -2
  820. package/dist/utils/disposable.d.ts.map +1 -1
  821. package/dist/utils/disposable.js.map +1 -1
  822. package/dist/utils/env/browser/base64.d.ts.map +1 -1
  823. package/dist/utils/env/browser/base64.js.map +1 -1
  824. package/dist/utils/env/browser/crypto.d.ts.map +1 -1
  825. package/dist/utils/env/browser/crypto.js.map +1 -1
  826. package/dist/utils/env/browser/fs.d.ts.map +1 -1
  827. package/dist/utils/env/browser/fs.js.map +1 -1
  828. package/dist/utils/env/browser/hex.d.ts.map +1 -1
  829. package/dist/utils/env/browser/hex.js.map +1 -1
  830. package/dist/utils/env/browser/hrtime.d.ts.map +1 -1
  831. package/dist/utils/env/browser/hrtime.js.map +1 -1
  832. package/dist/utils/env/browser/logScope.d.ts.map +1 -1
  833. package/dist/utils/env/browser/logScope.js.map +1 -1
  834. package/dist/utils/env/browser/md5.d.ts.map +1 -1
  835. package/dist/utils/env/browser/md5.js.map +1 -1
  836. package/dist/utils/env/browser/platform.d.ts.map +1 -1
  837. package/dist/utils/env/browser/platform.js.map +1 -1
  838. package/dist/utils/env/node/base64.d.ts.map +1 -1
  839. package/dist/utils/env/node/base64.js.map +1 -1
  840. package/dist/utils/env/node/crypto.d.ts.map +1 -1
  841. package/dist/utils/env/node/crypto.js.map +1 -1
  842. package/dist/utils/env/node/exec.d.ts +9 -1
  843. package/dist/utils/env/node/exec.d.ts.map +1 -1
  844. package/dist/utils/env/node/exec.js +11 -4
  845. package/dist/utils/env/node/exec.js.map +1 -1
  846. package/dist/utils/env/node/fs.d.ts.map +1 -1
  847. package/dist/utils/env/node/fs.js.map +1 -1
  848. package/dist/utils/env/node/hex.d.ts.map +1 -1
  849. package/dist/utils/env/node/hex.js.map +1 -1
  850. package/dist/utils/env/node/hrtime.d.ts.map +1 -1
  851. package/dist/utils/env/node/hrtime.js.map +1 -1
  852. package/dist/utils/env/node/logScope.d.ts.map +1 -1
  853. package/dist/utils/env/node/logScope.js.map +1 -1
  854. package/dist/utils/env/node/platform.d.ts.map +1 -1
  855. package/dist/utils/env/node/platform.js.map +1 -1
  856. package/dist/utils/event.d.ts.map +1 -1
  857. package/dist/utils/event.js +18 -22
  858. package/dist/utils/event.js.map +1 -1
  859. package/dist/utils/formatter.d.ts.map +1 -1
  860. package/dist/utils/formatter.js.map +1 -1
  861. package/dist/utils/function.d.ts.map +1 -1
  862. package/dist/utils/function.js +3 -3
  863. package/dist/utils/function.js.map +1 -1
  864. package/dist/utils/hash.js.map +1 -1
  865. package/dist/utils/iterable.d.ts.map +1 -1
  866. package/dist/utils/iterable.js +2 -6
  867. package/dist/utils/iterable.js.map +1 -1
  868. package/dist/utils/lazy.d.ts.map +1 -1
  869. package/dist/utils/lazy.js.map +1 -1
  870. package/dist/utils/logger.d.ts.map +1 -1
  871. package/dist/utils/logger.js +1 -1
  872. package/dist/utils/logger.js.map +1 -1
  873. package/dist/utils/logger.scoped.js +1 -1
  874. package/dist/utils/logger.scoped.js.map +1 -1
  875. package/dist/utils/lruMap.d.ts.map +1 -1
  876. package/dist/utils/lruMap.js.map +1 -1
  877. package/dist/utils/mru.d.ts.map +1 -1
  878. package/dist/utils/mru.js.map +1 -1
  879. package/dist/utils/object.js.map +1 -1
  880. package/dist/utils/paging.d.ts +29 -0
  881. package/dist/utils/paging.d.ts.map +1 -1
  882. package/dist/utils/paging.js +18 -0
  883. package/dist/utils/paging.js.map +1 -1
  884. package/dist/utils/path.js.map +1 -1
  885. package/dist/utils/promise.d.ts +10 -0
  886. package/dist/utils/promise.d.ts.map +1 -1
  887. package/dist/utils/promise.js +26 -3
  888. package/dist/utils/promise.js.map +1 -1
  889. package/dist/utils/promiseCache.d.ts +12 -2
  890. package/dist/utils/promiseCache.d.ts.map +1 -1
  891. package/dist/utils/promiseCache.js +80 -50
  892. package/dist/utils/promiseCache.js.map +1 -1
  893. package/dist/utils/searchTree.d.ts.map +1 -1
  894. package/dist/utils/searchTree.js +4 -1
  895. package/dist/utils/searchTree.js.map +1 -1
  896. package/dist/utils/stopwatch.d.ts.map +1 -1
  897. package/dist/utils/string.js +1 -1
  898. package/dist/utils/string.js.map +1 -1
  899. package/dist/utils/subscriptionManager.d.ts.map +1 -1
  900. package/dist/utils/subscriptionManager.js.map +1 -1
  901. package/dist/utils/trie.d.ts.map +1 -1
  902. package/dist/utils/trie.js +1 -0
  903. package/dist/utils/trie.js.map +1 -1
  904. package/docs/integrations.md +372 -0
  905. package/docs/kepler-read-api-parity.md +112 -0
  906. package/package.json +238 -172
  907. package/src/git/cache.ts +75 -8
  908. package/src/git/context.ts +4 -3
  909. package/src/git/errors.ts +36 -1
  910. package/src/git/models/commit.ts +1 -1
  911. package/src/git/models/graph.ts +147 -0
  912. package/src/git/models/graphSession.ts +205 -0
  913. package/src/git/models/issue.ts +12 -1
  914. package/src/git/models/pullRequest.ts +27 -1
  915. package/src/git/models/repository.ts +24 -1
  916. package/src/git/models/resourceDescriptor.ts +17 -0
  917. package/src/git/models/signature.ts +16 -0
  918. package/src/git/models/tag.ts +6 -1
  919. package/src/git/parsers/diffParser.ts +1 -1
  920. package/src/git/providers/branches.ts +6 -1
  921. package/src/git/providers/commits.ts +6 -1
  922. package/src/git/providers/config.ts +5 -1
  923. package/src/git/providers/graph.ts +69 -2
  924. package/src/git/providers/operations.ts +1 -1
  925. package/src/git/providers/status.ts +1 -1
  926. package/src/git/providers/worktrees.ts +17 -3
  927. package/src/git/remotes/azure-devops.ts +29 -33
  928. package/src/git/remotes/bitbucket-server.ts +23 -25
  929. package/src/git/remotes/bitbucket.ts +23 -25
  930. package/src/git/remotes/gerrit.ts +12 -14
  931. package/src/git/remotes/gitea.ts +13 -15
  932. package/src/git/remotes/github.ts +56 -58
  933. package/src/git/remotes/gitlab.ts +102 -104
  934. package/src/git/run.types.ts +54 -4
  935. package/src/git/utils/branch.utils.ts +12 -1
  936. package/src/git/utils/conflictResolution.utils.ts +126 -0
  937. package/src/git/utils/contributor.utils.ts +1 -1
  938. package/src/git/utils/fileStatus.utils.ts +7 -0
  939. package/src/git/utils/graph.utils.ts +46 -0
  940. package/src/git/utils/issue.utils.ts +1 -0
  941. package/src/git/utils/pullRequest.utils.ts +9 -0
  942. package/src/git/utils/reachability.utils.ts +79 -8
  943. package/src/git/utils/sshKey.utils.ts +30 -0
  944. package/src/git/watching/watchService.ts +16 -1
  945. package/src/git/watching/watchSession.ts +20 -2
  946. package/src/git-cli/exec/git.ts +144 -42
  947. package/src/git-cli/parsers/logParser.ts +83 -1
  948. package/src/git-cli/parsers/sshSignatureParser.ts +85 -0
  949. package/src/git-cli/parsers/worktreeParser.ts +5 -7
  950. package/src/git-cli/providers/branches.ts +60 -38
  951. package/src/git-cli/providers/commits.ts +102 -9
  952. package/src/git-cli/providers/graph.ts +1771 -393
  953. package/src/git-cli/providers/operations.ts +22 -2
  954. package/src/git-cli/providers/pausedOperations.ts +3 -3
  955. package/src/git-cli/providers/revision.ts +42 -0
  956. package/src/git-cli/providers/status.ts +333 -178
  957. package/src/git-cli/providers/tags.ts +2 -0
  958. package/src/git-cli/providers/worktrees.ts +57 -6
  959. package/src/git-cli/service.ts +9 -0
  960. package/src/ipc/ipcServer.ts +1 -1
  961. package/src/plus/agents/providers/claudeCodeProvider.ts +25 -0
  962. package/src/plus/agents/providers/claudeCodeTranscript.ts +320 -8
  963. package/src/plus/agents/types.ts +34 -0
  964. package/src/plus/ai/constants.ts +1 -9
  965. package/src/plus/ai/models/model.ts +53 -2
  966. package/src/plus/ai/models/promptTemplates.ts +9 -2
  967. package/src/plus/ai/prompts.ts +16 -48
  968. package/src/plus/ai/providers/anthropicProvider.ts +45 -3
  969. package/src/plus/ai/providers/deepSeekProvider.ts +17 -1
  970. package/src/plus/ai/providers/geminiProvider.ts +25 -6
  971. package/src/plus/ai/providers/gitkrakenProvider.ts +2 -0
  972. package/src/plus/ai/providers/huggingFaceProvider.ts +28 -21
  973. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +16 -1
  974. package/src/plus/ai/providers/xaiProvider.ts +14 -1
  975. package/src/plus/ai/utils/ai.utils.ts +5 -7
  976. package/src/plus/ai/utils/results.utils.ts +32 -0
  977. package/src/plus/ai/utils/truncation.utils.ts +0 -1
  978. package/src/plus/git-github/api/github.ts +497 -129
  979. package/src/plus/git-github/models.ts +33 -0
  980. package/src/plus/git-github/providers/github/branches.ts +6 -3
  981. package/src/plus/git-github/providers/github/diff.ts +1 -1
  982. package/src/plus/git-github/providers/github/graph.ts +131 -0
  983. package/src/plus/git-github/providers/github/tags.ts +2 -0
  984. package/src/plus/integrations/authentication/cloudIntegrationService.ts +292 -0
  985. package/src/plus/integrations/authentication/configuredIntegrationService.ts +651 -0
  986. package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +363 -0
  987. package/src/plus/integrations/authentication/integrationAuthenticationService.ts +148 -0
  988. package/src/plus/integrations/authentication/manualTokenProvider.ts +79 -0
  989. package/src/plus/integrations/authentication/models.ts +202 -0
  990. package/src/plus/integrations/collectionMetadata.ts +143 -0
  991. package/src/plus/integrations/constants.ts +190 -0
  992. package/src/plus/integrations/context.ts +382 -0
  993. package/src/plus/integrations/errors.ts +184 -0
  994. package/src/plus/integrations/index.ts +216 -0
  995. package/src/plus/integrations/integrationService.ts +2589 -0
  996. package/src/plus/integrations/lite.ts +233 -0
  997. package/src/plus/integrations/manager.ts +359 -0
  998. package/src/plus/integrations/models/gitHostIntegration.ts +1631 -0
  999. package/src/plus/integrations/models/integration.ts +926 -0
  1000. package/src/plus/integrations/models/issuesIntegration.ts +264 -0
  1001. package/src/plus/integrations/providerFilters.ts +12 -0
  1002. package/src/plus/integrations/providers/apiClients.ts +69 -0
  1003. package/src/plus/integrations/providers/apiConfig.ts +71 -0
  1004. package/src/plus/integrations/providers/azure/azure.ts +822 -0
  1005. package/src/plus/integrations/providers/azure/models.ts +618 -0
  1006. package/src/plus/integrations/providers/azureDevOps.ts +1342 -0
  1007. package/src/plus/integrations/providers/bitbucket/bitbucket.ts +904 -0
  1008. package/src/plus/integrations/providers/bitbucket/models.ts +445 -0
  1009. package/src/plus/integrations/providers/bitbucket-server/models.ts +283 -0
  1010. package/src/plus/integrations/providers/bitbucket-server.ts +447 -0
  1011. package/src/plus/integrations/providers/bitbucket.ts +794 -0
  1012. package/src/plus/integrations/providers/github/github.ts +64 -0
  1013. package/src/plus/integrations/providers/github/github.utils.ts +23 -0
  1014. package/src/plus/integrations/providers/github/models.ts +29 -0
  1015. package/src/plus/integrations/providers/github.ts +750 -0
  1016. package/src/plus/integrations/providers/gitlab/gitlab.ts +1320 -0
  1017. package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +80 -0
  1018. package/src/plus/integrations/providers/gitlab/models.ts +271 -0
  1019. package/src/plus/integrations/providers/gitlab.ts +832 -0
  1020. package/src/plus/integrations/providers/jira.ts +564 -0
  1021. package/src/plus/integrations/providers/linear.ts +402 -0
  1022. package/src/plus/integrations/providers/models.ts +1622 -0
  1023. package/src/plus/integrations/providers/providersApi.ts +1889 -0
  1024. package/src/plus/integrations/providers/trello.ts +205 -0
  1025. package/src/plus/integrations/providers/utils/providerPaging.ts +177 -0
  1026. package/src/plus/integrations/providers/utils.ts +419 -0
  1027. package/src/plus/integrations/reads/context.ts +75 -0
  1028. package/src/plus/integrations/reads/cursors.ts +224 -0
  1029. package/src/plus/integrations/reads/drains.ts +343 -0
  1030. package/src/plus/integrations/reads/filters.ts +124 -0
  1031. package/src/plus/integrations/reads/hierarchy.ts +493 -0
  1032. package/src/plus/integrations/reads/hierarchy.utils.ts +106 -0
  1033. package/src/plus/integrations/reads/issueTracker.ts +480 -0
  1034. package/src/plus/integrations/reads/issues.ts +407 -0
  1035. package/src/plus/integrations/reads/paging.ts +277 -0
  1036. package/src/plus/integrations/reads/pullRequests.ts +267 -0
  1037. package/src/plus/integrations/reads/warnings.ts +170 -0
  1038. package/src/plus/integrations/results.ts +275 -0
  1039. package/src/plus/integrations/telemetry.ts +29 -0
  1040. package/src/plus/integrations/utils/domain.utils.ts +26 -0
  1041. package/src/plus/integrations/utils/integration.utils.ts +215 -0
  1042. package/src/utils/brand.ts +0 -2
  1043. package/src/utils/cancellation.ts +56 -7
  1044. package/src/utils/coalescedRun.ts +45 -0
  1045. package/src/utils/color.ts +3 -3
  1046. package/src/utils/date.ts +72 -0
  1047. package/src/utils/debounce.ts +1 -1
  1048. package/src/utils/decorators/gate.ts +2 -2
  1049. package/src/utils/decorators/log.ts +5 -5
  1050. package/src/utils/decorators/memoize.ts +2 -2
  1051. package/src/utils/decorators/sequentialize.ts +2 -2
  1052. package/src/utils/decorators/serializable.ts +1 -1
  1053. package/src/utils/disposable.ts +15 -2
  1054. package/src/utils/env/node/exec.ts +20 -5
  1055. package/src/utils/event.ts +19 -25
  1056. package/src/utils/function.ts +3 -3
  1057. package/src/utils/iterable.ts +2 -6
  1058. package/src/utils/logger.scoped.ts +1 -1
  1059. package/src/utils/logger.ts +1 -1
  1060. package/src/utils/paging.ts +46 -0
  1061. package/src/utils/promise.ts +33 -3
  1062. package/src/utils/promiseCache.ts +81 -51
  1063. package/src/utils/searchTree.ts +4 -2
  1064. package/src/utils/string.ts +1 -1
  1065. package/src/utils/trie.ts +1 -0
  1066. package/dist/plus/ai/providers/githubModelsProvider.d.ts +0 -19
  1067. package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +0 -1
  1068. package/dist/plus/ai/providers/githubModelsProvider.js +0 -51
  1069. package/dist/plus/ai/providers/githubModelsProvider.js.map +0 -1
  1070. package/src/plus/ai/providers/githubModelsProvider.ts +0 -92
@@ -0,0 +1,832 @@
1
+ import type { CollectionMetadata, CollectionScopeFailure } from '@gitkraken/provider-apis';
2
+ import type { Account } from '../../../git/models/author.js';
3
+ import type { DefaultBranch } from '../../../git/models/defaultBranch.js';
4
+ import type { Issue, IssueShape } from '../../../git/models/issue.js';
5
+ import type { IssueOrPullRequest } from '../../../git/models/issueOrPullRequest.js';
6
+ import type {
7
+ PullRequest,
8
+ PullRequestMergeMethod,
9
+ PullRequestState,
10
+ PullRequestStateFilter,
11
+ } from '../../../git/models/pullRequest.js';
12
+ import type { RepositoryMetadata } from '../../../git/models/repositoryMetadata.js';
13
+ import type { RepositoryDescriptor } from '../../../git/models/resourceDescriptor.js';
14
+ import type { PullRequestUrlIdentity } from '../../../git/utils/pullRequest.utils.js';
15
+ import { CancellationError } from '../../../utils/cancellation.js';
16
+ import type { Emitter } from '../../../utils/event.js';
17
+ import { uniqueBy } from '../../../utils/iterable.js';
18
+ import { batch } from '../../../utils/promise.js';
19
+ import type { IntegrationAuthenticationProviderDescriptor } from '../authentication/integrationAuthenticationProvider.js';
20
+ import type { IntegrationAuthenticationService } from '../authentication/integrationAuthenticationService.js';
21
+ import type { ProviderAuthenticationSession } from '../authentication/models.js';
22
+ import { toTokenWithInfo } from '../authentication/models.js';
23
+ import { toCollectionScopeFailure } from '../collectionMetadata.js';
24
+ import { GitCloudHostIntegrationId, GitSelfManagedHostIntegrationId } from '../constants.js';
25
+ import type { IntegrationServiceContext } from '../context.js';
26
+ import type { IntegrationConnectionChangeEvent } from '../integrationService.js';
27
+ import type { SearchMyPullRequestsOptions } from '../models/gitHostIntegration.js';
28
+ import { GitHostIntegration } from '../models/gitHostIntegration.js';
29
+ import type { AccountWideIssuesResult, SearchMyIssuesOptions } from '../models/integration.js';
30
+ import type { GitLabIntegrationIds } from './gitlab/gitlab.utils.js';
31
+ import { getGitLabPullRequestIdentityFromMaybeUrl, matchesGitLabOrgNamespace } from './gitlab/gitlab.utils.js';
32
+ import { fromGitLabMergeRequestProvidersApi } from './gitlab/models.js';
33
+ import type {
34
+ ProviderApiPagedResult,
35
+ ProviderHierarchyResult,
36
+ ProviderOrganization,
37
+ ProviderPullRequest,
38
+ ProviderRepository,
39
+ } from './models.js';
40
+ import {
41
+ getProviderPullRequestIdentity,
42
+ IssueFilter,
43
+ ProviderPullRequestReviewState,
44
+ providersMetadata,
45
+ PullRequestFilter,
46
+ toIssueShape,
47
+ toProviderPullRequestStates,
48
+ } from './models.js';
49
+ import type { ProvidersApi } from './providersApi.js';
50
+ import { collectProviderPagedResult, mergeCollectionMetadata } from './utils/providerPaging.js';
51
+
52
+ const metadata = providersMetadata[GitCloudHostIntegrationId.GitLab];
53
+ const authProvider: IntegrationAuthenticationProviderDescriptor = Object.freeze({
54
+ id: metadata.id,
55
+ scopes: metadata.scopes,
56
+ });
57
+
58
+ const cloudEnterpriseMetadata = providersMetadata[GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted];
59
+ const cloudEnterpriseAuthProvider: IntegrationAuthenticationProviderDescriptor = Object.freeze({
60
+ id: cloudEnterpriseMetadata.id,
61
+ scopes: cloudEnterpriseMetadata.scopes,
62
+ });
63
+
64
+ type GitLabPullRequestAssociation = 'assigned' | 'authored' | 'reviewRequested';
65
+ type GitLabPullRequestFacetCursor = Partial<Record<GitLabPullRequestAssociation, string>>;
66
+
67
+ const gitLabAssociationForFilter: Record<
68
+ Exclude<PullRequestFilter, PullRequestFilter.Mention>,
69
+ GitLabPullRequestAssociation
70
+ > = {
71
+ [PullRequestFilter.Assignee]: 'assigned',
72
+ [PullRequestFilter.Author]: 'authored',
73
+ [PullRequestFilter.ReviewRequested]: 'reviewRequested',
74
+ };
75
+
76
+ function parseGitLabPullRequestFacetCursor(cursor: string | undefined): GitLabPullRequestFacetCursor {
77
+ if (!cursor) return {};
78
+
79
+ try {
80
+ const parsed = JSON.parse(cursor) as { type?: unknown; cursors?: unknown };
81
+ if (parsed.type !== 'gitlab-associations' || parsed.cursors == null || typeof parsed.cursors !== 'object') {
82
+ return {};
83
+ }
84
+
85
+ const cursors = parsed.cursors as Record<string, unknown>;
86
+ return Object.fromEntries(
87
+ (['assigned', 'authored', 'reviewRequested'] as const)
88
+ .filter(association => typeof cursors[association] === 'string' && cursors[association] !== '')
89
+ .map(association => [association, cursors[association] as string]),
90
+ );
91
+ } catch {
92
+ return {};
93
+ }
94
+ }
95
+
96
+ export type GitLabRepositoryDescriptor = RepositoryDescriptor;
97
+
98
+ /** How many SSH signing-key lookups (account resolve + keys fetch) to run concurrently, to avoid a request burst. */
99
+ const sshSigningKeyResolveBatchSize = 10;
100
+
101
+ abstract class GitLabIntegrationBase<ID extends GitLabIntegrationIds> extends GitHostIntegration<
102
+ ID,
103
+ GitLabRepositoryDescriptor
104
+ > {
105
+ protected abstract get apiBaseUrl(): string;
106
+
107
+ /** Self-hosted GitLab uses PAT semantics and a domain-based API base; gitlab.com does not. */
108
+ protected get isEnterprise(): boolean {
109
+ return this.id === GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted;
110
+ }
111
+
112
+ protected override async getProviderAccountForCommit(
113
+ session: ProviderAuthenticationSession,
114
+ repo: GitLabRepositoryDescriptor,
115
+ rev: string,
116
+ options?: {
117
+ avatarSize?: number;
118
+ },
119
+ ): Promise<Account | undefined> {
120
+ return (await this.authenticationService.apis.gitlab)?.getAccountForCommit(
121
+ this,
122
+ toTokenWithInfo(this.id, session),
123
+ repo.owner,
124
+ repo.name,
125
+ rev,
126
+ {
127
+ ...options,
128
+ baseUrl: this.apiBaseUrl,
129
+ },
130
+ );
131
+ }
132
+
133
+ protected override async getProviderAccountForEmail(
134
+ session: ProviderAuthenticationSession,
135
+ repo: GitLabRepositoryDescriptor,
136
+ email: string,
137
+ options?: {
138
+ avatarSize?: number;
139
+ },
140
+ ): Promise<Account | undefined> {
141
+ return (await this.authenticationService.apis.gitlab)?.getAccountForEmail(
142
+ this,
143
+ toTokenWithInfo(this.id, session),
144
+ repo.owner,
145
+ repo.name,
146
+ email,
147
+ {
148
+ ...options,
149
+ baseUrl: this.apiBaseUrl,
150
+ },
151
+ );
152
+ }
153
+
154
+ protected override async getProviderSshSigningKeysForEmails(
155
+ session: ProviderAuthenticationSession,
156
+ repo: GitLabRepositoryDescriptor,
157
+ emails: string[],
158
+ ): Promise<Map<string, string[]>> {
159
+ const result = new Map<string, string[]>();
160
+
161
+ const api = await this.authenticationService.apis.gitlab;
162
+ if (api == null) return result;
163
+
164
+ const token = toTokenWithInfo(this.id, session);
165
+
166
+ // GitLab resolves users one email at a time (no batch search). Run them in bounded batches rather than firing all
167
+ // (up to providerVerifyLimit) account + key lookups at once, to avoid a request burst that trips rate limiting.
168
+ await batch(emails, sshSigningKeyResolveBatchSize, async email => {
169
+ const account = await this.getProviderAccountForEmail(session, repo, email);
170
+ if (account?.id == null) return;
171
+
172
+ const keys = await api.getUserSigningKeys(this, token, account.id, { baseUrl: this.apiBaseUrl });
173
+ result.set(
174
+ email.toLowerCase(),
175
+ keys.map(k => k.key),
176
+ );
177
+ });
178
+
179
+ return result;
180
+ }
181
+
182
+ protected override async getProviderDefaultBranch(
183
+ session: ProviderAuthenticationSession,
184
+ repo: GitLabRepositoryDescriptor,
185
+ ): Promise<DefaultBranch | undefined> {
186
+ return (await this.authenticationService.apis.gitlab)?.getDefaultBranch(
187
+ this,
188
+ toTokenWithInfo(this.id, session),
189
+ repo.owner,
190
+ repo.name,
191
+ {
192
+ baseUrl: this.apiBaseUrl,
193
+ },
194
+ );
195
+ }
196
+
197
+ protected override async getProviderLinkedIssueOrPullRequest(
198
+ session: ProviderAuthenticationSession,
199
+ repo: GitLabRepositoryDescriptor,
200
+ { id }: { id: string; key: string },
201
+ ): Promise<IssueOrPullRequest | undefined> {
202
+ return (await this.authenticationService.apis.gitlab)?.getIssueOrPullRequest(
203
+ this,
204
+ toTokenWithInfo(this.id, session),
205
+ repo.owner,
206
+ repo.name,
207
+ Number(id),
208
+ {
209
+ baseUrl: this.apiBaseUrl,
210
+ },
211
+ );
212
+ }
213
+
214
+ protected override async getProviderIssue(
215
+ session: ProviderAuthenticationSession,
216
+ repo: GitLabRepositoryDescriptor,
217
+ id: string,
218
+ ): Promise<Issue | undefined> {
219
+ const api = await this.authenticationService.apis.gitlab;
220
+ const providerApi = await this.getProvidersApi();
221
+ if (!api || !repo || !id) {
222
+ return undefined;
223
+ }
224
+
225
+ const repoId = await api.getProjectId(
226
+ this,
227
+ toTokenWithInfo(this.id, session),
228
+ repo.owner,
229
+ repo.name,
230
+ this.apiBaseUrl,
231
+ undefined,
232
+ );
233
+ if (!repoId) {
234
+ return undefined;
235
+ }
236
+
237
+ const apiResult = await providerApi.getIssue(
238
+ toTokenWithInfo(this.id, session),
239
+ { namespace: repo.owner, name: repo.name, number: id },
240
+ {
241
+ isPAT: this.isEnterprise,
242
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
243
+ },
244
+ );
245
+ const issue = apiResult != null ? toIssueShape(apiResult, this) : undefined;
246
+ return issue != null ? { ...issue, type: 'issue' } : undefined;
247
+ }
248
+
249
+ protected override async getProviderPullRequestForBranch(
250
+ session: ProviderAuthenticationSession,
251
+ repo: GitLabRepositoryDescriptor,
252
+ branch: string,
253
+ options?: {
254
+ avatarSize?: number;
255
+ include?: PullRequestState[];
256
+ },
257
+ ): Promise<PullRequest | undefined> {
258
+ const { include, ...opts } = options ?? {};
259
+
260
+ const toGitLabMergeRequestState = (await import(/* webpackChunkName: "integrations" */ './gitlab/models.js'))
261
+ .toGitLabMergeRequestState;
262
+ return (await this.authenticationService.apis.gitlab)?.getPullRequestForBranch(
263
+ this,
264
+ toTokenWithInfo(this.id, session),
265
+ repo.owner,
266
+ repo.name,
267
+ branch,
268
+ {
269
+ ...opts,
270
+ include: include?.map(s => toGitLabMergeRequestState(s)),
271
+ baseUrl: this.apiBaseUrl,
272
+ },
273
+ );
274
+ }
275
+
276
+ protected override async getProviderPullRequestForCommit(
277
+ session: ProviderAuthenticationSession,
278
+ repo: GitLabRepositoryDescriptor,
279
+ rev: string,
280
+ ): Promise<PullRequest | undefined> {
281
+ return (await this.authenticationService.apis.gitlab)?.getPullRequestForCommit(
282
+ this,
283
+ toTokenWithInfo(this.id, session),
284
+ repo.owner,
285
+ repo.name,
286
+ rev,
287
+ {
288
+ baseUrl: this.apiBaseUrl,
289
+ },
290
+ );
291
+ }
292
+
293
+ protected override async getProviderPullRequest(
294
+ session: ProviderAuthenticationSession,
295
+ resource: GitLabRepositoryDescriptor,
296
+ id: string,
297
+ ): Promise<PullRequest | undefined> {
298
+ return (await this.authenticationService.apis.gitlab)?.getPullRequest(
299
+ this,
300
+ toTokenWithInfo(this.id, session),
301
+ resource.owner,
302
+ resource.name,
303
+ parseInt(id, 10),
304
+ {
305
+ baseUrl: this.apiBaseUrl,
306
+ },
307
+ );
308
+ }
309
+
310
+ public override async getRepoInfo(repo: {
311
+ owner: string;
312
+ name: string;
313
+ project?: string;
314
+ connectionId?: string;
315
+ }): Promise<ProviderRepository | undefined> {
316
+ const api = await this.getProvidersApi();
317
+ // `connectionId` targets a specific account (multi-account); omitted reads the primary.
318
+ const session = await this.resolveReadSession(repo.connectionId, undefined);
319
+ if (session == null) return undefined;
320
+
321
+ return api.getRepo(toTokenWithInfo(this.id, session), repo.owner, repo.name, repo.project, {
322
+ isPAT: this.isEnterprise,
323
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
324
+ });
325
+ }
326
+
327
+ protected override async getProviderRepositoryMetadata(
328
+ session: ProviderAuthenticationSession,
329
+ repo: GitLabRepositoryDescriptor,
330
+ cancellation?: AbortSignal,
331
+ ): Promise<RepositoryMetadata | undefined> {
332
+ return (await this.authenticationService.apis.gitlab)?.getRepositoryMetadata(
333
+ this,
334
+ toTokenWithInfo(this.id, session),
335
+ repo.owner,
336
+ repo.name,
337
+ {
338
+ baseUrl: this.apiBaseUrl,
339
+ },
340
+ cancellation,
341
+ );
342
+ }
343
+
344
+ protected override async getProviderOrganizationsForUser(
345
+ session: ProviderAuthenticationSession,
346
+ ): Promise<ProviderHierarchyResult<ProviderOrganization> | undefined> {
347
+ const api = await this.getProvidersApi();
348
+ const result = await api.getGitlabGroupsForCurrentUser(toTokenWithInfo(this.id, session), {
349
+ isPAT: this.isEnterprise,
350
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
351
+ });
352
+ return {
353
+ values: result.values.map(g => ({ id: g.id, providerId: this.id, name: g.fullPath, url: g.webUrl })),
354
+ ...(result.truncated ? { truncated: true } : {}),
355
+ ...(result.metadata != null ? { metadata: result.metadata } : {}),
356
+ };
357
+ }
358
+
359
+ /**
360
+ * GitLab has no group-scoped repos endpoint, so each page is a page of the current user's member repos
361
+ * across all namespaces, filtered to `org` and its subgroups (mirroring gkcli's `gitlabOrgMatches`).
362
+ * Follow `paging.cursor` to page the full list; repos the user isn't a member of aren't returned.
363
+ * Because the filter is applied per page, a page can come back with `values: []` while
364
+ * `paging.more` is still `true` (e.g. a page full of repos outside `org`) — don't treat an empty
365
+ * page as the end of pagination, only `paging.more`/`collectPagedResults` reaching exhaustion.
366
+ */
367
+ protected override async getProviderRepositoriesForOrg(
368
+ session: ProviderAuthenticationSession,
369
+ org: string,
370
+ options?: { cursor?: string },
371
+ ): Promise<ProviderHierarchyResult<ProviderRepository> | undefined> {
372
+ const api = await this.getProvidersApi();
373
+ const result = await api.getReposForCurrentUser(toTokenWithInfo(this.id, session), {
374
+ isPAT: this.isEnterprise,
375
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
376
+ cursor: options?.cursor,
377
+ });
378
+ return {
379
+ values: result.values.filter(r => matchesGitLabOrgNamespace(r.namespace, org)),
380
+ ...(result.paging != null ? { paging: result.paging } : {}),
381
+ };
382
+ }
383
+
384
+ protected override async getProviderRepositoriesForUser(
385
+ session: ProviderAuthenticationSession,
386
+ options?: { cursor?: string },
387
+ ): Promise<ProviderHierarchyResult<ProviderRepository> | undefined> {
388
+ const api = await this.getProvidersApi();
389
+ // GitLab's membership read is already user-affiliated, so the account-wide walk is the unfiltered
390
+ // version of the per-org read above (which pages the same source and filters by namespace).
391
+ return api.getReposForCurrentUser(toTokenWithInfo(this.id, session), {
392
+ isPAT: this.isEnterprise,
393
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
394
+ cursor: options?.cursor,
395
+ });
396
+ }
397
+
398
+ protected override async searchProviderMyPullRequests(
399
+ session: ProviderAuthenticationSession,
400
+ repos?: GitLabRepositoryDescriptor[],
401
+ _cancellation?: AbortSignal,
402
+ _silent?: boolean,
403
+ state?: PullRequestStateFilter,
404
+ _options?: SearchMyPullRequestsOptions,
405
+ ): Promise<PullRequest[] | undefined> {
406
+ const api = await this.getProvidersApi();
407
+ // Resolve the username from THIS session's token (multi-account: `session` may be a non-primary
408
+ // connection); `getCurrentAccount()` would use the primary `_session` and filter by the wrong user.
409
+ const username = (await this.getProviderCurrentAccount(session))?.username;
410
+ if (!username) {
411
+ return Promise.resolve([]);
412
+ }
413
+
414
+ const apiResult = await api.getPullRequestsForUser(toTokenWithInfo(this.id, session), username, {
415
+ isPAT: this.isEnterprise,
416
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
417
+ states: toProviderPullRequestStates(state),
418
+ });
419
+
420
+ if (apiResult == null) {
421
+ return Promise.resolve([]);
422
+ }
423
+
424
+ // now I'm going to filter prs from the result according to the repos parameter
425
+ let prs;
426
+ if (repos != null) {
427
+ const repoMap = new Map<string, GitLabRepositoryDescriptor>();
428
+ for (const repo of repos) {
429
+ repoMap.set(`${repo.owner}/${repo.name}`, repo);
430
+ }
431
+ prs = apiResult.values.filter(pr => {
432
+ const repo = repoMap.get(`${pr.repository.owner.login}/${pr.repository.name}`);
433
+ return repo != null;
434
+ });
435
+ } else {
436
+ prs = apiResult.values;
437
+ }
438
+
439
+ const results: IterableIterator<PullRequest> = uniqueBy(
440
+ [
441
+ ...prs
442
+ .filter(pr => {
443
+ const isAssignee = pr.assignees?.some(a => a.username === username);
444
+ const isRequestedReviewer = pr.reviews?.some(
445
+ // Match only reviews assigned to the current user; a bare `state === ReviewRequested`
446
+ // check would also match reviews requested from OTHER people, leaking their MRs in.
447
+ review =>
448
+ review.reviewer?.username === username &&
449
+ review.state === ProviderPullRequestReviewState.ReviewRequested,
450
+ );
451
+ const isAuthor = pr.author?.username === username;
452
+ // It seems like GitLab doesn't give us mentioned PRs.
453
+ // const isMentioned = ???;
454
+
455
+ return isAssignee || isRequestedReviewer || isAuthor;
456
+ })
457
+ .map(pr => fromGitLabMergeRequestProvidersApi(pr, this)),
458
+ ],
459
+ r => r.url,
460
+ (original, _current) => original,
461
+ );
462
+
463
+ return [...results];
464
+ }
465
+
466
+ protected override async getProviderMyPullRequestsForUser(
467
+ session: ProviderAuthenticationSession,
468
+ options?: { state?: PullRequestStateFilter[]; cursor?: string; filters?: PullRequestFilter[] },
469
+ ): Promise<ProviderApiPagedResult<ProviderPullRequest> | undefined> {
470
+ // Resolve the username from THIS session's token (multi-account safe) to scope the account-wide read.
471
+ const username = (await this.getProviderCurrentAccount(session))?.username;
472
+ if (username == null) return undefined;
473
+
474
+ const api = await this.getProvidersApi();
475
+ const requested = options?.filters?.length ? new Set(options.filters) : undefined;
476
+ const associations: GitLabPullRequestAssociation[] =
477
+ requested == null
478
+ ? ['authored', 'assigned', 'reviewRequested']
479
+ : [...requested]
480
+ .filter(
481
+ (filter): filter is Exclude<PullRequestFilter, PullRequestFilter.Mention> =>
482
+ filter !== PullRequestFilter.Mention,
483
+ )
484
+ .map(filter => gitLabAssociationForFilter[filter]);
485
+ const cursors = parseGitLabPullRequestFacetCursor(options?.cursor);
486
+ const resumable = associations.filter(association => cursors[association] != null);
487
+ const associationsToQuery = options?.cursor != null && resumable.length > 0 ? resumable : associations;
488
+ const tokenWithInfo = toTokenWithInfo(this.id, session);
489
+ const settled = await Promise.allSettled(
490
+ associationsToQuery.map(async association => ({
491
+ association: association,
492
+ result: await api.getGitLabPullRequestsForUserAssociation(tokenWithInfo, username, association, {
493
+ isPAT: this.isEnterprise,
494
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
495
+ states: toProviderPullRequestStates(options?.state),
496
+ cursor: cursors[association],
497
+ }),
498
+ })),
499
+ );
500
+ if (settled.every(outcome => outcome.status === 'rejected')) {
501
+ const first = settled[0];
502
+ if (first?.status === 'rejected') throw first.reason;
503
+ }
504
+
505
+ const values = new Map<string, ProviderPullRequest>();
506
+ const nextCursors: GitLabPullRequestFacetCursor = {};
507
+ const failures: CollectionScopeFailure[] = [];
508
+ let aggregateMetadata: CollectionMetadata | undefined;
509
+ let truncated = false;
510
+ let unkeyedPullRequest = 0;
511
+ for (let index = 0; index < settled.length; index++) {
512
+ const outcome = settled[index];
513
+ const association = associationsToQuery[index];
514
+ if (outcome == null || association == null) continue;
515
+ if (outcome.status === 'rejected') {
516
+ const failure = toCollectionScopeFailure({ providerId: this.id }, outcome.reason);
517
+ failures.push({
518
+ ...failure,
519
+ message: `GitLab ${association} pull requests could not be read${
520
+ failure.message != null ? `: ${failure.message}` : ''
521
+ }`,
522
+ });
523
+ truncated = true;
524
+ continue;
525
+ }
526
+
527
+ const result = outcome.value.result;
528
+ aggregateMetadata = mergeCollectionMetadata(aggregateMetadata, result.metadata);
529
+ truncated ||=
530
+ result.paging?.truncated === true ||
531
+ (result.metadata != null && result.metadata.completeness !== 'complete');
532
+ for (const pr of result.values) {
533
+ const identity = getProviderPullRequestIdentity(pr) ?? `unkeyed:${unkeyedPullRequest++}`;
534
+ if (!values.has(identity)) {
535
+ values.set(identity, pr);
536
+ }
537
+ }
538
+ if (result.paging?.more && result.paging.cursor != null && result.paging.cursor !== '{}') {
539
+ nextCursors[association] = result.paging.cursor;
540
+ }
541
+ }
542
+
543
+ aggregateMetadata = mergeCollectionMetadata(
544
+ aggregateMetadata,
545
+ failures.length > 0 ? { completeness: 'partial', failures: failures } : undefined,
546
+ );
547
+ const hasMore = Object.keys(nextCursors).length > 0;
548
+ return {
549
+ values: [...values.values()],
550
+ paging: {
551
+ more: hasMore,
552
+ cursor: hasMore ? JSON.stringify({ type: 'gitlab-associations', cursors: nextCursors }) : '{}',
553
+ truncated: truncated || undefined,
554
+ },
555
+ ...(aggregateMetadata != null ? { metadata: aggregateMetadata } : {}),
556
+ };
557
+ }
558
+
559
+ protected override async searchProviderMyIssues(
560
+ session: ProviderAuthenticationSession,
561
+ repos?: GitLabRepositoryDescriptor[],
562
+ ): Promise<IssueShape[] | undefined> {
563
+ const api = await this.authenticationService.apis.gitlab;
564
+ const providerApi = await this.getProvidersApi();
565
+ if (!api || !repos) {
566
+ return undefined;
567
+ }
568
+
569
+ const repoIdsResult = await Promise.allSettled(
570
+ repos.map(
571
+ (r: GitLabRepositoryDescriptor): Promise<string | undefined> =>
572
+ api.getProjectId(
573
+ this,
574
+ toTokenWithInfo(this.id, session),
575
+ r.owner,
576
+ r.name,
577
+ this.apiBaseUrl,
578
+ undefined,
579
+ ),
580
+ ) ?? [],
581
+ );
582
+ const repoInput = repoIdsResult
583
+ .map(result => (result.status === 'fulfilled' ? result.value : undefined))
584
+ .filter((r): r is string => r != null);
585
+ const apiResult = await providerApi.getIssuesForRepos(toTokenWithInfo(this.id, session), repoInput, {
586
+ isPAT: this.isEnterprise,
587
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
588
+ });
589
+
590
+ return apiResult.values
591
+ .map(issue => toIssueShape(issue, this))
592
+ .filter((result): result is IssueShape => result != null);
593
+ }
594
+
595
+ /**
596
+ * Account-wide "my issues" for GitLab. GitLab's repo-scoped issue read bails without repos, and GitLab has
597
+ * no GraphQL cross-project issue field, so this goes through the SDK's REST `GET /issues` read
598
+ * ({@link ProvidersApi.getIssuesForCurrentUser}). Open issues only (matching GitHub's baked `is:open`).
599
+ *
600
+ * Default scope is the current user's assigned issues; `includeAllAssignees` broadens to `scope=all` (every
601
+ * visible issue, any assignee). The read is numbered-paged, so each page is drained to exhaustion, bounded by
602
+ * a defensive backstop — a hit backstop is reported as `truncated` so the facade surfaces an incomplete read
603
+ * rather than publishing a partial list as complete.
604
+ *
605
+ * `options.filters` selects which relationships to read: `Assignee` (the default when omitted) and `Author`,
606
+ * each its own drain, unioned by url — see the comment on `passes` for why they can't be one request. Mention
607
+ * is absent because GitLab's REST read exposes no first-class mention filter, and approximating it via `search`
608
+ * would return a different set than asked for; the facade refuses it
609
+ * (see `ProviderMetadata.supportedAccountWideIssueFilters`).
610
+ */
611
+ protected override async searchProviderMyIssuesWithTruncation(
612
+ session: ProviderAuthenticationSession,
613
+ _resources?: GitLabRepositoryDescriptor[],
614
+ cancellation?: AbortSignal,
615
+ options?: SearchMyIssuesOptions,
616
+ ): Promise<AccountWideIssuesResult | undefined> {
617
+ if (cancellation?.aborted) throw new CancellationError();
618
+
619
+ const api = await this.getProvidersApi();
620
+
621
+ // Resolve the username from THIS session's token (multi-account safe), matching the PR account-wide read.
622
+ // Only needed to scope the default (assigned-to-me) read; the all-assignees broaden drops it.
623
+ const username = options?.includeAllAssignees
624
+ ? undefined
625
+ : (await this.getProviderCurrentAccount(session))?.username;
626
+ if (!options?.includeAllAssignees && username == null) return undefined;
627
+ if (cancellation?.aborted) throw new CancellationError();
628
+
629
+ const baseUrl = this.isEnterprise ? `https://${this.domain}` : undefined;
630
+ const maxPages = 20;
631
+ // Dedupe by `url`, not `IssueShape.id`: for GitLab `id` is the per-project `iid`, which collides across
632
+ // projects in an account-wide read (two repos both have issue `#1`), so an id-keyed map would silently
633
+ // drop distinct issues. `url` is globally unique. Matches the GitHub/GitLab account-wide PR reads.
634
+ const issuesByUrl = new Map<string, IssueShape>();
635
+ let truncated = false;
636
+ let collectionMetadata: CollectionMetadata | undefined;
637
+
638
+ // One drain PER requested relationship, unioned by url. The account-wide filter contract is a union
639
+ // (`authored ∪ assigned`, matching GitHub's three searches and Azure's two drains), and GitLab can express
640
+ // only one relationship per REST call: `assignee_username` and `author_username` on the same request
641
+ // compose with AND, so a single combined call would return the intersection — issues the user both opened
642
+ // and is assigned to — instead of either set. Overlap between the passes is collapsed by the url map.
643
+ const passes: { scope: 'assigned_to_me' | 'all'; assigneeUsername?: string; authorUsername?: string }[] = [];
644
+ if (options?.includeAllAssignees) {
645
+ // Broadens past "mine" entirely: every visible issue, any assignee. Contradicts `filters`, which the
646
+ // facade refuses before reaching here.
647
+ passes.push({ scope: 'all' });
648
+ } else {
649
+ const filters = options?.filters;
650
+ // Assignee is this read's default relationship, so it runs unless the caller narrowed to author alone.
651
+ if (filters == null || filters.length === 0 || filters.includes(IssueFilter.Assignee)) {
652
+ passes.push({ scope: 'assigned_to_me', assigneeUsername: username });
653
+ }
654
+ // `scope: 'all'` is required for the author axis: paired with `assigned_to_me` GitLab would intersect
655
+ // the two rather than read authored issues.
656
+ if (filters?.includes(IssueFilter.Author)) {
657
+ passes.push({ scope: 'all', authorUsername: username });
658
+ }
659
+ }
660
+
661
+ for (const pass of passes) {
662
+ const result = await collectProviderPagedResult(
663
+ async cursor => {
664
+ if (cancellation?.aborted) throw new CancellationError();
665
+
666
+ const page = await api.getIssuesForCurrentUser(toTokenWithInfo(this.id, session), {
667
+ ...pass,
668
+ isPAT: this.isEnterprise,
669
+ baseUrl: baseUrl,
670
+ cursor: cursor,
671
+ });
672
+ if (cancellation?.aborted) throw new CancellationError();
673
+ return page;
674
+ },
675
+ maxPages,
676
+ { providerId: this.id },
677
+ );
678
+
679
+ for (const issue of result.values) {
680
+ const shape = toIssueShape(issue, this);
681
+ if (shape != null && !issuesByUrl.has(shape.url)) {
682
+ issuesByUrl.set(shape.url, shape);
683
+ }
684
+ }
685
+ truncated ||= result.truncated === true;
686
+ collectionMetadata = mergeCollectionMetadata(collectionMetadata, result.metadata);
687
+ }
688
+
689
+ return {
690
+ values: [...issuesByUrl.values()],
691
+ truncated: truncated,
692
+ ...(collectionMetadata != null ? { metadata: collectionMetadata } : {}),
693
+ };
694
+ }
695
+
696
+ protected override async searchProviderPullRequests(
697
+ session: ProviderAuthenticationSession,
698
+ searchQuery: string,
699
+ repos?: GitLabRepositoryDescriptor[],
700
+ cancellation?: AbortSignal,
701
+ options?: { include?: PullRequestState[] },
702
+ ): Promise<PullRequest[] | undefined> {
703
+ const api = await this.authenticationService.apis.gitlab;
704
+ if (!api) {
705
+ return undefined;
706
+ }
707
+
708
+ return api.searchPullRequests(
709
+ this,
710
+ toTokenWithInfo(this.id, session),
711
+ {
712
+ search: searchQuery,
713
+ repos: repos?.map(r => `${r.owner}/${r.name}`),
714
+ baseUrl: this.apiBaseUrl,
715
+ include: options?.include,
716
+ },
717
+ cancellation,
718
+ );
719
+ }
720
+
721
+ protected override async mergeProviderPullRequest(
722
+ session: ProviderAuthenticationSession,
723
+ pr: PullRequest,
724
+ options?: {
725
+ mergeMethod?: PullRequestMergeMethod;
726
+ },
727
+ ): Promise<boolean> {
728
+ if (!this.isPullRequest(pr)) return false;
729
+
730
+ const api = await this.getProvidersApi();
731
+ try {
732
+ const res = await api.mergePullRequest(toTokenWithInfo(this.id, session), pr, {
733
+ ...options,
734
+ isPAT: this.isEnterprise,
735
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
736
+ });
737
+ return res;
738
+ } catch (ex) {
739
+ void this.showMergeErrorMessage(ex);
740
+ return false;
741
+ }
742
+ }
743
+
744
+ private async showMergeErrorMessage(ex: Error) {
745
+ // Unfortunately, providers-api does not let us know the exact reason for the error,
746
+ // so we show the same message to everything.
747
+ // When we update the library, we can improve the error handling here.
748
+ const reauthenticate = await this.ctx.hooks?.onReauthenticationRequired?.(
749
+ `${ex.message}. Would you like to try reauthenticating to provide additional access? Your token needs to have the 'api' scope to perform merge.`,
750
+ );
751
+
752
+ if (reauthenticate) {
753
+ await this.reauthenticate();
754
+ }
755
+ }
756
+
757
+ private isPullRequest(pr: PullRequest | { id: string; headRefSha: string }): pr is PullRequest {
758
+ return (pr as PullRequest).refs != null;
759
+ }
760
+
761
+ protected override async getProviderCurrentAccount(
762
+ session: ProviderAuthenticationSession,
763
+ ): Promise<Account | undefined> {
764
+ const api = await this.getProvidersApi();
765
+ const currentUser = await api.getCurrentUser(toTokenWithInfo(this.id, session), {
766
+ isPAT: this.isEnterprise,
767
+ baseUrl: this.isEnterprise ? `https://${this.domain}` : undefined,
768
+ });
769
+ if (currentUser == null) return undefined;
770
+
771
+ return {
772
+ provider: {
773
+ id: this.id,
774
+ name: this.name,
775
+ domain: this.domain,
776
+ icon: this.icon,
777
+ },
778
+ id: currentUser.id,
779
+ name: currentUser.name || undefined,
780
+ email: currentUser.email || undefined,
781
+ avatarUrl: currentUser.avatarUrl || undefined,
782
+ username: currentUser.username || undefined,
783
+ };
784
+ }
785
+
786
+ protected override getProviderPullRequestIdentityFromMaybeUrl(search: string): PullRequestUrlIdentity | undefined {
787
+ return getGitLabPullRequestIdentityFromMaybeUrl(search, this.id);
788
+ }
789
+ }
790
+
791
+ export class GitLabIntegration extends GitLabIntegrationBase<GitCloudHostIntegrationId.GitLab> {
792
+ readonly authProvider = authProvider;
793
+ readonly id = GitCloudHostIntegrationId.GitLab;
794
+ protected readonly key = this.id;
795
+ readonly name: string = 'GitLab';
796
+ get domain(): string {
797
+ return metadata.domain;
798
+ }
799
+
800
+ protected get apiBaseUrl(): string {
801
+ return 'https://gitlab.com/api';
802
+ }
803
+
804
+ override access(): Promise<boolean> {
805
+ // Always allow GitHub cloud integration access
806
+ return Promise.resolve(true);
807
+ }
808
+ }
809
+
810
+ export class GitLabSelfHostedIntegration extends GitLabIntegrationBase<GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted> {
811
+ readonly authProvider = cloudEnterpriseAuthProvider;
812
+ readonly id = GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted;
813
+ protected readonly key;
814
+ readonly name = 'GitLab Self-Hosted';
815
+ get domain(): string {
816
+ return this._domain;
817
+ }
818
+ protected override get apiBaseUrl(): string {
819
+ return `https://${this._domain}/api`;
820
+ }
821
+
822
+ constructor(
823
+ ctx: IntegrationServiceContext,
824
+ authenticationService: IntegrationAuthenticationService,
825
+ getProvidersApi: () => Promise<ProvidersApi>,
826
+ didChangeConnection: Emitter<IntegrationConnectionChangeEvent>,
827
+ private readonly _domain: string,
828
+ ) {
829
+ super(ctx, authenticationService, getProvidersApi, didChangeConnection);
830
+ this.key = `${this.id}:${this.domain}` as const;
831
+ }
832
+ }