@gitkraken/core-gitlens 0.4.0 → 0.4.101

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 (1051) hide show
  1. package/CHANGELOG.md +74 -1
  2. package/README.md +9 -2
  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.map +1 -1
  8. package/dist/git/errors.d.ts +31 -1
  9. package/dist/git/errors.d.ts.map +1 -1
  10. package/dist/git/errors.js +29 -0
  11. package/dist/git/errors.js.map +1 -1
  12. package/dist/git/models/author.d.ts.map +1 -1
  13. package/dist/git/models/author.js.map +1 -1
  14. package/dist/git/models/autolink.d.ts.map +1 -1
  15. package/dist/git/models/autolink.js.map +1 -1
  16. package/dist/git/models/blame.d.ts.map +1 -1
  17. package/dist/git/models/blame.js.map +1 -1
  18. package/dist/git/models/branch.d.ts.map +1 -1
  19. package/dist/git/models/branch.js.map +1 -1
  20. package/dist/git/models/commit.d.ts.map +1 -1
  21. package/dist/git/models/commit.js +1 -1
  22. package/dist/git/models/commit.js.map +1 -1
  23. package/dist/git/models/contributor.d.ts.map +1 -1
  24. package/dist/git/models/contributor.js.map +1 -1
  25. package/dist/git/models/defaultBranch.d.ts.map +1 -1
  26. package/dist/git/models/defaultBranch.js.map +1 -1
  27. package/dist/git/models/diff.d.ts.map +1 -1
  28. package/dist/git/models/diff.js.map +1 -1
  29. package/dist/git/models/file.d.ts.map +1 -1
  30. package/dist/git/models/file.js.map +1 -1
  31. package/dist/git/models/fileChange.d.ts.map +1 -1
  32. package/dist/git/models/fileChange.js.map +1 -1
  33. package/dist/git/models/fileStatus.d.ts +22 -22
  34. package/dist/git/models/fileStatus.d.ts.map +1 -1
  35. package/dist/git/models/fileStatus.js.map +1 -1
  36. package/dist/git/models/graph.d.ts +122 -1
  37. package/dist/git/models/graph.d.ts.map +1 -1
  38. package/dist/git/models/graph.js +4 -0
  39. package/dist/git/models/graph.js.map +1 -1
  40. package/dist/git/models/graphSearch.d.ts.map +1 -1
  41. package/dist/git/models/graphSearch.js.map +1 -1
  42. package/dist/git/models/graphSession.d.ts +177 -0
  43. package/dist/git/models/graphSession.d.ts.map +1 -0
  44. package/dist/git/models/graphSession.js +7 -0
  45. package/dist/git/models/graphSession.js.map +1 -0
  46. package/dist/git/models/issue.d.ts +12 -2
  47. package/dist/git/models/issue.d.ts.map +1 -1
  48. package/dist/git/models/issue.js +3 -1
  49. package/dist/git/models/issue.js.map +1 -1
  50. package/dist/git/models/issueOrPullRequest.d.ts.map +1 -1
  51. package/dist/git/models/issueOrPullRequest.js.map +1 -1
  52. package/dist/git/models/lineRange.d.ts.map +1 -1
  53. package/dist/git/models/lineRange.js.map +1 -1
  54. package/dist/git/models/log.d.ts.map +1 -1
  55. package/dist/git/models/log.js.map +1 -1
  56. package/dist/git/models/mergeConflicts.d.ts.map +1 -1
  57. package/dist/git/models/mergeConflicts.js.map +1 -1
  58. package/dist/git/models/patch.d.ts.map +1 -1
  59. package/dist/git/models/patch.js.map +1 -1
  60. package/dist/git/models/pausedOperationStatus.d.ts.map +1 -1
  61. package/dist/git/models/pausedOperationStatus.js.map +1 -1
  62. package/dist/git/models/pullRequest.d.ts +27 -2
  63. package/dist/git/models/pullRequest.d.ts.map +1 -1
  64. package/dist/git/models/pullRequest.js +7 -1
  65. package/dist/git/models/pullRequest.js.map +1 -1
  66. package/dist/git/models/rebase.d.ts.map +1 -1
  67. package/dist/git/models/rebase.js.map +1 -1
  68. package/dist/git/models/reference.d.ts.map +1 -1
  69. package/dist/git/models/reference.js.map +1 -1
  70. package/dist/git/models/reflog.d.ts.map +1 -1
  71. package/dist/git/models/reflog.js.map +1 -1
  72. package/dist/git/models/remote.d.ts.map +1 -1
  73. package/dist/git/models/remote.js.map +1 -1
  74. package/dist/git/models/remoteProvider.d.ts.map +1 -1
  75. package/dist/git/models/remoteProvider.js.map +1 -1
  76. package/dist/git/models/remoteResource.d.ts.map +1 -1
  77. package/dist/git/models/remoteResource.js.map +1 -1
  78. package/dist/git/models/repository.d.ts +20 -2
  79. package/dist/git/models/repository.d.ts.map +1 -1
  80. package/dist/git/models/repository.js +19 -0
  81. package/dist/git/models/repository.js.map +1 -1
  82. package/dist/git/models/repositoryChangeEvent.d.ts.map +1 -1
  83. package/dist/git/models/repositoryChangeEvent.js.map +1 -1
  84. package/dist/git/models/repositoryIdentities.d.ts.map +1 -1
  85. package/dist/git/models/repositoryIdentities.js.map +1 -1
  86. package/dist/git/models/repositoryMetadata.d.ts.map +1 -1
  87. package/dist/git/models/repositoryMetadata.js.map +1 -1
  88. package/dist/git/models/resourceDescriptor.d.ts +16 -0
  89. package/dist/git/models/resourceDescriptor.d.ts.map +1 -1
  90. package/dist/git/models/resourceDescriptor.js.map +1 -1
  91. package/dist/git/models/revision.d.ts.map +1 -1
  92. package/dist/git/models/revision.js.map +1 -1
  93. package/dist/git/models/search.d.ts.map +1 -1
  94. package/dist/git/models/search.js.map +1 -1
  95. package/dist/git/models/shortlog.d.ts.map +1 -1
  96. package/dist/git/models/shortlog.js.map +1 -1
  97. package/dist/git/models/signature.d.ts +14 -0
  98. package/dist/git/models/signature.d.ts.map +1 -1
  99. package/dist/git/models/signature.js.map +1 -1
  100. package/dist/git/models/staging.d.ts.map +1 -1
  101. package/dist/git/models/staging.js.map +1 -1
  102. package/dist/git/models/stash.d.ts.map +1 -1
  103. package/dist/git/models/stash.js.map +1 -1
  104. package/dist/git/models/status.d.ts.map +1 -1
  105. package/dist/git/models/status.js.map +1 -1
  106. package/dist/git/models/statusFile.d.ts.map +1 -1
  107. package/dist/git/models/statusFile.js.map +1 -1
  108. package/dist/git/models/tag.d.ts +11 -1
  109. package/dist/git/models/tag.d.ts.map +1 -1
  110. package/dist/git/models/tag.js +9 -2
  111. package/dist/git/models/tag.js.map +1 -1
  112. package/dist/git/models/tree.d.ts.map +1 -1
  113. package/dist/git/models/tree.js.map +1 -1
  114. package/dist/git/models/user.d.ts.map +1 -1
  115. package/dist/git/models/user.js.map +1 -1
  116. package/dist/git/models/worktree.d.ts.map +1 -1
  117. package/dist/git/models/worktree.js.map +1 -1
  118. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  119. package/dist/git/parsers/diffParser.js +1 -1
  120. package/dist/git/parsers/diffParser.js.map +1 -1
  121. package/dist/git/parsers/rebaseTodoParser.d.ts.map +1 -1
  122. package/dist/git/parsers/rebaseTodoParser.js.map +1 -1
  123. package/dist/git/providers/blame.d.ts.map +1 -1
  124. package/dist/git/providers/blame.js.map +1 -1
  125. package/dist/git/providers/branches.d.ts +8 -1
  126. package/dist/git/providers/branches.d.ts.map +1 -1
  127. package/dist/git/providers/branches.js.map +1 -1
  128. package/dist/git/providers/commits.d.ts +6 -1
  129. package/dist/git/providers/commits.d.ts.map +1 -1
  130. package/dist/git/providers/commits.js.map +1 -1
  131. package/dist/git/providers/config.d.ts +6 -2
  132. package/dist/git/providers/config.d.ts.map +1 -1
  133. package/dist/git/providers/config.js.map +1 -1
  134. package/dist/git/providers/contributors.d.ts.map +1 -1
  135. package/dist/git/providers/contributors.js.map +1 -1
  136. package/dist/git/providers/diff.d.ts.map +1 -1
  137. package/dist/git/providers/diff.js.map +1 -1
  138. package/dist/git/providers/graph.d.ts +55 -1
  139. package/dist/git/providers/graph.d.ts.map +1 -1
  140. package/dist/git/providers/graph.js.map +1 -1
  141. package/dist/git/providers/operations.d.ts.map +1 -1
  142. package/dist/git/providers/operations.js.map +1 -1
  143. package/dist/git/providers/patch.d.ts.map +1 -1
  144. package/dist/git/providers/patch.js.map +1 -1
  145. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  146. package/dist/git/providers/pausedOperations.js.map +1 -1
  147. package/dist/git/providers/provider.d.ts.map +1 -1
  148. package/dist/git/providers/provider.js.map +1 -1
  149. package/dist/git/providers/refs.d.ts.map +1 -1
  150. package/dist/git/providers/refs.js.map +1 -1
  151. package/dist/git/providers/remotes.d.ts.map +1 -1
  152. package/dist/git/providers/remotes.js.map +1 -1
  153. package/dist/git/providers/revision.d.ts.map +1 -1
  154. package/dist/git/providers/revision.js.map +1 -1
  155. package/dist/git/providers/shared/remotes.d.ts.map +1 -1
  156. package/dist/git/providers/shared/remotes.js.map +1 -1
  157. package/dist/git/providers/staging.d.ts.map +1 -1
  158. package/dist/git/providers/staging.js.map +1 -1
  159. package/dist/git/providers/stash.d.ts.map +1 -1
  160. package/dist/git/providers/stash.js.map +1 -1
  161. package/dist/git/providers/status.d.ts +1 -0
  162. package/dist/git/providers/status.d.ts.map +1 -1
  163. package/dist/git/providers/status.js.map +1 -1
  164. package/dist/git/providers/tags.d.ts.map +1 -1
  165. package/dist/git/providers/tags.js.map +1 -1
  166. package/dist/git/providers/types.d.ts.map +1 -1
  167. package/dist/git/providers/types.js.map +1 -1
  168. package/dist/git/providers/worktrees.d.ts +3 -1
  169. package/dist/git/providers/worktrees.d.ts.map +1 -1
  170. package/dist/git/providers/worktrees.js.map +1 -1
  171. package/dist/git/remotes/azure-devops.d.ts.map +1 -1
  172. package/dist/git/remotes/azure-devops.js +27 -31
  173. package/dist/git/remotes/azure-devops.js.map +1 -1
  174. package/dist/git/remotes/bitbucket-server.d.ts.map +1 -1
  175. package/dist/git/remotes/bitbucket-server.js +21 -23
  176. package/dist/git/remotes/bitbucket-server.js.map +1 -1
  177. package/dist/git/remotes/bitbucket.d.ts.map +1 -1
  178. package/dist/git/remotes/bitbucket.js +21 -23
  179. package/dist/git/remotes/bitbucket.js.map +1 -1
  180. package/dist/git/remotes/custom.d.ts.map +1 -1
  181. package/dist/git/remotes/custom.js.map +1 -1
  182. package/dist/git/remotes/gerrit.d.ts.map +1 -1
  183. package/dist/git/remotes/gerrit.js +11 -13
  184. package/dist/git/remotes/gerrit.js.map +1 -1
  185. package/dist/git/remotes/gitea.d.ts.map +1 -1
  186. package/dist/git/remotes/gitea.js +12 -14
  187. package/dist/git/remotes/gitea.js.map +1 -1
  188. package/dist/git/remotes/github.d.ts.map +1 -1
  189. package/dist/git/remotes/github.js +54 -56
  190. package/dist/git/remotes/github.js.map +1 -1
  191. package/dist/git/remotes/gitlab.d.ts.map +1 -1
  192. package/dist/git/remotes/gitlab.js +93 -95
  193. package/dist/git/remotes/gitlab.js.map +1 -1
  194. package/dist/git/remotes/google-source.d.ts.map +1 -1
  195. package/dist/git/remotes/google-source.js.map +1 -1
  196. package/dist/git/remotes/matcher.d.ts.map +1 -1
  197. package/dist/git/remotes/matcher.js.map +1 -1
  198. package/dist/git/run.types.d.ts +62 -3
  199. package/dist/git/run.types.d.ts.map +1 -1
  200. package/dist/git/service.d.ts.map +1 -1
  201. package/dist/git/utils/autolink.utils.d.ts.map +1 -1
  202. package/dist/git/utils/autolink.utils.js.map +1 -1
  203. package/dist/git/utils/blame.utils.d.ts.map +1 -1
  204. package/dist/git/utils/blame.utils.js.map +1 -1
  205. package/dist/git/utils/branch.utils.d.ts.map +1 -1
  206. package/dist/git/utils/branch.utils.js +12 -1
  207. package/dist/git/utils/branch.utils.js.map +1 -1
  208. package/dist/git/utils/commit.utils.d.ts.map +1 -1
  209. package/dist/git/utils/commit.utils.js.map +1 -1
  210. package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -1
  211. package/dist/git/utils/conflictResolution.utils.js.map +1 -1
  212. package/dist/git/utils/contributor.utils.d.ts +1 -1
  213. package/dist/git/utils/contributor.utils.d.ts.map +1 -1
  214. package/dist/git/utils/contributor.utils.js +1 -2
  215. package/dist/git/utils/contributor.utils.js.map +1 -1
  216. package/dist/git/utils/fetch.utils.d.ts.map +1 -1
  217. package/dist/git/utils/fetch.utils.js.map +1 -1
  218. package/dist/git/utils/fileStatus.utils.d.ts +7 -0
  219. package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
  220. package/dist/git/utils/fileStatus.utils.js +6 -0
  221. package/dist/git/utils/fileStatus.utils.js.map +1 -1
  222. package/dist/git/utils/graph.utils.d.ts +20 -0
  223. package/dist/git/utils/graph.utils.d.ts.map +1 -0
  224. package/dist/git/utils/graph.utils.js +40 -0
  225. package/dist/git/utils/graph.utils.js.map +1 -0
  226. package/dist/git/utils/issue.utils.d.ts.map +1 -1
  227. package/dist/git/utils/issue.utils.js +1 -0
  228. package/dist/git/utils/issue.utils.js.map +1 -1
  229. package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +1 -1
  230. package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -1
  231. package/dist/git/utils/mergeConflicts.utils.d.ts.map +1 -1
  232. package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
  233. package/dist/git/utils/pausedOperationStatus.utils.d.ts +13 -13
  234. package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
  235. package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
  236. package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
  237. package/dist/git/utils/pullRequest.utils.js +9 -0
  238. package/dist/git/utils/pullRequest.utils.js.map +1 -1
  239. package/dist/git/utils/reachability.utils.d.ts +20 -2
  240. package/dist/git/utils/reachability.utils.d.ts.map +1 -1
  241. package/dist/git/utils/reachability.utils.js +68 -7
  242. package/dist/git/utils/reachability.utils.js.map +1 -1
  243. package/dist/git/utils/rebase.utils.d.ts.map +1 -1
  244. package/dist/git/utils/rebase.utils.js.map +1 -1
  245. package/dist/git/utils/reference.utils.d.ts.map +1 -1
  246. package/dist/git/utils/reference.utils.js.map +1 -1
  247. package/dist/git/utils/remote.utils.d.ts.map +1 -1
  248. package/dist/git/utils/remote.utils.js.map +1 -1
  249. package/dist/git/utils/repository.utils.d.ts.map +1 -1
  250. package/dist/git/utils/repository.utils.js.map +1 -1
  251. package/dist/git/utils/resourceDescriptor.utils.d.ts.map +1 -1
  252. package/dist/git/utils/resourceDescriptor.utils.js.map +1 -1
  253. package/dist/git/utils/revision.utils.d.ts.map +1 -1
  254. package/dist/git/utils/revision.utils.js.map +1 -1
  255. package/dist/git/utils/search.utils.d.ts.map +1 -1
  256. package/dist/git/utils/search.utils.js.map +1 -1
  257. package/dist/git/utils/sorting.d.ts.map +1 -1
  258. package/dist/git/utils/sorting.js.map +1 -1
  259. package/dist/git/utils/sshKey.utils.d.ts +7 -0
  260. package/dist/git/utils/sshKey.utils.d.ts.map +1 -0
  261. package/dist/git/utils/sshKey.utils.js +25 -0
  262. package/dist/git/utils/sshKey.utils.js.map +1 -0
  263. package/dist/git/utils/status.utils.d.ts.map +1 -1
  264. package/dist/git/utils/status.utils.js.map +1 -1
  265. package/dist/git/utils/statusFile.utils.d.ts.map +1 -1
  266. package/dist/git/utils/statusFile.utils.js.map +1 -1
  267. package/dist/git/utils/tag.utils.d.ts.map +1 -1
  268. package/dist/git/utils/tag.utils.js.map +1 -1
  269. package/dist/git/utils/tooltip.utils.d.ts.map +1 -1
  270. package/dist/git/utils/tooltip.utils.js.map +1 -1
  271. package/dist/git/utils/uriAuthority.d.ts.map +1 -1
  272. package/dist/git/utils/uriAuthority.js.map +1 -1
  273. package/dist/git/utils/user.utils.d.ts.map +1 -1
  274. package/dist/git/utils/user.utils.js.map +1 -1
  275. package/dist/git/utils/worktree.utils.d.ts.map +1 -1
  276. package/dist/git/utils/worktree.utils.js.map +1 -1
  277. package/dist/git/watching/changeEvent.d.ts.map +1 -1
  278. package/dist/git/watching/changeEvent.js.map +1 -1
  279. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  280. package/dist/git/watching/classifyChange.js.map +1 -1
  281. package/dist/git/watching/gitIgnoreFilter.d.ts.map +1 -1
  282. package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
  283. package/dist/git/watching/initWatcher.d.ts.map +1 -1
  284. package/dist/git/watching/initWatcher.js.map +1 -1
  285. package/dist/git/watching/provider.d.ts.map +1 -1
  286. package/dist/git/watching/provider.js.map +1 -1
  287. package/dist/git/watching/watchGroup.d.ts.map +1 -1
  288. package/dist/git/watching/watchGroup.js.map +1 -1
  289. package/dist/git/watching/watchService.d.ts +4 -0
  290. package/dist/git/watching/watchService.d.ts.map +1 -1
  291. package/dist/git/watching/watchService.js +15 -1
  292. package/dist/git/watching/watchService.js.map +1 -1
  293. package/dist/git/watching/watchSession.d.ts +7 -0
  294. package/dist/git/watching/watchSession.d.ts.map +1 -1
  295. package/dist/git/watching/watchSession.js +14 -2
  296. package/dist/git/watching/watchSession.js.map +1 -1
  297. package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
  298. package/dist/git/watching/watcherPatterns.js.map +1 -1
  299. package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
  300. package/dist/git-cli/exec/exec.d.ts.map +1 -1
  301. package/dist/git-cli/exec/exec.errors.d.ts.map +1 -1
  302. package/dist/git-cli/exec/exec.errors.js.map +1 -1
  303. package/dist/git-cli/exec/exec.js.map +1 -1
  304. package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
  305. package/dist/git-cli/exec/exec.types.js.map +1 -1
  306. package/dist/git-cli/exec/features.d.ts.map +1 -1
  307. package/dist/git-cli/exec/features.js.map +1 -1
  308. package/dist/git-cli/exec/git.d.ts +19 -27
  309. package/dist/git-cli/exec/git.d.ts.map +1 -1
  310. package/dist/git-cli/exec/git.js +126 -34
  311. package/dist/git-cli/exec/git.js.map +1 -1
  312. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  313. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  314. package/dist/git-cli/exec/locator.d.ts.map +1 -1
  315. package/dist/git-cli/exec/locator.js.map +1 -1
  316. package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
  317. package/dist/git-cli/parsers/blameParser.js.map +1 -1
  318. package/dist/git-cli/parsers/indexParser.d.ts.map +1 -1
  319. package/dist/git-cli/parsers/indexParser.js.map +1 -1
  320. package/dist/git-cli/parsers/logParser.d.ts +9 -1
  321. package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
  322. package/dist/git-cli/parsers/logParser.js +141 -60
  323. package/dist/git-cli/parsers/logParser.js.map +1 -1
  324. package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +1 -1
  325. package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -1
  326. package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
  327. package/dist/git-cli/parsers/refParser.js.map +1 -1
  328. package/dist/git-cli/parsers/reflogParser.d.ts.map +1 -1
  329. package/dist/git-cli/parsers/reflogParser.js.map +1 -1
  330. package/dist/git-cli/parsers/remoteParser.d.ts.map +1 -1
  331. package/dist/git-cli/parsers/remoteParser.js.map +1 -1
  332. package/dist/git-cli/parsers/shortlogParser.d.ts.map +1 -1
  333. package/dist/git-cli/parsers/shortlogParser.js.map +1 -1
  334. package/dist/git-cli/parsers/signatureParser.d.ts.map +1 -1
  335. package/dist/git-cli/parsers/signatureParser.js.map +1 -1
  336. package/dist/git-cli/parsers/sshSignatureParser.d.ts +21 -0
  337. package/dist/git-cli/parsers/sshSignatureParser.d.ts.map +1 -0
  338. package/dist/git-cli/parsers/sshSignatureParser.js +78 -0
  339. package/dist/git-cli/parsers/sshSignatureParser.js.map +1 -0
  340. package/dist/git-cli/parsers/statusParser.d.ts.map +1 -1
  341. package/dist/git-cli/parsers/statusParser.js.map +1 -1
  342. package/dist/git-cli/parsers/treeParser.d.ts.map +1 -1
  343. package/dist/git-cli/parsers/treeParser.js.map +1 -1
  344. package/dist/git-cli/parsers/worktreeParser.d.ts.map +1 -1
  345. package/dist/git-cli/parsers/worktreeParser.js +5 -7
  346. package/dist/git-cli/parsers/worktreeParser.js.map +1 -1
  347. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  348. package/dist/git-cli/providers/blame.js.map +1 -1
  349. package/dist/git-cli/providers/branches.d.ts +1 -0
  350. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  351. package/dist/git-cli/providers/branches.js +51 -32
  352. package/dist/git-cli/providers/branches.js.map +1 -1
  353. package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +1 -1
  354. package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -1
  355. package/dist/git-cli/providers/commits.d.ts +12 -1
  356. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  357. package/dist/git-cli/providers/commits.js +89 -8
  358. package/dist/git-cli/providers/commits.js.map +1 -1
  359. package/dist/git-cli/providers/config.d.ts.map +1 -1
  360. package/dist/git-cli/providers/config.js.map +1 -1
  361. package/dist/git-cli/providers/contributors.d.ts.map +1 -1
  362. package/dist/git-cli/providers/contributors.js.map +1 -1
  363. package/dist/git-cli/providers/diff.d.ts.map +1 -1
  364. package/dist/git-cli/providers/diff.js.map +1 -1
  365. package/dist/git-cli/providers/graph.d.ts +35 -1
  366. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  367. package/dist/git-cli/providers/graph.js +1434 -330
  368. package/dist/git-cli/providers/graph.js.map +1 -1
  369. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  370. package/dist/git-cli/providers/operations.js.map +1 -1
  371. package/dist/git-cli/providers/patch.d.ts.map +1 -1
  372. package/dist/git-cli/providers/patch.js.map +1 -1
  373. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  374. package/dist/git-cli/providers/pausedOperations.js +3 -3
  375. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  376. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  377. package/dist/git-cli/providers/refs.js.map +1 -1
  378. package/dist/git-cli/providers/remotes.d.ts.map +1 -1
  379. package/dist/git-cli/providers/remotes.js.map +1 -1
  380. package/dist/git-cli/providers/revision.d.ts +1 -0
  381. package/dist/git-cli/providers/revision.d.ts.map +1 -1
  382. package/dist/git-cli/providers/revision.js +33 -0
  383. package/dist/git-cli/providers/revision.js.map +1 -1
  384. package/dist/git-cli/providers/staging.d.ts.map +1 -1
  385. package/dist/git-cli/providers/staging.js.map +1 -1
  386. package/dist/git-cli/providers/stash.d.ts.map +1 -1
  387. package/dist/git-cli/providers/stash.js.map +1 -1
  388. package/dist/git-cli/providers/status.d.ts +28 -0
  389. package/dist/git-cli/providers/status.d.ts.map +1 -1
  390. package/dist/git-cli/providers/status.js +240 -154
  391. package/dist/git-cli/providers/status.js.map +1 -1
  392. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  393. package/dist/git-cli/providers/tags.js +2 -1
  394. package/dist/git-cli/providers/tags.js.map +1 -1
  395. package/dist/git-cli/providers/worktrees.d.ts +2 -1
  396. package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
  397. package/dist/git-cli/providers/worktrees.js +28 -3
  398. package/dist/git-cli/providers/worktrees.js.map +1 -1
  399. package/dist/git-cli/service.d.ts.map +1 -1
  400. package/dist/git-cli/service.js +8 -0
  401. package/dist/git-cli/service.js.map +1 -1
  402. package/dist/ipc/ipcServer.d.ts.map +1 -1
  403. package/dist/ipc/ipcServer.js +1 -1
  404. package/dist/ipc/ipcServer.js.map +1 -1
  405. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +6 -1
  406. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
  407. package/dist/plus/agents/providers/claudeCodeProvider.js +19 -0
  408. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
  409. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +68 -0
  410. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
  411. package/dist/plus/agents/providers/claudeCodeTranscript.js +262 -8
  412. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  413. package/dist/plus/agents/types.d.ts +36 -2
  414. package/dist/plus/agents/types.d.ts.map +1 -1
  415. package/dist/plus/ai/constants.d.ts +1 -2
  416. package/dist/plus/ai/constants.d.ts.map +1 -1
  417. package/dist/plus/ai/constants.js +1 -8
  418. package/dist/plus/ai/constants.js.map +1 -1
  419. package/dist/plus/ai/errors.d.ts.map +1 -1
  420. package/dist/plus/ai/errors.js.map +1 -1
  421. package/dist/plus/ai/models/conversation.d.ts.map +1 -1
  422. package/dist/plus/ai/models/conversation.js.map +1 -1
  423. package/dist/plus/ai/models/model.d.ts +2 -1
  424. package/dist/plus/ai/models/model.d.ts.map +1 -1
  425. package/dist/plus/ai/models/model.js +50 -1
  426. package/dist/plus/ai/models/model.js.map +1 -1
  427. package/dist/plus/ai/models/promptTemplates.d.ts +5 -2
  428. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  429. package/dist/plus/ai/models/promptTemplates.js.map +1 -1
  430. package/dist/plus/ai/models/provider.d.ts.map +1 -1
  431. package/dist/plus/ai/models/provider.js.map +1 -1
  432. package/dist/plus/ai/models/results.d.ts.map +1 -1
  433. package/dist/plus/ai/models/results.js.map +1 -1
  434. package/dist/plus/ai/prompts.d.ts +1 -1
  435. package/dist/plus/ai/prompts.d.ts.map +1 -1
  436. package/dist/plus/ai/prompts.js +15 -47
  437. package/dist/plus/ai/prompts.js.map +1 -1
  438. package/dist/plus/ai/providers/anthropicProvider.d.ts +5 -0
  439. package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
  440. package/dist/plus/ai/providers/anthropicProvider.js +40 -3
  441. package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
  442. package/dist/plus/ai/providers/azureProvider.d.ts.map +1 -1
  443. package/dist/plus/ai/providers/azureProvider.js.map +1 -1
  444. package/dist/plus/ai/providers/context.d.ts.map +1 -1
  445. package/dist/plus/ai/providers/context.js.map +1 -1
  446. package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
  447. package/dist/plus/ai/providers/deepSeekProvider.js +17 -1
  448. package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
  449. package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
  450. package/dist/plus/ai/providers/geminiProvider.js +25 -6
  451. package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
  452. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
  453. package/dist/plus/ai/providers/gitkrakenProvider.js +1 -0
  454. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
  455. package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -1
  456. package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
  457. package/dist/plus/ai/providers/huggingFaceProvider.js +21 -18
  458. package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
  459. package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
  460. package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
  461. package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
  462. package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
  463. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
  464. package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
  465. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +10 -1
  466. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
  467. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +9 -1
  468. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  469. package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
  470. package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
  471. package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
  472. package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
  473. package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
  474. package/dist/plus/ai/providers/xaiProvider.js +14 -1
  475. package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
  476. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  477. package/dist/plus/ai/utils/ai.utils.js +0 -2
  478. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  479. package/dist/plus/ai/utils/results.utils.d.ts +3 -0
  480. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  481. package/dist/plus/ai/utils/results.utils.js +26 -0
  482. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  483. package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
  484. package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
  485. package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
  486. package/dist/plus/git-github/api/config.d.ts.map +1 -1
  487. package/dist/plus/git-github/api/config.js.map +1 -1
  488. package/dist/plus/git-github/api/github.d.ts +66 -3
  489. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  490. package/dist/plus/git-github/api/github.js +345 -74
  491. package/dist/plus/git-github/api/github.js.map +1 -1
  492. package/dist/plus/git-github/api/github.utils.d.ts.map +1 -1
  493. package/dist/plus/git-github/api/github.utils.js.map +1 -1
  494. package/dist/plus/git-github/api/token.d.ts.map +1 -1
  495. package/dist/plus/git-github/api/token.js.map +1 -1
  496. package/dist/plus/git-github/api/tokenUtils.d.ts.map +1 -1
  497. package/dist/plus/git-github/api/tokenUtils.js.map +1 -1
  498. package/dist/plus/git-github/api/types.d.ts.map +1 -1
  499. package/dist/plus/git-github/api/types.js.map +1 -1
  500. package/dist/plus/git-github/context.d.ts.map +1 -1
  501. package/dist/plus/git-github/models.d.ts +5 -0
  502. package/dist/plus/git-github/models.d.ts.map +1 -1
  503. package/dist/plus/git-github/models.js +27 -2
  504. package/dist/plus/git-github/models.js.map +1 -1
  505. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  506. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  507. package/dist/plus/git-github/providers/github/branches.d.ts +2 -1
  508. package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
  509. package/dist/plus/git-github/providers/github/branches.js +7 -3
  510. package/dist/plus/git-github/providers/github/branches.js.map +1 -1
  511. package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
  512. package/dist/plus/git-github/providers/github/commits.js.map +1 -1
  513. package/dist/plus/git-github/providers/github/config.d.ts.map +1 -1
  514. package/dist/plus/git-github/providers/github/config.js.map +1 -1
  515. package/dist/plus/git-github/providers/github/contributors.d.ts.map +1 -1
  516. package/dist/plus/git-github/providers/github/contributors.js.map +1 -1
  517. package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
  518. package/dist/plus/git-github/providers/github/diff.js +2 -2
  519. package/dist/plus/git-github/providers/github/diff.js.map +1 -1
  520. package/dist/plus/git-github/providers/github/graph.d.ts +12 -1
  521. package/dist/plus/git-github/providers/github/graph.d.ts.map +1 -1
  522. package/dist/plus/git-github/providers/github/graph.js +85 -0
  523. package/dist/plus/git-github/providers/github/graph.js.map +1 -1
  524. package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
  525. package/dist/plus/git-github/providers/github/refs.js.map +1 -1
  526. package/dist/plus/git-github/providers/github/remotes.d.ts.map +1 -1
  527. package/dist/plus/git-github/providers/github/remotes.js.map +1 -1
  528. package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
  529. package/dist/plus/git-github/providers/github/revision.js.map +1 -1
  530. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  531. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  532. package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
  533. package/dist/plus/git-github/providers/github/tags.js +3 -1
  534. package/dist/plus/git-github/providers/github/tags.js.map +1 -1
  535. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
  536. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
  537. package/dist/plus/git-github/providers/githubProvider.d.ts.map +1 -1
  538. package/dist/plus/git-github/providers/githubProvider.js.map +1 -1
  539. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +20 -1
  540. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +1 -1
  541. package/dist/plus/integrations/authentication/cloudIntegrationService.js +134 -10
  542. package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -1
  543. package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +52 -5
  544. package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -1
  545. package/dist/plus/integrations/authentication/configuredIntegrationService.js +248 -46
  546. package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -1
  547. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +24 -4
  548. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +1 -1
  549. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +58 -26
  550. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -1
  551. package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +1 -1
  552. package/dist/plus/integrations/authentication/integrationAuthenticationService.js +7 -3
  553. package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -1
  554. package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +1 -0
  555. package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +1 -1
  556. package/dist/plus/integrations/authentication/manualTokenProvider.js +9 -5
  557. package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -1
  558. package/dist/plus/integrations/authentication/models.d.ts +33 -0
  559. package/dist/plus/integrations/authentication/models.d.ts.map +1 -1
  560. package/dist/plus/integrations/authentication/models.js.map +1 -1
  561. package/dist/plus/integrations/collectionMetadata.d.ts +21 -0
  562. package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -0
  563. package/dist/plus/integrations/collectionMetadata.js +121 -0
  564. package/dist/plus/integrations/collectionMetadata.js.map +1 -0
  565. package/dist/plus/integrations/constants.d.ts +12 -2
  566. package/dist/plus/integrations/constants.d.ts.map +1 -1
  567. package/dist/plus/integrations/constants.js +10 -0
  568. package/dist/plus/integrations/constants.js.map +1 -1
  569. package/dist/plus/integrations/context.d.ts +10 -6
  570. package/dist/plus/integrations/context.d.ts.map +1 -1
  571. package/dist/plus/integrations/errors.d.ts +65 -0
  572. package/dist/plus/integrations/errors.d.ts.map +1 -1
  573. package/dist/plus/integrations/errors.js +135 -0
  574. package/dist/plus/integrations/errors.js.map +1 -1
  575. package/dist/plus/integrations/index.d.ts +57 -12
  576. package/dist/plus/integrations/index.d.ts.map +1 -1
  577. package/dist/plus/integrations/index.js +39 -37
  578. package/dist/plus/integrations/index.js.map +1 -1
  579. package/dist/plus/integrations/integrationService.d.ts +297 -13
  580. package/dist/plus/integrations/integrationService.d.ts.map +1 -1
  581. package/dist/plus/integrations/integrationService.js +672 -36
  582. package/dist/plus/integrations/integrationService.js.map +1 -1
  583. package/dist/plus/integrations/lite.d.ts +47 -0
  584. package/dist/plus/integrations/lite.d.ts.map +1 -0
  585. package/dist/plus/integrations/lite.js +141 -0
  586. package/dist/plus/integrations/lite.js.map +1 -0
  587. package/dist/plus/integrations/manager.d.ts +332 -0
  588. package/dist/plus/integrations/manager.d.ts.map +1 -0
  589. package/dist/plus/integrations/manager.js +2 -0
  590. package/dist/plus/integrations/manager.js.map +1 -0
  591. package/dist/plus/integrations/models/gitHostIntegration.d.ts +262 -10
  592. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
  593. package/dist/plus/integrations/models/gitHostIntegration.js +675 -101
  594. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  595. package/dist/plus/integrations/models/integration.d.ts +88 -3
  596. package/dist/plus/integrations/models/integration.d.ts.map +1 -1
  597. package/dist/plus/integrations/models/integration.js +192 -21
  598. package/dist/plus/integrations/models/integration.js.map +1 -1
  599. package/dist/plus/integrations/models/issuesIntegration.d.ts +70 -7
  600. package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
  601. package/dist/plus/integrations/models/issuesIntegration.js +108 -35
  602. package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
  603. package/dist/plus/integrations/providerFilters.d.ts +12 -0
  604. package/dist/plus/integrations/providerFilters.d.ts.map +1 -0
  605. package/dist/plus/integrations/providerFilters.js +14 -0
  606. package/dist/plus/integrations/providerFilters.js.map +1 -0
  607. package/dist/plus/integrations/providers/apiClients.d.ts.map +1 -1
  608. package/dist/plus/integrations/providers/apiClients.js +3 -3
  609. package/dist/plus/integrations/providers/apiClients.js.map +1 -1
  610. package/dist/plus/integrations/providers/apiConfig.d.ts +52 -0
  611. package/dist/plus/integrations/providers/apiConfig.d.ts.map +1 -0
  612. package/dist/plus/integrations/providers/apiConfig.js +19 -0
  613. package/dist/plus/integrations/providers/apiConfig.js.map +1 -0
  614. package/dist/plus/integrations/providers/azure/azure.d.ts +14 -2
  615. package/dist/plus/integrations/providers/azure/azure.d.ts.map +1 -1
  616. package/dist/plus/integrations/providers/azure/azure.js +107 -32
  617. package/dist/plus/integrations/providers/azure/azure.js.map +1 -1
  618. package/dist/plus/integrations/providers/azure/models.d.ts +16 -0
  619. package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
  620. package/dist/plus/integrations/providers/azure/models.js +6 -6
  621. package/dist/plus/integrations/providers/azure/models.js.map +1 -1
  622. package/dist/plus/integrations/providers/azureDevOps.d.ts +55 -9
  623. package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -1
  624. package/dist/plus/integrations/providers/azureDevOps.js +572 -79
  625. package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
  626. package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +13 -2
  627. package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +1 -1
  628. package/dist/plus/integrations/providers/bitbucket/bitbucket.js +108 -32
  629. package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
  630. package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
  631. package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
  632. package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +19 -1
  633. package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +1 -1
  634. package/dist/plus/integrations/providers/bitbucket-server/models.js +20 -1
  635. package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -1
  636. package/dist/plus/integrations/providers/bitbucket-server.d.ts +28 -4
  637. package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -1
  638. package/dist/plus/integrations/providers/bitbucket-server.js +110 -6
  639. package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
  640. package/dist/plus/integrations/providers/bitbucket.d.ts +38 -4
  641. package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -1
  642. package/dist/plus/integrations/providers/bitbucket.js +330 -34
  643. package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
  644. package/dist/plus/integrations/providers/github/github.d.ts.map +1 -1
  645. package/dist/plus/integrations/providers/github/github.js +1 -1
  646. package/dist/plus/integrations/providers/github/github.js.map +1 -1
  647. package/dist/plus/integrations/providers/github/github.utils.d.ts.map +1 -1
  648. package/dist/plus/integrations/providers/github/github.utils.js.map +1 -1
  649. package/dist/plus/integrations/providers/github/models.d.ts.map +1 -1
  650. package/dist/plus/integrations/providers/github/models.js.map +1 -1
  651. package/dist/plus/integrations/providers/github.d.ts +49 -6
  652. package/dist/plus/integrations/providers/github.d.ts.map +1 -1
  653. package/dist/plus/integrations/providers/github.js +289 -4
  654. package/dist/plus/integrations/providers/github.js.map +1 -1
  655. package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +11 -3
  656. package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +1 -1
  657. package/dist/plus/integrations/providers/gitlab/gitlab.js +121 -47
  658. package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
  659. package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +6 -0
  660. package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +1 -1
  661. package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +8 -0
  662. package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -1
  663. package/dist/plus/integrations/providers/gitlab/models.d.ts +10 -0
  664. package/dist/plus/integrations/providers/gitlab/models.d.ts.map +1 -1
  665. package/dist/plus/integrations/providers/gitlab/models.js +8 -5
  666. package/dist/plus/integrations/providers/gitlab/models.js.map +1 -1
  667. package/dist/plus/integrations/providers/gitlab.d.ts +50 -5
  668. package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
  669. package/dist/plus/integrations/providers/gitlab.js +274 -8
  670. package/dist/plus/integrations/providers/gitlab.js.map +1 -1
  671. package/dist/plus/integrations/providers/jira.d.ts +13 -2
  672. package/dist/plus/integrations/providers/jira.d.ts.map +1 -1
  673. package/dist/plus/integrations/providers/jira.js +200 -30
  674. package/dist/plus/integrations/providers/jira.js.map +1 -1
  675. package/dist/plus/integrations/providers/linear.d.ts +16 -5
  676. package/dist/plus/integrations/providers/linear.d.ts.map +1 -1
  677. package/dist/plus/integrations/providers/linear.js +127 -21
  678. package/dist/plus/integrations/providers/linear.js.map +1 -1
  679. package/dist/plus/integrations/providers/models.d.ts +339 -60
  680. package/dist/plus/integrations/providers/models.d.ts.map +1 -1
  681. package/dist/plus/integrations/providers/models.js +307 -59
  682. package/dist/plus/integrations/providers/models.js.map +1 -1
  683. package/dist/plus/integrations/providers/providersApi.d.ts +144 -11
  684. package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -1
  685. package/dist/plus/integrations/providers/providersApi.js +486 -55
  686. package/dist/plus/integrations/providers/providersApi.js.map +1 -1
  687. package/dist/plus/integrations/providers/trello.d.ts +47 -0
  688. package/dist/plus/integrations/providers/trello.d.ts.map +1 -0
  689. package/dist/plus/integrations/providers/trello.js +141 -0
  690. package/dist/plus/integrations/providers/trello.js.map +1 -0
  691. package/dist/plus/integrations/providers/utils/providerPaging.d.ts +29 -0
  692. package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -0
  693. package/dist/plus/integrations/providers/utils/providerPaging.js +154 -0
  694. package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -0
  695. package/dist/plus/integrations/providers/utils.d.ts +21 -0
  696. package/dist/plus/integrations/providers/utils.d.ts.map +1 -1
  697. package/dist/plus/integrations/providers/utils.js +57 -6
  698. package/dist/plus/integrations/providers/utils.js.map +1 -1
  699. package/dist/plus/integrations/reads/broaden.d.ts +20 -0
  700. package/dist/plus/integrations/reads/broaden.d.ts.map +1 -0
  701. package/dist/plus/integrations/reads/broaden.js +326 -0
  702. package/dist/plus/integrations/reads/broaden.js.map +1 -0
  703. package/dist/plus/integrations/reads/context.d.ts +74 -0
  704. package/dist/plus/integrations/reads/context.d.ts.map +1 -0
  705. package/dist/plus/integrations/reads/context.js +2 -0
  706. package/dist/plus/integrations/reads/context.js.map +1 -0
  707. package/dist/plus/integrations/reads/cursors.d.ts +66 -0
  708. package/dist/plus/integrations/reads/cursors.d.ts.map +1 -0
  709. package/dist/plus/integrations/reads/cursors.js +133 -0
  710. package/dist/plus/integrations/reads/cursors.js.map +1 -0
  711. package/dist/plus/integrations/reads/drains.d.ts +60 -0
  712. package/dist/plus/integrations/reads/drains.d.ts.map +1 -0
  713. package/dist/plus/integrations/reads/drains.js +255 -0
  714. package/dist/plus/integrations/reads/drains.js.map +1 -0
  715. package/dist/plus/integrations/reads/filters.d.ts +81 -0
  716. package/dist/plus/integrations/reads/filters.d.ts.map +1 -0
  717. package/dist/plus/integrations/reads/filters.js +87 -0
  718. package/dist/plus/integrations/reads/filters.js.map +1 -0
  719. package/dist/plus/integrations/reads/hierarchy.d.ts +17 -0
  720. package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -0
  721. package/dist/plus/integrations/reads/hierarchy.js +320 -0
  722. package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
  723. package/dist/plus/integrations/reads/hierarchy.utils.d.ts +77 -0
  724. package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
  725. package/dist/plus/integrations/reads/hierarchy.utils.js +128 -0
  726. package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -0
  727. package/dist/plus/integrations/reads/issueTracker.d.ts +19 -0
  728. package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -0
  729. package/dist/plus/integrations/reads/issueTracker.js +334 -0
  730. package/dist/plus/integrations/reads/issueTracker.js.map +1 -0
  731. package/dist/plus/integrations/reads/issues.d.ts +34 -0
  732. package/dist/plus/integrations/reads/issues.d.ts.map +1 -0
  733. package/dist/plus/integrations/reads/issues.js +244 -0
  734. package/dist/plus/integrations/reads/issues.js.map +1 -0
  735. package/dist/plus/integrations/reads/paging.d.ts +136 -0
  736. package/dist/plus/integrations/reads/paging.d.ts.map +1 -0
  737. package/dist/plus/integrations/reads/paging.js +221 -0
  738. package/dist/plus/integrations/reads/paging.js.map +1 -0
  739. package/dist/plus/integrations/reads/pullRequests.d.ts +32 -0
  740. package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -0
  741. package/dist/plus/integrations/reads/pullRequests.js +151 -0
  742. package/dist/plus/integrations/reads/pullRequests.js.map +1 -0
  743. package/dist/plus/integrations/reads/resolveRepository.d.ts +25 -0
  744. package/dist/plus/integrations/reads/resolveRepository.d.ts.map +1 -0
  745. package/dist/plus/integrations/reads/resolveRepository.js +235 -0
  746. package/dist/plus/integrations/reads/resolveRepository.js.map +1 -0
  747. package/dist/plus/integrations/reads/sweeps.d.ts +11 -0
  748. package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -0
  749. package/dist/plus/integrations/reads/sweeps.js +125 -0
  750. package/dist/plus/integrations/reads/sweeps.js.map +1 -0
  751. package/dist/plus/integrations/reads/warnings.d.ts +47 -0
  752. package/dist/plus/integrations/reads/warnings.d.ts.map +1 -0
  753. package/dist/plus/integrations/reads/warnings.js +81 -0
  754. package/dist/plus/integrations/reads/warnings.js.map +1 -0
  755. package/dist/plus/integrations/results.d.ts +189 -0
  756. package/dist/plus/integrations/results.d.ts.map +1 -0
  757. package/dist/plus/integrations/results.js +62 -0
  758. package/dist/plus/integrations/results.js.map +1 -0
  759. package/dist/plus/integrations/utils/domain.utils.d.ts +5 -0
  760. package/dist/plus/integrations/utils/domain.utils.d.ts.map +1 -0
  761. package/dist/plus/integrations/utils/domain.utils.js +27 -0
  762. package/dist/plus/integrations/utils/domain.utils.js.map +1 -0
  763. package/dist/plus/integrations/utils/integration.utils.d.ts +27 -1
  764. package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -1
  765. package/dist/plus/integrations/utils/integration.utils.js +86 -15
  766. package/dist/plus/integrations/utils/integration.utils.js.map +1 -1
  767. package/dist/utils/array.d.ts.map +1 -1
  768. package/dist/utils/array.js.map +1 -1
  769. package/dist/utils/brand.d.ts.map +1 -1
  770. package/dist/utils/cancellation.d.ts +13 -0
  771. package/dist/utils/cancellation.d.ts.map +1 -1
  772. package/dist/utils/cancellation.js +52 -7
  773. package/dist/utils/cancellation.js.map +1 -1
  774. package/dist/utils/charCode.d.ts.map +1 -1
  775. package/dist/utils/coalescedRun.d.ts +16 -0
  776. package/dist/utils/coalescedRun.d.ts.map +1 -0
  777. package/dist/utils/coalescedRun.js +43 -0
  778. package/dist/utils/coalescedRun.js.map +1 -0
  779. package/dist/utils/color.d.ts.map +1 -1
  780. package/dist/utils/color.js +3 -3
  781. package/dist/utils/color.js.map +1 -1
  782. package/dist/utils/date.d.ts +24 -0
  783. package/dist/utils/date.d.ts.map +1 -1
  784. package/dist/utils/date.js +62 -0
  785. package/dist/utils/date.js.map +1 -1
  786. package/dist/utils/debounce.js +1 -1
  787. package/dist/utils/debounce.js.map +1 -1
  788. package/dist/utils/decorators/debounce.d.ts.map +1 -1
  789. package/dist/utils/decorators/debounce.js.map +1 -1
  790. package/dist/utils/decorators/gate.d.ts.map +1 -1
  791. package/dist/utils/decorators/gate.js +2 -2
  792. package/dist/utils/decorators/gate.js.map +1 -1
  793. package/dist/utils/decorators/log.d.ts.map +1 -1
  794. package/dist/utils/decorators/log.js +5 -5
  795. package/dist/utils/decorators/log.js.map +1 -1
  796. package/dist/utils/decorators/memoize.d.ts.map +1 -1
  797. package/dist/utils/decorators/memoize.js +2 -2
  798. package/dist/utils/decorators/memoize.js.map +1 -1
  799. package/dist/utils/decorators/resolver.d.ts.map +1 -1
  800. package/dist/utils/decorators/resolver.js.map +1 -1
  801. package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
  802. package/dist/utils/decorators/sequentialize.js +2 -2
  803. package/dist/utils/decorators/sequentialize.js.map +1 -1
  804. package/dist/utils/decorators/serializable.d.ts.map +1 -1
  805. package/dist/utils/decorators/serializable.js +1 -1
  806. package/dist/utils/decorators/serializable.js.map +1 -1
  807. package/dist/utils/dedupedAsyncCache.d.ts.map +1 -1
  808. package/dist/utils/env/browser/base64.d.ts.map +1 -1
  809. package/dist/utils/env/browser/base64.js.map +1 -1
  810. package/dist/utils/env/browser/crypto.d.ts.map +1 -1
  811. package/dist/utils/env/browser/crypto.js.map +1 -1
  812. package/dist/utils/env/browser/fs.d.ts.map +1 -1
  813. package/dist/utils/env/browser/fs.js.map +1 -1
  814. package/dist/utils/env/browser/hex.d.ts.map +1 -1
  815. package/dist/utils/env/browser/hex.js.map +1 -1
  816. package/dist/utils/env/browser/hrtime.d.ts.map +1 -1
  817. package/dist/utils/env/browser/hrtime.js.map +1 -1
  818. package/dist/utils/env/browser/logScope.d.ts.map +1 -1
  819. package/dist/utils/env/browser/logScope.js.map +1 -1
  820. package/dist/utils/env/browser/md5.d.ts.map +1 -1
  821. package/dist/utils/env/browser/md5.js.map +1 -1
  822. package/dist/utils/env/browser/platform.d.ts.map +1 -1
  823. package/dist/utils/env/browser/platform.js.map +1 -1
  824. package/dist/utils/env/node/base64.d.ts.map +1 -1
  825. package/dist/utils/env/node/base64.js.map +1 -1
  826. package/dist/utils/env/node/crypto.d.ts.map +1 -1
  827. package/dist/utils/env/node/crypto.js.map +1 -1
  828. package/dist/utils/env/node/exec.d.ts +9 -1
  829. package/dist/utils/env/node/exec.d.ts.map +1 -1
  830. package/dist/utils/env/node/exec.js +11 -4
  831. package/dist/utils/env/node/exec.js.map +1 -1
  832. package/dist/utils/env/node/fs.d.ts.map +1 -1
  833. package/dist/utils/env/node/fs.js.map +1 -1
  834. package/dist/utils/env/node/hex.d.ts.map +1 -1
  835. package/dist/utils/env/node/hex.js.map +1 -1
  836. package/dist/utils/env/node/hrtime.d.ts.map +1 -1
  837. package/dist/utils/env/node/hrtime.js.map +1 -1
  838. package/dist/utils/env/node/logScope.d.ts.map +1 -1
  839. package/dist/utils/env/node/logScope.js.map +1 -1
  840. package/dist/utils/env/node/platform.d.ts.map +1 -1
  841. package/dist/utils/env/node/platform.js.map +1 -1
  842. package/dist/utils/event.d.ts.map +1 -1
  843. package/dist/utils/event.js +18 -22
  844. package/dist/utils/event.js.map +1 -1
  845. package/dist/utils/formatter.d.ts.map +1 -1
  846. package/dist/utils/formatter.js.map +1 -1
  847. package/dist/utils/function.d.ts.map +1 -1
  848. package/dist/utils/function.js +3 -3
  849. package/dist/utils/function.js.map +1 -1
  850. package/dist/utils/hash.js.map +1 -1
  851. package/dist/utils/iterable.d.ts.map +1 -1
  852. package/dist/utils/iterable.js +2 -6
  853. package/dist/utils/iterable.js.map +1 -1
  854. package/dist/utils/lazy.d.ts.map +1 -1
  855. package/dist/utils/lazy.js.map +1 -1
  856. package/dist/utils/logger.d.ts.map +1 -1
  857. package/dist/utils/logger.js +1 -1
  858. package/dist/utils/logger.js.map +1 -1
  859. package/dist/utils/logger.scoped.js +1 -1
  860. package/dist/utils/logger.scoped.js.map +1 -1
  861. package/dist/utils/lruMap.d.ts.map +1 -1
  862. package/dist/utils/lruMap.js.map +1 -1
  863. package/dist/utils/mru.d.ts.map +1 -1
  864. package/dist/utils/mru.js.map +1 -1
  865. package/dist/utils/object.js.map +1 -1
  866. package/dist/utils/paging.d.ts +29 -0
  867. package/dist/utils/paging.d.ts.map +1 -1
  868. package/dist/utils/paging.js +18 -0
  869. package/dist/utils/paging.js.map +1 -1
  870. package/dist/utils/path.js.map +1 -1
  871. package/dist/utils/promise.d.ts +10 -0
  872. package/dist/utils/promise.d.ts.map +1 -1
  873. package/dist/utils/promise.js +26 -3
  874. package/dist/utils/promise.js.map +1 -1
  875. package/dist/utils/promiseCache.d.ts +12 -2
  876. package/dist/utils/promiseCache.d.ts.map +1 -1
  877. package/dist/utils/promiseCache.js +80 -50
  878. package/dist/utils/promiseCache.js.map +1 -1
  879. package/dist/utils/searchTree.d.ts.map +1 -1
  880. package/dist/utils/searchTree.js +4 -1
  881. package/dist/utils/searchTree.js.map +1 -1
  882. package/dist/utils/stopwatch.d.ts.map +1 -1
  883. package/dist/utils/string.js +1 -1
  884. package/dist/utils/string.js.map +1 -1
  885. package/dist/utils/subscriptionManager.d.ts.map +1 -1
  886. package/dist/utils/subscriptionManager.js.map +1 -1
  887. package/dist/utils/trie.d.ts.map +1 -1
  888. package/dist/utils/trie.js +1 -0
  889. package/dist/utils/trie.js.map +1 -1
  890. package/docs/integrations.md +372 -0
  891. package/docs/kepler-read-api-parity.md +112 -0
  892. package/package.json +238 -213
  893. package/src/git/cache.ts +75 -8
  894. package/src/git/errors.ts +36 -1
  895. package/src/git/models/commit.ts +1 -1
  896. package/src/git/models/graph.ts +147 -0
  897. package/src/git/models/graphSession.ts +205 -0
  898. package/src/git/models/issue.ts +12 -1
  899. package/src/git/models/pullRequest.ts +27 -1
  900. package/src/git/models/repository.ts +24 -1
  901. package/src/git/models/resourceDescriptor.ts +17 -0
  902. package/src/git/models/signature.ts +16 -0
  903. package/src/git/models/tag.ts +6 -1
  904. package/src/git/parsers/diffParser.ts +1 -1
  905. package/src/git/providers/branches.ts +6 -1
  906. package/src/git/providers/commits.ts +6 -1
  907. package/src/git/providers/config.ts +5 -1
  908. package/src/git/providers/graph.ts +69 -2
  909. package/src/git/providers/status.ts +1 -1
  910. package/src/git/providers/worktrees.ts +3 -1
  911. package/src/git/remotes/azure-devops.ts +29 -33
  912. package/src/git/remotes/bitbucket-server.ts +23 -25
  913. package/src/git/remotes/bitbucket.ts +23 -25
  914. package/src/git/remotes/gerrit.ts +12 -14
  915. package/src/git/remotes/gitea.ts +13 -15
  916. package/src/git/remotes/github.ts +56 -58
  917. package/src/git/remotes/gitlab.ts +102 -104
  918. package/src/git/run.types.ts +54 -4
  919. package/src/git/utils/branch.utils.ts +12 -1
  920. package/src/git/utils/contributor.utils.ts +1 -1
  921. package/src/git/utils/fileStatus.utils.ts +7 -0
  922. package/src/git/utils/graph.utils.ts +46 -0
  923. package/src/git/utils/issue.utils.ts +1 -0
  924. package/src/git/utils/pullRequest.utils.ts +9 -0
  925. package/src/git/utils/reachability.utils.ts +79 -8
  926. package/src/git/utils/sshKey.utils.ts +30 -0
  927. package/src/git/watching/watchService.ts +16 -1
  928. package/src/git/watching/watchSession.ts +20 -2
  929. package/src/git-cli/exec/git.ts +144 -42
  930. package/src/git-cli/parsers/logParser.ts +83 -1
  931. package/src/git-cli/parsers/sshSignatureParser.ts +85 -0
  932. package/src/git-cli/parsers/worktreeParser.ts +5 -7
  933. package/src/git-cli/providers/branches.ts +60 -38
  934. package/src/git-cli/providers/commits.ts +102 -9
  935. package/src/git-cli/providers/graph.ts +1771 -393
  936. package/src/git-cli/providers/pausedOperations.ts +3 -3
  937. package/src/git-cli/providers/revision.ts +42 -0
  938. package/src/git-cli/providers/status.ts +333 -178
  939. package/src/git-cli/providers/tags.ts +2 -0
  940. package/src/git-cli/providers/worktrees.ts +40 -4
  941. package/src/git-cli/service.ts +9 -0
  942. package/src/ipc/ipcServer.ts +1 -1
  943. package/src/plus/agents/providers/claudeCodeProvider.ts +25 -0
  944. package/src/plus/agents/providers/claudeCodeTranscript.ts +320 -8
  945. package/src/plus/agents/types.ts +34 -0
  946. package/src/plus/ai/constants.ts +1 -9
  947. package/src/plus/ai/models/model.ts +53 -2
  948. package/src/plus/ai/models/promptTemplates.ts +9 -2
  949. package/src/plus/ai/prompts.ts +16 -48
  950. package/src/plus/ai/providers/anthropicProvider.ts +45 -3
  951. package/src/plus/ai/providers/deepSeekProvider.ts +17 -1
  952. package/src/plus/ai/providers/geminiProvider.ts +25 -6
  953. package/src/plus/ai/providers/gitkrakenProvider.ts +2 -0
  954. package/src/plus/ai/providers/huggingFaceProvider.ts +28 -21
  955. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +16 -1
  956. package/src/plus/ai/providers/xaiProvider.ts +14 -1
  957. package/src/plus/ai/utils/ai.utils.ts +0 -2
  958. package/src/plus/ai/utils/results.utils.ts +32 -0
  959. package/src/plus/ai/utils/truncation.utils.ts +0 -1
  960. package/src/plus/git-github/api/github.ts +484 -104
  961. package/src/plus/git-github/models.ts +33 -0
  962. package/src/plus/git-github/providers/github/branches.ts +6 -3
  963. package/src/plus/git-github/providers/github/diff.ts +1 -1
  964. package/src/plus/git-github/providers/github/graph.ts +131 -0
  965. package/src/plus/git-github/providers/github/tags.ts +2 -0
  966. package/src/plus/integrations/authentication/cloudIntegrationService.ts +189 -17
  967. package/src/plus/integrations/authentication/configuredIntegrationService.ts +287 -50
  968. package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +105 -31
  969. package/src/plus/integrations/authentication/integrationAuthenticationService.ts +7 -3
  970. package/src/plus/integrations/authentication/manualTokenProvider.ts +12 -5
  971. package/src/plus/integrations/authentication/models.ts +35 -1
  972. package/src/plus/integrations/collectionMetadata.ts +143 -0
  973. package/src/plus/integrations/constants.ts +21 -0
  974. package/src/plus/integrations/context.ts +8 -9
  975. package/src/plus/integrations/errors.ts +153 -0
  976. package/src/plus/integrations/index.ts +148 -51
  977. package/src/plus/integrations/integrationService.ts +940 -49
  978. package/src/plus/integrations/lite.ts +233 -0
  979. package/src/plus/integrations/manager.ts +359 -0
  980. package/src/plus/integrations/models/gitHostIntegration.ts +1005 -134
  981. package/src/plus/integrations/models/integration.ts +293 -24
  982. package/src/plus/integrations/models/issuesIntegration.ts +132 -39
  983. package/src/plus/integrations/providerFilters.ts +12 -0
  984. package/src/plus/integrations/providers/apiClients.ts +8 -11
  985. package/src/plus/integrations/providers/apiConfig.ts +71 -0
  986. package/src/plus/integrations/providers/azure/azure.ts +164 -33
  987. package/src/plus/integrations/providers/azure/models.ts +19 -6
  988. package/src/plus/integrations/providers/azureDevOps.ts +766 -101
  989. package/src/plus/integrations/providers/bitbucket/bitbucket.ts +164 -34
  990. package/src/plus/integrations/providers/bitbucket-server/models.ts +32 -1
  991. package/src/plus/integrations/providers/bitbucket-server.ts +173 -8
  992. package/src/plus/integrations/providers/bitbucket.ts +489 -45
  993. package/src/plus/integrations/providers/github/github.ts +2 -2
  994. package/src/plus/integrations/providers/github/github.utils.ts +1 -1
  995. package/src/plus/integrations/providers/github.ts +390 -6
  996. package/src/plus/integrations/providers/gitlab/gitlab.ts +170 -60
  997. package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +9 -0
  998. package/src/plus/integrations/providers/gitlab/models.ts +19 -5
  999. package/src/plus/integrations/providers/gitlab.ts +369 -10
  1000. package/src/plus/integrations/providers/jira.ts +247 -42
  1001. package/src/plus/integrations/providers/linear.ts +154 -27
  1002. package/src/plus/integrations/providers/models.ts +583 -75
  1003. package/src/plus/integrations/providers/providersApi.ts +849 -86
  1004. package/src/plus/integrations/providers/trello.ts +205 -0
  1005. package/src/plus/integrations/providers/utils/providerPaging.ts +177 -0
  1006. package/src/plus/integrations/providers/utils.ts +68 -8
  1007. package/src/plus/integrations/reads/broaden.ts +452 -0
  1008. package/src/plus/integrations/reads/context.ts +99 -0
  1009. package/src/plus/integrations/reads/cursors.ts +224 -0
  1010. package/src/plus/integrations/reads/drains.ts +343 -0
  1011. package/src/plus/integrations/reads/filters.ts +124 -0
  1012. package/src/plus/integrations/reads/hierarchy.ts +473 -0
  1013. package/src/plus/integrations/reads/hierarchy.utils.ts +155 -0
  1014. package/src/plus/integrations/reads/issueTracker.ts +468 -0
  1015. package/src/plus/integrations/reads/issues.ts +409 -0
  1016. package/src/plus/integrations/reads/paging.ts +277 -0
  1017. package/src/plus/integrations/reads/pullRequests.ts +260 -0
  1018. package/src/plus/integrations/reads/resolveRepository.ts +272 -0
  1019. package/src/plus/integrations/reads/sweeps.ts +185 -0
  1020. package/src/plus/integrations/reads/warnings.ts +170 -0
  1021. package/src/plus/integrations/results.ts +275 -0
  1022. package/src/plus/integrations/utils/domain.utils.ts +26 -0
  1023. package/src/plus/integrations/utils/integration.utils.ts +93 -16
  1024. package/src/utils/brand.ts +0 -2
  1025. package/src/utils/cancellation.ts +56 -7
  1026. package/src/utils/coalescedRun.ts +45 -0
  1027. package/src/utils/color.ts +3 -3
  1028. package/src/utils/date.ts +72 -0
  1029. package/src/utils/debounce.ts +1 -1
  1030. package/src/utils/decorators/gate.ts +2 -2
  1031. package/src/utils/decorators/log.ts +5 -5
  1032. package/src/utils/decorators/memoize.ts +2 -2
  1033. package/src/utils/decorators/sequentialize.ts +2 -2
  1034. package/src/utils/decorators/serializable.ts +1 -1
  1035. package/src/utils/env/node/exec.ts +20 -5
  1036. package/src/utils/event.ts +19 -25
  1037. package/src/utils/function.ts +3 -3
  1038. package/src/utils/iterable.ts +2 -6
  1039. package/src/utils/logger.scoped.ts +1 -1
  1040. package/src/utils/logger.ts +1 -1
  1041. package/src/utils/paging.ts +46 -0
  1042. package/src/utils/promise.ts +33 -3
  1043. package/src/utils/promiseCache.ts +81 -51
  1044. package/src/utils/searchTree.ts +4 -2
  1045. package/src/utils/string.ts +1 -1
  1046. package/src/utils/trie.ts +1 -0
  1047. package/dist/plus/ai/providers/githubModelsProvider.d.ts +0 -19
  1048. package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +0 -1
  1049. package/dist/plus/ai/providers/githubModelsProvider.js +0 -51
  1050. package/dist/plus/ai/providers/githubModelsProvider.js.map +0 -1
  1051. package/src/plus/ai/providers/githubModelsProvider.ts +0 -92
@@ -9,13 +9,22 @@ import type {
9
9
  Bitbucket,
10
10
  BitbucketServer,
11
11
  BitbucketWorkspaceStub,
12
+ CollectionMetadata,
13
+ CursorPageInput,
12
14
  EnterpriseOptions,
13
15
  GetRepoInput,
16
+ GitBuildStatusState as GitBuildStatusStateType,
14
17
  GitHub,
18
+ GitIssueState as GitIssueStateType,
15
19
  GitLab,
20
+ GitLabGroup,
16
21
  GitMergeStrategy,
17
22
  GitPullRequest,
23
+ GitPullRequestMergeableState as GitPullRequestMergeableStateType,
24
+ GitPullRequestReviewState as GitPullRequestReviewStateType,
25
+ GitPullRequestState as GitPullRequestStateType,
18
26
  GitRepository,
27
+ GitRepositoryRemoteInfo,
19
28
  Jira,
20
29
  JiraProject,
21
30
  JiraResource,
@@ -23,6 +32,7 @@ import type {
23
32
  LinearOrganization,
24
33
  LinearTeam,
25
34
  NumberedPageInput,
35
+ Organization,
26
36
  Issue as ProviderApiIssue,
27
37
  PullRequestWithUniqueID,
28
38
  RequestFunction,
@@ -31,23 +41,19 @@ import type {
31
41
  SetPullRequestInput,
32
42
  Trello,
33
43
  } from '@gitkraken/provider-apis';
34
- import {
35
- GitBuildStatusState,
36
- GitPullRequestMergeableState,
37
- GitPullRequestReviewState,
38
- GitPullRequestState,
39
- } from '@gitkraken/provider-apis';
40
- import { EntityIdentifierUtils } from '@gitkraken/provider-apis/entity-identifiers';
41
- import { GitProviderUtils } from '@gitkraken/provider-apis/provider-utils';
44
+ import entityIdentifiersModule from '@gitkraken/provider-apis/entity-identifiers';
45
+ import providerUtilsModule from '@gitkraken/provider-apis/provider-utils';
42
46
  import type { Account as UserAccount } from '../../../git/models/author.js';
43
- import type { IssueMember, IssueProject, IssueShape } from '../../../git/models/issue.js';
47
+ import type { IssueMember, IssueProject, IssueShape, IssueStateFilter } from '../../../git/models/issue.js';
44
48
  import { Issue, RepositoryAccessLevel } from '../../../git/models/issue.js';
45
49
  import type {
46
50
  PullRequestMember,
51
+ PullRequestRef,
47
52
  PullRequestRefs,
48
53
  PullRequestRepositoryIdentityDescriptor,
49
54
  PullRequestReviewer,
50
55
  PullRequestState,
56
+ PullRequestStateFilter,
51
57
  } from '../../../git/models/pullRequest.js';
52
58
  import {
53
59
  PullRequest,
@@ -57,7 +63,9 @@ import {
57
63
  PullRequestStatusCheckRollupState,
58
64
  } from '../../../git/models/pullRequest.js';
59
65
  import type { Provider, ProviderReference } from '../../../git/models/remoteProvider.js';
66
+ import type { ProviderScope } from '../../../git/models/resourceDescriptor.js';
60
67
  import { gitSuffixRegex } from '../../../git/utils/remote.utils.js';
68
+ import type { PagedResult } from '../../../utils/paging.js';
61
69
  import { equalsIgnoreCase } from '../../../utils/string.js';
62
70
  import type { IntegrationIds } from '../constants.js';
63
71
  import {
@@ -66,8 +74,69 @@ import {
66
74
  IssuesCloudHostIntegrationId,
67
75
  } from '../constants.js';
68
76
  import type { Integration, IntegrationType } from '../models/integration.js';
77
+ import { IssueFilter, PullRequestFilter } from '../providerFilters.js';
78
+
79
+ export { IssueFilter, PullRequestFilter } from '../providerFilters.js';
80
+ import type { ProviderRepositoryShape } from '../results.js';
81
+
82
+ export type { ProviderOrganization, ProviderRepositoryShape } from '../results.js';
69
83
  import { getEntityIdentifierInput } from './utils.js';
70
84
 
85
+ type GitBuildStatusState = GitBuildStatusStateType;
86
+ type GitIssueState = GitIssueStateType;
87
+ type GitPullRequestMergeableState = GitPullRequestMergeableStateType;
88
+ type GitPullRequestReviewState = GitPullRequestReviewStateType;
89
+ type GitPullRequestState = GitPullRequestStateType;
90
+
91
+ const { EntityIdentifierUtils } = entityIdentifiersModule;
92
+ const { GitProviderUtils } = providerUtilsModule;
93
+
94
+ // Local runtime copies of the `@gitkraken/provider-apis` string enums. Duplicated (not imported as
95
+ // values) because the SDK ships as CJS whose named enum exports can't be statically imported as ESM
96
+ // values from the bundled `dist`. Exported so the enum-parity test can deep-equal them against the
97
+ // real SDK enums and turn any upstream drift into a test failure instead of a silent mismatch.
98
+ export const GitBuildStatusState = {
99
+ ActionRequired: 'ACTION_REQUIRED' as GitBuildStatusState,
100
+ Cancelled: 'CANCELLED' as GitBuildStatusState,
101
+ Error: 'ERROR' as GitBuildStatusState,
102
+ Failed: 'FAILED' as GitBuildStatusState,
103
+ Pending: 'PENDING' as GitBuildStatusState,
104
+ Running: 'RUNNING' as GitBuildStatusState,
105
+ Skipped: 'SKIPPED' as GitBuildStatusState,
106
+ Success: 'SUCCESS' as GitBuildStatusState,
107
+ Warning: 'WARNING' as GitBuildStatusState,
108
+ OptionalActionRequired: 'OPTIONAL_ACTION_REQUIRED' as GitBuildStatusState,
109
+ } as const;
110
+
111
+ export const GitIssueState = {
112
+ Open: 'OPEN' as GitIssueState,
113
+ Closed: 'CLOSED' as GitIssueState,
114
+ } as const;
115
+
116
+ export const GitPullRequestState = {
117
+ Open: 'OPEN' as GitPullRequestState,
118
+ Closed: 'CLOSED' as GitPullRequestState,
119
+ Merged: 'MERGED' as GitPullRequestState,
120
+ } as const;
121
+
122
+ export const GitPullRequestReviewState = {
123
+ Approved: 'APPROVED' as GitPullRequestReviewState,
124
+ ChangesRequested: 'CHANGES_REQUESTED' as GitPullRequestReviewState,
125
+ Commented: 'COMMENTED' as GitPullRequestReviewState,
126
+ ReviewRequested: 'REVIEW_REQUESTED' as GitPullRequestReviewState,
127
+ } as const;
128
+
129
+ export const GitPullRequestMergeableState = {
130
+ Behind: 'BEHIND' as GitPullRequestMergeableState,
131
+ Blocked: 'BLOCKED' as GitPullRequestMergeableState,
132
+ Conflicts: 'CONFLICTS' as GitPullRequestMergeableState,
133
+ FailingChecks: 'FAILING_CHECKS' as GitPullRequestMergeableState,
134
+ Mergeable: 'MERGEABLE' as GitPullRequestMergeableState,
135
+ Unknown: 'UNKNOWN' as GitPullRequestMergeableState,
136
+ UnknownAndBlocked: 'UNKNOWN_AND_BLOCKED' as GitPullRequestMergeableState,
137
+ Unstable: 'UNSTABLE' as GitPullRequestMergeableState,
138
+ } as const;
139
+
71
140
  /**
72
141
  * Forward-only host type — the package only sets `EnrichablePullRequest.enrichable`
73
142
  * for the host to consume. Typed as `any` to avoid duplicating the host's
@@ -89,25 +158,79 @@ export type ProviderLinearOrganization = LinearOrganization;
89
158
  export type ProviderAzureProject = AzureProject;
90
159
  export type ProviderAzureResource = AzureOrganization;
91
160
  export type ProviderBitbucketResource = BitbucketWorkspaceStub;
161
+ export type ProviderGitHubOrganization = Organization;
162
+ export type ProviderGitLabGroup = GitLabGroup;
163
+
164
+ /**
165
+ * Returns an account-wide PR identity. Provider PR ids are commonly scoped to a repository or organization,
166
+ * so an id alone is never safe for deduplication across a multi-repository fan-out. Repository identity wins
167
+ * when available so the same row still deduplicates when a later facet adds or removes its URL.
168
+ */
169
+ export function getProviderPullRequestIdentity(
170
+ pr: Pick<ProviderPullRequest, 'id' | 'repository' | 'url'>,
171
+ ): string | undefined {
172
+ const repository = pr.repository as
173
+ | {
174
+ id?: string | number;
175
+ name?: string;
176
+ namespace?: string;
177
+ owner?: { login?: string } | string;
178
+ project?: string;
179
+ }
180
+ | undefined;
181
+ const urlIdentity = pr.url != null && pr.url.trim() !== '' ? `url:${pr.url}` : undefined;
182
+ if (repository == null) return urlIdentity;
183
+
184
+ const owner = typeof repository.owner === 'string' ? repository.owner : repository.owner?.login;
185
+ const repositoryId = repository.id != null ? String(repository.id).trim() : '';
186
+ if (repositoryId !== '') return `repository:${repositoryId}:pull-request:${pr.id}`;
187
+
188
+ const name = repository.name?.trim() ?? '';
189
+ const namespace = (repository.namespace ?? owner)?.trim() ?? '';
190
+ const project = repository.project?.trim() ?? '';
191
+ if (name !== '' && (namespace !== '' || project !== '')) {
192
+ return `repository:${namespace}/${project}/${name}:pull-request:${pr.id}`;
193
+ }
194
+ return urlIdentity;
195
+ }
196
+
197
+ export type ProviderHierarchyResult<T> = PagedResult<T> & {
198
+ readonly truncated?: boolean;
199
+ /**
200
+ * SDK collection metadata merged across the drained pages. Independent from the local `truncated` backstop:
201
+ * a page-drain backstop stays visible even if every fetched page reported `complete`, and SDK
202
+ * incompleteness is preserved even when the drain finished within its page budget.
203
+ */
204
+ readonly metadata?: CollectionMetadata;
205
+ };
206
+
207
+ /**
208
+ * A normalized {@link PagedResult} that additionally carries the SDK's collection {@link CollectionMetadata}
209
+ * (completeness + per-scope failures). Named to avoid colliding with the public ProviderBackend
210
+ * `ProviderPagedResult` in `results.ts`: this is the integration-local carrier between the `ProvidersApi`
211
+ * boundary and the code that maps metadata into warnings/truncation. `metadata` is optional so providers and
212
+ * test doubles that predate the SDK metadata contract keep behaving exactly as before.
213
+ */
214
+ export type ProviderApiPagedResult<T> = PagedResult<T> & {
215
+ readonly metadata?: CollectionMetadata;
216
+ };
217
+
218
+ /**
219
+ * A non-paged collection result carrying SDK {@link CollectionMetadata}. Used for fan-out reads that return a
220
+ * flat set of values with completeness/failure metadata but no provider-native pagination (e.g. Jira project
221
+ * discovery across resources, Trello board search).
222
+ */
223
+ export type ProviderApiCollectionResult<T> = {
224
+ readonly values: NonNullable<T>[];
225
+ readonly metadata?: CollectionMetadata;
226
+ };
227
+
92
228
  export const ProviderPullRequestReviewState = GitPullRequestReviewState;
93
229
  export const ProviderBuildStatusState = GitBuildStatusState;
94
230
  export type ProviderRequestFunction = RequestFunction;
95
231
  export type ProviderRequestResponse<T> = Response<T>;
96
232
  export type ProviderRequestOptions = RequestOptions;
97
233
 
98
- export enum PullRequestFilter {
99
- Author = 'author',
100
- Assignee = 'assignee',
101
- ReviewRequested = 'review-requested',
102
- Mention = 'mention',
103
- }
104
-
105
- export enum IssueFilter {
106
- Author = 'author',
107
- Assignee = 'assignee',
108
- Mention = 'mention',
109
- }
110
-
111
234
  export enum PagingMode {
112
235
  Project = 'project',
113
236
  Repo = 'repo',
@@ -134,16 +257,37 @@ export interface GetPullRequestsOptions {
134
257
  authorLogin?: string;
135
258
  assigneeLogins?: string[];
136
259
  reviewRequestedLogin?: string;
260
+ // Reviewer filters keyed differently per provider: GitHub/GitLab use reviewRequestedLogin (login),
261
+ // Bitbucket/Azure DevOps use reviewerId (account id), Bitbucket Server uses reviewerLogin (login).
262
+ reviewerId?: string;
263
+ reviewerLogin?: string;
137
264
  mentionLogin?: string;
265
+ // PR states to include; when omitted the provider returns its default (open only).
266
+ states?: GitPullRequestState[];
138
267
  query?: string;
139
268
  cursor?: string; // stringified JSON object of type { type: 'cursor' | 'page'; value: string | number } | {}
140
269
  baseUrl?: string;
270
+ // 1-based page to request from numbered-page providers; takes precedence over a page-typed cursor.
271
+ page?: number;
272
+ // Items to request per page (numbered-page providers, plus GitHub's maxPageSize).
273
+ pageSize?: number;
274
+ // Opt in to repository remote metadata (clone URLs) when the PR payload lacks it. Only Azure DevOps
275
+ // acts on this today (extra API call); it is a no-op for the other providers.
276
+ includeRemoteInfo?: boolean;
141
277
  }
142
278
 
143
279
  export interface GetPullRequestsForUserOptions {
144
280
  includeFromArchivedRepos?: boolean;
145
281
  cursor?: string; // stringified JSON object of type { type: 'cursor' | 'page'; value: string | number } | {}
146
282
  baseUrl?: string;
283
+ // PR states to include; when omitted the provider returns its default (open only).
284
+ states?: GitPullRequestState[];
285
+ /**
286
+ * Items to request per page. Worth setting explicitly on an account-wide read that gets DRAINED: each
287
+ * provider falls back to its own historical page size when this is omitted, and GitHub's is 15
288
+ * (`MAX_PR_PAGE_SIZE`), so a drain pays ~7x the round trips of the 100 its search actually allows.
289
+ */
290
+ pageSize?: number;
147
291
  }
148
292
 
149
293
  export interface GetPullRequestsForUserInput extends GetPullRequestsForUserOptions {
@@ -170,8 +314,14 @@ export interface GetIssuesOptions {
170
314
  authorLogin?: string;
171
315
  assigneeLogins?: string[];
172
316
  mentionLogin?: string;
317
+ // Issue states to include; when omitted the provider returns its default (open only).
318
+ states?: GitIssueState[];
173
319
  cursor?: string; // stringified JSON object of type { type: 'cursor' | 'page'; value: string | number } | {}
174
320
  baseUrl?: string;
321
+ // 1-based page to request from numbered-page providers; takes precedence over a page-typed cursor.
322
+ page?: number;
323
+ // Items to request per page (numbered-page providers, plus GitHub's maxPageSize).
324
+ pageSize?: number;
175
325
  }
176
326
 
177
327
  export interface GetIssuesForRepoInput extends GetIssuesOptions {
@@ -209,6 +359,10 @@ export interface PageInfo {
209
359
  hasNextPage: boolean;
210
360
  endCursor?: string | null;
211
361
  nextPage?: number | null;
362
+ // Numbered-page providers (Bitbucket, Bitbucket Server, Azure DevOps) additionally report these.
363
+ currentPage?: number | null;
364
+ totalPages?: number | null;
365
+ totalCount?: number | null;
212
366
  }
213
367
 
214
368
  export type GetRepoFn = (
@@ -223,7 +377,10 @@ export type GetRepoOfProjectFn = (
223
377
  export type GetPullRequestsForReposFn = (
224
378
  input: (GetPullRequestsForReposInput | GetPullRequestsForRepoIdsInput) & PagingInput,
225
379
  options?: EnterpriseOptions,
226
- ) => Promise<{ data: ProviderPullRequest[]; pageInfo?: PageInfo }>;
380
+ // `metadata` carries SDK collection completeness/failures for multi-repo fan-outs (Bitbucket, Azure DevOps,
381
+ // Bitbucket Server); `pageInfo` is present for the cursor-based aggregate (GitHub). Both are optional so
382
+ // each provider only sets what it actually reports.
383
+ ) => Promise<{ data: ProviderPullRequest[]; pageInfo?: PageInfo; metadata?: CollectionMetadata }>;
227
384
 
228
385
  export type GetPullRequestsForRepoFn = (
229
386
  input: GetPullRequestsForRepoInput & PagingInput,
@@ -236,9 +393,32 @@ export type GetPullRequestsForUserFn = (
236
393
  ) => Promise<{ data: ProviderPullRequest[]; pageInfo?: PageInfo }>;
237
394
 
238
395
  export type GetPullRequestsForAzureProjectsFn = (
239
- input: { projects: { namespace: string; project: string }[]; authorLogin?: string; assigneeLogins?: string[] },
396
+ input: {
397
+ projects: { namespace: string; project: string }[];
398
+ authorLogin?: string;
399
+ assigneeLogins?: string[];
400
+ reviewerId?: string;
401
+ states?: GitPullRequestState[];
402
+ repo?: ProviderRepoInput;
403
+ },
240
404
  options?: EnterpriseOptions,
241
- ) => Promise<{ data: ProviderPullRequest[] }>;
405
+ // Aggregate multi-project fan-out: no `pageInfo` (call getPullRequestsForAzureProject for that), but SDK
406
+ // collection metadata reports per-project completeness/failures.
407
+ ) => Promise<{ data: ProviderPullRequest[]; metadata?: CollectionMetadata }>;
408
+
409
+ /** Single Azure project PR read, paginated by number (unlike the aggregate {@link GetPullRequestsForAzureProjectsFn}). */
410
+ export type GetPullRequestsForAzureProjectFn = (
411
+ input: {
412
+ namespace: string;
413
+ project: string;
414
+ authorLogin?: string;
415
+ assigneeLogins?: string[];
416
+ reviewerId?: string;
417
+ states?: GitPullRequestState[];
418
+ repo?: ProviderRepoInput;
419
+ } & PagingInput,
420
+ options?: EnterpriseOptions,
421
+ ) => Promise<{ data: ProviderPullRequest[]; pageInfo: { hasNextPage: boolean; nextPage: number | null } }>;
242
422
 
243
423
  export type MergePullRequestFn =
244
424
  | ((
@@ -292,8 +472,18 @@ export type GetIssuesForReposFn = (
292
472
  options?: EnterpriseOptions,
293
473
  ) => Promise<{ data: ProviderIssue[]; pageInfo?: PageInfo }>;
294
474
 
475
+ export type GetIssuesForCurrentUserInput = PagingInput & {
476
+ // GitLab's account-wide REST read (`GET /issues`): `scope` controls breadth ('assigned_to_me' vs 'all') and
477
+ // the username fields independently narrow a broad read to a specific assignee or author. Other providers
478
+ // (Linear) ignore these and page purely off the cursor.
479
+ scope?: 'assigned_to_me' | 'all';
480
+ assigneeUsername?: string;
481
+ authorUsername?: string;
482
+ pageSize?: number;
483
+ };
484
+
295
485
  export type GetIssuesForCurrentUserFn = (
296
- input: PagingInput,
486
+ input: GetIssuesForCurrentUserInput,
297
487
  options?: EnterpriseOptions,
298
488
  ) => Promise<{ data: ProviderIssue[]; pageInfo?: PageInfo }>;
299
489
 
@@ -312,6 +502,29 @@ export type GetReposForAzureProjectFn = (
312
502
  options?: EnterpriseOptions,
313
503
  ) => Promise<{ data: ProviderRepository[]; pageInfo?: PageInfo }>;
314
504
 
505
+ export type GetOrgsForCurrentUserFn = (
506
+ input?: CursorPageInput,
507
+ options?: EnterpriseOptions,
508
+ ) => Promise<{ data: ProviderGitHubOrganization[]; pageInfo?: PageInfo }>;
509
+ export type GetReposForOrgFn = (
510
+ input: { orgName: string } & PagingInput,
511
+ options?: EnterpriseOptions,
512
+ ) => Promise<{ data: ProviderRepository[]; pageInfo?: PageInfo }>;
513
+ export type GetReposForWorkspaceFn = (
514
+ input: { workspace: string } & PagingInput,
515
+ options?: EnterpriseOptions,
516
+ ) => Promise<{ data: ProviderRepository[]; pageInfo?: PageInfo }>;
517
+ export type GetReposForCurrentUserFn = (
518
+ // `affiliations` narrows GitHub's `/user/repos` read (owner/collaborator/organization_member);
519
+ // GitLab's equivalent read ignores it.
520
+ input: PagingInput & { affiliations?: ('owner' | 'collaborator' | 'organization_member')[] },
521
+ options?: EnterpriseOptions,
522
+ ) => Promise<{ data: ProviderRepository[]; pageInfo?: PageInfo }>;
523
+ export type GetGroupsForCurrentUserFn = (
524
+ input?: { topLevelOnly?: boolean } & PagingInput,
525
+ options?: EnterpriseOptions,
526
+ ) => Promise<{ data: ProviderGitLabGroup[]; pageInfo?: PageInfo }>;
527
+
315
528
  export type GetCurrentUserFn = (
316
529
  input: Record<string, never>,
317
530
  options?: EnterpriseOptions,
@@ -328,10 +541,40 @@ export type GetCurrentUserForResourceFn = (
328
541
  export type GetJiraResourcesForCurrentUserFn = (options?: EnterpriseOptions) => Promise<{ data: JiraResource[] }>;
329
542
  export type GetLinearOrganizationFn = (options?: EnterpriseOptions) => Promise<{ data: LinearOrganization }>;
330
543
  export type GetLinearTeamsForCurrentUserFn = (options?: EnterpriseOptions) => Promise<{ data: LinearTeam[] }>;
544
+ export type GetLinearIssuesFn = (
545
+ input: { teams?: string[]; projects?: string[]; labels?: string[] } & PagingInput,
546
+ options?: EnterpriseOptions,
547
+ ) => Promise<{ data: ProviderIssue[]; pageInfo?: PageInfo }>;
548
+ /**
549
+ * Linear's current-user (viewer) query. Its raw `@linear/sdk` User isn't a `ProviderAccount` (no
550
+ * username/avatar/url), so it's typed with the minimal fields the viewer query actually returns rather than
551
+ * importing `@linear/sdk` (which is bundled in the SDK dist and not a resolvable top-level dependency).
552
+ */
553
+ export type GetLinearCurrentUserFn = (
554
+ options?: EnterpriseOptions,
555
+ ) => Promise<{ data: { id: string; name?: string | null; email?: string | null; displayName?: string | null } }>;
331
556
  export type GetJiraProjectsForResourcesFn = (
332
557
  input: { resourceIds: string[] },
333
558
  options?: EnterpriseOptions,
334
- ) => Promise<{ data: JiraProject[] }>;
559
+ // Fan-out across resources: preserves successful resources' projects and reports per-resource failures in
560
+ // SDK collection metadata instead of throwing when a single resource fails.
561
+ ) => Promise<{ data: JiraProject[]; metadata?: CollectionMetadata }>;
562
+ export type GetJiraProjectsForResourceFn = (
563
+ input: { resourceId: string } & CursorPageInput,
564
+ options?: EnterpriseOptions,
565
+ ) => Promise<{ data: JiraProject[]; pageInfo?: PageInfo; metadata?: CollectionMetadata }>;
566
+ export type GetGitLabPullRequestsForUserAssociationFn = (
567
+ input: {
568
+ username: string;
569
+ association: 'assigned' | 'authored' | 'reviewRequested';
570
+ includeFromArchivedRepos?: boolean;
571
+ labelNames?: string[];
572
+ repo?: ProviderRepoInput;
573
+ states?: GitPullRequestState[];
574
+ pageSize?: number;
575
+ } & CursorPageInput,
576
+ options?: EnterpriseOptions,
577
+ ) => Promise<{ data: ProviderPullRequest[]; pageInfo?: PageInfo }>;
335
578
  export type GetAzureResourcesForUserFn = (
336
579
  input: { userId: string },
337
580
  options?: EnterpriseOptions,
@@ -341,13 +584,14 @@ export type GetAzureProjectsForResourceFn = (
341
584
  options?: EnterpriseOptions,
342
585
  ) => Promise<{ data: AzureProject[]; pageInfo?: PageInfo }>;
343
586
  export type GetBitbucketResourcesForCurrentUserFn = (
344
- input: Record<string, never>,
587
+ input: { page?: number },
345
588
  options?: EnterpriseOptions,
346
- ) => Promise<{ data: BitbucketWorkspaceStub[] }>;
589
+ ) => Promise<{ data: BitbucketWorkspaceStub[]; pageInfo?: PageInfo }>;
347
590
  export type GetBitbucketPullRequestsAuthoredByUserForWorkspaceFn = (
348
591
  input: {
349
592
  userId: string;
350
593
  workspaceSlug: string;
594
+ states?: GitPullRequestState[];
351
595
  } & NumberedPageInput,
352
596
  options?: EnterpriseOptions,
353
597
  ) => Promise<{
@@ -358,7 +602,7 @@ export type GetBitbucketPullRequestsAuthoredByUserForWorkspaceFn = (
358
602
  data: GitPullRequest[];
359
603
  }>;
360
604
  export type GetBitbucketServerPullRequestsForCurrentUserFn = (
361
- input: NumberedPageInput,
605
+ input: { states?: GitPullRequestState[] } & NumberedPageInput,
362
606
  options?: EnterpriseOptions,
363
607
  ) => Promise<{
364
608
  pageInfo: {
@@ -373,6 +617,15 @@ export type GetIssuesForResourceForCurrentUserFn = (
373
617
  options?: EnterpriseOptions,
374
618
  ) => Promise<{ data: ProviderIssue[] }>;
375
619
 
620
+ // Trello reads (issues-capable provider). The Trello client is keyed by an `appKey` (the Trello app key from
621
+ // the cloud token exchange) alongside the OAuth token, so these mirror the client method shapes directly.
622
+ export type GetTrelloCurrentUserFn = Trello['getCurrentUser'];
623
+ export type GetTrelloBoardsForCurrentUserFn = Trello['getBoardsForCurrentUser'];
624
+ export type GetTrelloListsForBoardFn = Trello['getListsForTrelloBoard'];
625
+ export type GetTrelloAccountForIdFn = Trello['getAccountForId'];
626
+ export type GetTrelloIssuesForBoardFn = Trello['getIssuesForBoard'];
627
+ export type GetTrelloLabelsForBoardFn = Trello['getLabelsForBoard'];
628
+
376
629
  export interface ProviderInfo extends ProviderMetadata {
377
630
  provider: GitHub | GitLab | Bitbucket | BitbucketServer | Jira | Linear | Trello | AzureDevOps;
378
631
  getRepoFn?: GetRepoFn;
@@ -380,7 +633,9 @@ export interface ProviderInfo extends ProviderMetadata {
380
633
  getPullRequestsForReposFn?: GetPullRequestsForReposFn;
381
634
  getPullRequestsForRepoFn?: GetPullRequestsForRepoFn;
382
635
  getPullRequestsForUserFn?: GetPullRequestsForUserFn;
636
+ getGitLabPullRequestsForUserAssociationFn?: GetGitLabPullRequestsForUserAssociationFn;
383
637
  getPullRequestsForAzureProjectsFn?: GetPullRequestsForAzureProjectsFn;
638
+ getPullRequestsForAzureProjectFn?: GetPullRequestsForAzureProjectFn;
384
639
  getIssueFn?: GetIssueFn;
385
640
  getIssuesForReposFn?: GetIssuesForReposFn;
386
641
  getIssuesForCurrentUserFn?: GetIssuesForCurrentUserFn;
@@ -392,16 +647,30 @@ export interface ProviderInfo extends ProviderMetadata {
392
647
  getJiraResourcesForCurrentUserFn?: GetJiraResourcesForCurrentUserFn;
393
648
  getLinearOrganizationFn?: GetLinearOrganizationFn;
394
649
  getLinearTeamsForCurrentUserFn?: GetLinearTeamsForCurrentUserFn;
650
+ getLinearIssuesFn?: GetLinearIssuesFn;
651
+ getLinearCurrentUserFn?: GetLinearCurrentUserFn;
395
652
  getAzureResourcesForUserFn?: GetAzureResourcesForUserFn;
396
653
  getBitbucketResourcesForCurrentUserFn?: GetBitbucketResourcesForCurrentUserFn;
397
654
  getBitbucketPullRequestsAuthoredByUserForWorkspaceFn?: GetBitbucketPullRequestsAuthoredByUserForWorkspaceFn;
398
655
  getBitbucketServerPullRequestsForCurrentUserFn?: GetBitbucketServerPullRequestsForCurrentUserFn;
399
656
  getJiraProjectsForResourcesFn?: GetJiraProjectsForResourcesFn;
657
+ getJiraProjectsForResourceFn?: GetJiraProjectsForResourceFn;
400
658
  getAzureProjectsForResourceFn?: GetAzureProjectsForResourceFn;
401
659
  getIssuesForProjectFn?: GetIssuesForProjectFn;
402
660
  getReposForAzureProjectFn?: GetReposForAzureProjectFn;
403
661
  getIssuesForResourceForCurrentUserFn?: GetIssuesForResourceForCurrentUserFn;
404
662
  mergePullRequestFn?: MergePullRequestFn;
663
+ getOrgsForCurrentUserFn?: GetOrgsForCurrentUserFn;
664
+ getReposForOrgFn?: GetReposForOrgFn;
665
+ getReposForWorkspaceFn?: GetReposForWorkspaceFn;
666
+ getReposForCurrentUserFn?: GetReposForCurrentUserFn;
667
+ getGroupsForCurrentUserFn?: GetGroupsForCurrentUserFn;
668
+ getTrelloCurrentUserFn?: GetTrelloCurrentUserFn;
669
+ getTrelloBoardsForCurrentUserFn?: GetTrelloBoardsForCurrentUserFn;
670
+ getTrelloListsForBoardFn?: GetTrelloListsForBoardFn;
671
+ getTrelloAccountForIdFn?: GetTrelloAccountForIdFn;
672
+ getTrelloIssuesForBoardFn?: GetTrelloIssuesForBoardFn;
673
+ getTrelloLabelsForBoardFn?: GetTrelloLabelsForBoardFn;
405
674
  }
406
675
 
407
676
  export interface ProviderMetadata {
@@ -416,7 +685,28 @@ export interface ProviderMetadata {
416
685
  pullRequestsPagingMode?: PagingMode;
417
686
  scopes: string[];
418
687
  supportedPullRequestFilters?: PullRequestFilter[];
688
+ /**
689
+ * Relationship filters the ACCOUNT-WIDE pull-request read can express as an exact OR union.
690
+ * This is independent from `supportedPullRequestFilters`, which describes repo-scoped reads.
691
+ */
692
+ supportedAccountWidePullRequestFilters?: PullRequestFilter[];
693
+ /** Filters the REPO-scoped issue read can express. */
419
694
  supportedIssueFilters?: IssueFilter[];
695
+ /**
696
+ * Filters the ACCOUNT-WIDE issue read can express, which is NOT the same set as
697
+ * {@link ProviderMetadata.supportedIssueFilters}: the two reads are different provider queries.
698
+ *
699
+ * Unfiltered, each provider's account-wide read is that provider's own definition of "my issues" — GitHub/GHE
700
+ * union authored + assigned + mentioned, Azure drains assigned + authored, and GitLab reads assigned-to-me.
701
+ * A consumer replacing a narrower tool (`gk`'s `assignee:@me`) must select the `Assignee` filter wherever the
702
+ * provider's default is wider.
703
+ *
704
+ * A filter listed here narrows that read server-side. Absent/empty means the read can't be narrowed at all,
705
+ * so the facade refuses a filtered request rather than serving the unnarrowed union as if it had been
706
+ * filtered. GitLab lists `Assignee` and `Author` because the SDK's account-wide input exposes both username
707
+ * axes; it omits `Mention` because that REST read has no first-class mention filter.
708
+ */
709
+ supportedAccountWideIssueFilters?: IssueFilter[];
420
710
  }
421
711
 
422
712
  export type Providers = Record<IntegrationIds, ProviderInfo>;
@@ -438,8 +728,17 @@ export const providersMetadata: ProvidersMetadata = {
438
728
  PullRequestFilter.ReviewRequested,
439
729
  PullRequestFilter.Mention,
440
730
  ],
731
+ supportedAccountWidePullRequestFilters: [
732
+ PullRequestFilter.Author,
733
+ PullRequestFilter.Assignee,
734
+ PullRequestFilter.ReviewRequested,
735
+ PullRequestFilter.Mention,
736
+ ],
441
737
  // Use 'username' property on account for issue filters
442
738
  supportedIssueFilters: [IssueFilter.Author, IssueFilter.Assignee, IssueFilter.Mention],
739
+ // The account-wide read is three independent searches (`author:@me`, `assignee:@me`, `mentions:@me`) behind
740
+ // one composite cursor, so any subset of them is expressible.
741
+ supportedAccountWideIssueFilters: [IssueFilter.Author, IssueFilter.Assignee, IssueFilter.Mention],
443
742
  scopes: ['repo', 'read:user', 'user:email'],
444
743
  },
445
744
  [GitSelfManagedHostIntegrationId.CloudGitHubEnterprise]: {
@@ -457,8 +756,17 @@ export const providersMetadata: ProvidersMetadata = {
457
756
  PullRequestFilter.ReviewRequested,
458
757
  PullRequestFilter.Mention,
459
758
  ],
759
+ supportedAccountWidePullRequestFilters: [
760
+ PullRequestFilter.Author,
761
+ PullRequestFilter.Assignee,
762
+ PullRequestFilter.ReviewRequested,
763
+ PullRequestFilter.Mention,
764
+ ],
460
765
  // Use 'username' property on account for issue filters
461
766
  supportedIssueFilters: [IssueFilter.Author, IssueFilter.Assignee, IssueFilter.Mention],
767
+ // The account-wide read is three independent searches (`author:@me`, `assignee:@me`, `mentions:@me`) behind
768
+ // one composite cursor, so any subset of them is expressible.
769
+ supportedAccountWideIssueFilters: [IssueFilter.Author, IssueFilter.Assignee, IssueFilter.Mention],
462
770
  scopes: ['repo', 'read:user', 'user:email'],
463
771
  },
464
772
  [GitCloudHostIntegrationId.GitLab]: {
@@ -475,8 +783,17 @@ export const providersMetadata: ProvidersMetadata = {
475
783
  PullRequestFilter.Assignee,
476
784
  PullRequestFilter.ReviewRequested,
477
785
  ],
786
+ supportedAccountWidePullRequestFilters: [
787
+ PullRequestFilter.Author,
788
+ PullRequestFilter.Assignee,
789
+ PullRequestFilter.ReviewRequested,
790
+ ],
478
791
  // Use 'username' property on account for issue filters
479
792
  supportedIssueFilters: [IssueFilter.Author, IssueFilter.Assignee],
793
+ // The account-wide read drains one `scope=assigned_to_me` pass and one `scope=all` + `authorUsername` pass,
794
+ // unioned, so either axis is expressible on its own. Mention is absent because GitLab's REST issue read has
795
+ // no first-class mention filter to narrow with.
796
+ supportedAccountWideIssueFilters: [IssueFilter.Assignee, IssueFilter.Author],
480
797
  scopes: ['api', 'read_user', 'read_repository'],
481
798
  },
482
799
  [GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted]: {
@@ -493,8 +810,17 @@ export const providersMetadata: ProvidersMetadata = {
493
810
  PullRequestFilter.Assignee,
494
811
  PullRequestFilter.ReviewRequested,
495
812
  ],
813
+ supportedAccountWidePullRequestFilters: [
814
+ PullRequestFilter.Author,
815
+ PullRequestFilter.Assignee,
816
+ PullRequestFilter.ReviewRequested,
817
+ ],
496
818
  // Use 'username' property on account for issue filters
497
819
  supportedIssueFilters: [IssueFilter.Author, IssueFilter.Assignee],
820
+ // The account-wide read drains one `scope=assigned_to_me` pass and one `scope=all` + `authorUsername` pass,
821
+ // unioned, so either axis is expressible on its own. Mention is absent because GitLab's REST issue read has
822
+ // no first-class mention filter to narrow with.
823
+ supportedAccountWideIssueFilters: [IssueFilter.Assignee, IssueFilter.Author],
498
824
  scopes: ['api', 'read_user', 'read_repository'],
499
825
  },
500
826
  [GitCloudHostIntegrationId.Bitbucket]: {
@@ -504,8 +830,9 @@ export const providersMetadata: ProvidersMetadata = {
504
830
  type: 'git',
505
831
  iconKey: GitCloudHostIntegrationId.Bitbucket,
506
832
  pullRequestsPagingMode: PagingMode.Repo,
507
- // Use 'id' property on account for PR filters
508
- supportedPullRequestFilters: [PullRequestFilter.Author],
833
+ // Use 'id' property on account for PR filters (reviewer filter keyed by account id / reviewerId)
834
+ supportedPullRequestFilters: [PullRequestFilter.Author, PullRequestFilter.ReviewRequested],
835
+ supportedAccountWidePullRequestFilters: [PullRequestFilter.Author, PullRequestFilter.ReviewRequested],
509
836
  scopes: ['account:read', 'repository:read', 'pullrequest:read', 'issue:read'],
510
837
  },
511
838
  [GitSelfManagedHostIntegrationId.BitbucketServer]: {
@@ -515,6 +842,7 @@ export const providersMetadata: ProvidersMetadata = {
515
842
  type: 'git',
516
843
  iconKey: GitSelfManagedHostIntegrationId.BitbucketServer,
517
844
  supportedPullRequestFilters: [PullRequestFilter.Author, PullRequestFilter.ReviewRequested],
845
+ supportedAccountWidePullRequestFilters: [PullRequestFilter.Author, PullRequestFilter.ReviewRequested],
518
846
  scopes: ['Project (Read)', 'Repository (Write)'],
519
847
  },
520
848
  [GitCloudHostIntegrationId.AzureDevOps]: {
@@ -525,10 +853,22 @@ export const providersMetadata: ProvidersMetadata = {
525
853
  iconKey: GitCloudHostIntegrationId.AzureDevOps,
526
854
  issuesPagingMode: PagingMode.Project,
527
855
  pullRequestsPagingMode: PagingMode.Repo,
528
- // Use 'id' property on account for PR filters
529
- supportedPullRequestFilters: [PullRequestFilter.Author, PullRequestFilter.Assignee],
856
+ // Use 'id' property on account for PR filters (reviewer filter keyed by account id / reviewerId)
857
+ supportedPullRequestFilters: [
858
+ PullRequestFilter.Author,
859
+ PullRequestFilter.Assignee,
860
+ PullRequestFilter.ReviewRequested,
861
+ ],
862
+ supportedAccountWidePullRequestFilters: [
863
+ PullRequestFilter.Author,
864
+ PullRequestFilter.Assignee,
865
+ PullRequestFilter.ReviewRequested,
866
+ ],
530
867
  // Use 'name' property on account for issue filters
531
868
  supportedIssueFilters: [IssueFilter.Author, IssueFilter.Assignee, IssueFilter.Mention],
869
+ // The account-wide read drains one (project × assignee) and one (project × author) query per project, so
870
+ // either axis is expressible on its own. There is no mention query to narrow to.
871
+ supportedAccountWideIssueFilters: [IssueFilter.Author, IssueFilter.Assignee],
532
872
  scopes: ['vso.code', 'vso.identity', 'vso.project', 'vso.profile', 'vso.work'],
533
873
  },
534
874
  [GitSelfManagedHostIntegrationId.AzureDevOpsServer]: {
@@ -539,10 +879,22 @@ export const providersMetadata: ProvidersMetadata = {
539
879
  iconKey: GitCloudHostIntegrationId.AzureDevOps,
540
880
  issuesPagingMode: PagingMode.Project,
541
881
  pullRequestsPagingMode: PagingMode.Repo,
542
- // Use 'id' property on account for PR filters
543
- supportedPullRequestFilters: [PullRequestFilter.Author, PullRequestFilter.Assignee],
882
+ // Use 'id' property on account for PR filters (reviewer filter keyed by account id / reviewerId)
883
+ supportedPullRequestFilters: [
884
+ PullRequestFilter.Author,
885
+ PullRequestFilter.Assignee,
886
+ PullRequestFilter.ReviewRequested,
887
+ ],
888
+ supportedAccountWidePullRequestFilters: [
889
+ PullRequestFilter.Author,
890
+ PullRequestFilter.Assignee,
891
+ PullRequestFilter.ReviewRequested,
892
+ ],
544
893
  // Use 'name' property on account for issue filters
545
894
  supportedIssueFilters: [IssueFilter.Author, IssueFilter.Assignee, IssueFilter.Mention],
895
+ // The account-wide read drains one (project × assignee) and one (project × author) query per project, so
896
+ // either axis is expressible on its own. There is no mention query to narrow to.
897
+ supportedAccountWideIssueFilters: [IssueFilter.Author, IssueFilter.Assignee],
546
898
  scopes: ['vso.code', 'vso.identity', 'vso.project', 'vso.profile', 'vso.work'],
547
899
  },
548
900
  [IssuesCloudHostIntegrationId.Jira]: {
@@ -596,6 +948,8 @@ export const providersMetadata: ProvidersMetadata = {
596
948
  type: 'issues',
597
949
  iconKey: IssuesCloudHostIntegrationId.Linear,
598
950
  scopes: [],
951
+ // Linear scopes "my issues" client-side by the viewer's assignee id; author/mention aren't supported.
952
+ supportedIssueFilters: [IssueFilter.Assignee],
599
953
  },
600
954
  [IssuesCloudHostIntegrationId.Trello]: {
601
955
  domain: 'trello.com',
@@ -604,6 +958,8 @@ export const providersMetadata: ProvidersMetadata = {
604
958
  type: 'issues',
605
959
  iconKey: IssuesCloudHostIntegrationId.Trello,
606
960
  scopes: [],
961
+ // Trello cards are filtered by the assignee (member) only; author/mention have no Trello equivalent.
962
+ supportedIssueFilters: [IssueFilter.Assignee],
607
963
  },
608
964
  };
609
965
 
@@ -629,14 +985,29 @@ export function getReasonsForUserIssue(issue: ProviderIssue, userLogin: string):
629
985
  return reasons;
630
986
  }
631
987
 
988
+ function toIssueIdentifier(value: string | number): string {
989
+ return String(value);
990
+ }
991
+
632
992
  export function toIssueShape(issue: ProviderIssue, provider: ProviderReference): IssueShape | undefined {
633
993
  // TODO: Add some protections/baselines rather than killing the transformation here
634
- if (issue.updatedDate == null || issue.author == null || issue.url == null) return undefined;
994
+ // `author` is intentionally not required: some providers have no per-item creator (e.g. Trello cards,
995
+ // which the SDK maps with `author: null`), and dropping every such item would discard the whole board.
996
+ // Fall back to an empty author instead so these issues still surface.
997
+ if (issue.updatedDate == null || issue.url == null) return undefined;
635
998
 
636
999
  return {
637
1000
  type: 'issue',
638
1001
  provider: provider,
639
- id: issue.number,
1002
+ // `id` is the provider's display number/key (GitHub number, Jira/Linear key, Trello idShort), NOT a
1003
+ // globally-unique id: it's rendered to users as `#{id}`, used to build branch names, and passed back
1004
+ // to the provider as the `getIssue`/cache lookup key, all of which expect the number. `nodeId` is the
1005
+ // provider-native stable id, but its uniqueness scope is provider-specific (Azure work-item ids are
1006
+ // organization-scoped), so cross-scope consumers must include provider/domain/container identity too.
1007
+ // provider-apis declares this as a string, but some providers (notably
1008
+ // Azure's broadened work-item path) return a number at runtime. Keep the
1009
+ // public IssueShape contract truthful for consumers that use string APIs.
1010
+ id: toIssueIdentifier(issue.number),
640
1011
  nodeId: issue.graphQLId ?? issue.id,
641
1012
  title: issue.title,
642
1013
  url: issue.url,
@@ -646,35 +1017,60 @@ export function toIssueShape(issue: ProviderIssue, provider: ProviderReference):
646
1017
  closed: issue.closedDate != null,
647
1018
  state: issue.closedDate != null ? 'closed' : 'opened',
648
1019
  author: {
649
- id: issue.author.id ?? '',
650
- name: issue.author.name ?? '',
651
- avatarUrl: issue.author.avatarUrl ?? undefined,
652
- url: issue.author.url ?? undefined,
1020
+ id: issue.author?.id ?? '',
1021
+ // An absent name stays absent, matching {@link fromProviderAccount}; see `IssueMember.name`.
1022
+ name: issue.author?.name ?? undefined,
1023
+ avatarUrl: issue.author?.avatarUrl ?? undefined,
1024
+ url: issue.author?.url ?? undefined,
653
1025
  },
654
1026
  assignees:
655
1027
  issue.assignees?.map(assignee => ({
656
1028
  id: assignee.id ?? '',
657
- name: assignee.name ?? '',
1029
+ name: assignee.name ?? undefined,
658
1030
  avatarUrl: assignee.avatarUrl ?? undefined,
659
1031
  url: assignee.url ?? undefined,
660
1032
  })) ?? [],
661
- project: {
662
- id: issue.project?.id ?? '',
663
- name: issue.project?.name ?? '',
664
- resourceId: issue.project?.resourceId ?? '',
665
- resourceName: issue.project?.namespace ?? '',
666
- },
1033
+ project:
1034
+ issue.project?.id && issue.project.resourceId && issue.project.namespace
1035
+ ? {
1036
+ id: issue.project.id,
1037
+ name: issue.project.name,
1038
+ resourceId: issue.project.resourceId,
1039
+ resourceName: issue.project.namespace,
1040
+ }
1041
+ : undefined,
667
1042
  repository:
668
1043
  issue.repository?.owner?.login != null
669
1044
  ? {
670
1045
  owner: issue.repository.owner.login,
671
1046
  repo: issue.repository.name,
1047
+ id: issue.repository.id,
672
1048
  }
673
1049
  : undefined,
674
1050
  labels: issue.labels.map(label => ({ color: label.color ?? undefined, name: label.name })),
675
1051
  commentsCount: issue.commentCount ?? undefined,
676
1052
  thumbsUpCount: issue.upvoteCount ?? undefined,
677
1053
  body: issue.description ?? undefined,
1054
+ issueType: issue.type ?? undefined,
1055
+ };
1056
+ }
1057
+
1058
+ /**
1059
+ * Maps a raw provider-apis {@link ProviderRepository} to the GitLens-owned {@link ProviderRepositoryShape}
1060
+ * the ProviderBackend `listRepos` facade surfaces, so consumers don't depend on the SDK repo type. The SDK's
1061
+ * nullable fields (`webUrl`/`httpsUrl`/`sshUrl`/`defaultBranch`) collapse to `undefined`, matching the
1062
+ * `?? undefined` convention in {@link toIssueShape}/{@link toAccount}.
1063
+ */
1064
+ export function toProviderRepositoryShape(repo: ProviderRepository): ProviderRepositoryShape {
1065
+ return {
1066
+ id: repo.id,
1067
+ namespace: repo.namespace,
1068
+ name: repo.name,
1069
+ project: repo.project ?? undefined,
1070
+ url: repo.webUrl ?? undefined,
1071
+ cloneUrlHttps: repo.httpsUrl ?? undefined,
1072
+ cloneUrlSsh: repo.sshUrl ?? undefined,
1073
+ defaultBranch: repo.defaultBranch?.name ?? undefined,
678
1074
  };
679
1075
  }
680
1076
 
@@ -829,16 +1225,91 @@ export function fromProviderPullRequestState(state: GitPullRequestState): PullRe
829
1225
  return state === GitPullRequestState.Open ? 'opened' : state === GitPullRequestState.Closed ? 'closed' : 'merged';
830
1226
  }
831
1227
 
1228
+ type PullRequestStateInput = PullRequestState | PullRequestStateFilter;
1229
+
1230
+ function toProviderPullRequestStatesCore(state: PullRequestStateInput): GitPullRequestState[] {
1231
+ switch (state) {
1232
+ case 'open':
1233
+ case 'opened':
1234
+ return [GitPullRequestState.Open];
1235
+ case 'closed':
1236
+ return [GitPullRequestState.Closed];
1237
+ case 'merged':
1238
+ return [GitPullRequestState.Merged];
1239
+ case 'all':
1240
+ return [GitPullRequestState.Open, GitPullRequestState.Closed, GitPullRequestState.Merged];
1241
+ }
1242
+ }
1243
+
1244
+ /** Maps PR include/state filters to the SDK's `states` input. `undefined`/omitted preserves the open-only default. */
1245
+ export function toProviderPullRequestStates(
1246
+ state: PullRequestStateInput | PullRequestStateInput[] | undefined,
1247
+ ): GitPullRequestState[] | undefined {
1248
+ if (state == null) return undefined;
1249
+
1250
+ const states = (Array.isArray(state) ? state : [state]).flatMap(s => toProviderPullRequestStatesCore(s));
1251
+ return states.length > 0 ? [...new Set(states)] : undefined;
1252
+ }
1253
+
1254
+ /** Maps an issue state filter to the SDK's `states` input. `undefined`/omitted preserves the open-only default. */
1255
+ export function toProviderIssueStates(state: IssueStateFilter | undefined): GitIssueState[] | undefined {
1256
+ switch (state) {
1257
+ case 'open':
1258
+ return [GitIssueState.Open];
1259
+ case 'closed':
1260
+ return [GitIssueState.Closed];
1261
+ case 'all':
1262
+ return [GitIssueState.Open, GitIssueState.Closed];
1263
+ default:
1264
+ return undefined;
1265
+ }
1266
+ }
1267
+
1268
+ /**
1269
+ * Resolves a normalized {@link ProviderScope} to the provider-appropriate read inputs, dispatching on the
1270
+ * provider's {@link PagingMode} (the authoritative per-provider scoping selector). Project-mode providers
1271
+ * (Azure issues, Jira) produce `projectInputs` from `org` + `project`; repo/repos-mode providers produce a
1272
+ * repo `GetRepoInput[]` from `scope.repos` (carrying `project` where relevant, e.g. Azure). This is the
1273
+ * single public entry point consumers can use instead of hand-building the three underlying representations.
1274
+ */
1275
+ export function resolveProviderScope(
1276
+ scope: ProviderScope,
1277
+ pagingMode: PagingMode | undefined,
1278
+ ): { reposInput?: GetRepoInput[]; projectInputs?: { namespace: string; project: string }[] } {
1279
+ if (pagingMode === PagingMode.Project) {
1280
+ if (scope.org != null && scope.project != null) {
1281
+ return { projectInputs: [{ namespace: scope.org, project: scope.project }] };
1282
+ }
1283
+ return {};
1284
+ }
1285
+
1286
+ const reposInput = scope.repos?.map(r => ({ namespace: r.owner, name: r.name, project: scope.project }));
1287
+ return { reposInput: reposInput };
1288
+ }
1289
+
1290
+ export function providerPullRequestMatchesSearch(pr: ProviderPullRequest, search: string): boolean {
1291
+ const term = search.trim().toLowerCase();
1292
+ if (term.length === 0) return true;
1293
+
1294
+ return pr.title.toLowerCase().includes(term) || (pr.description?.toLowerCase().includes(term) ?? false);
1295
+ }
1296
+
1297
+ function toProviderRemoteInfo(ref: PullRequestRef | undefined): GitRepositoryRemoteInfo | null {
1298
+ // Match the SDK convention: only populate remoteInfo when both clone URLs are known.
1299
+ return ref?.cloneHttps && ref?.cloneSsh ? { cloneUrlHTTPS: ref.cloneHttps, cloneUrlSSH: ref.cloneSsh } : null;
1300
+ }
1301
+
832
1302
  export function toProviderPullRequest(pr: PullRequest): ProviderPullRequest {
833
1303
  const prReviews = [...(pr.reviewRequests ?? []), ...(pr.latestReviews ?? [])];
834
1304
  return {
835
1305
  id: pr.id,
836
1306
  graphQLId: pr.nodeId,
837
- number: Number.parseInt(pr.id, 10),
1307
+ number: pr.number ?? Number.parseInt(pr.id, 10),
838
1308
  title: pr.title,
839
- description: null,
1309
+ description: pr.body ?? null,
840
1310
  url: pr.url,
841
1311
  state: toProviderPullRequestState(pr.state),
1312
+ isCrossRepository: pr.refs?.isCrossRepository ?? false,
842
1313
  isDraft: pr.isDraft ?? false,
843
1314
  createdDate: pr.createdDate,
844
1315
  updatedDate: pr.updatedDate,
@@ -871,12 +1342,12 @@ export function toProviderPullRequest(pr: PullRequest): ProviderPullRequest {
871
1342
  repository:
872
1343
  pr.repository != null
873
1344
  ? {
874
- id: pr.repository.repo,
1345
+ id: pr.repository.id ?? '',
875
1346
  name: pr.repository.repo,
876
1347
  owner: {
877
1348
  login: pr.repository.owner,
878
1349
  },
879
- remoteInfo: null, // TODO: Add the urls to our model
1350
+ remoteInfo: toProviderRemoteInfo(pr.refs?.base),
880
1351
  }
881
1352
  : {
882
1353
  id: '',
@@ -894,7 +1365,8 @@ export function toProviderPullRequest(pr: PullRequest): ProviderPullRequest {
894
1365
  owner: {
895
1366
  login: pr.refs.head.owner,
896
1367
  },
897
- remoteInfo: null,
1368
+ remoteInfo: toProviderRemoteInfo(pr.refs.head),
1369
+ isFork: pr.refs.head.isFork,
898
1370
  }
899
1371
  : null,
900
1372
  headCommit:
@@ -935,8 +1407,15 @@ export function toProviderPullRequest(pr: PullRequest): ProviderPullRequest {
935
1407
  export function fromProviderPullRequest(
936
1408
  pr: ProviderPullRequest,
937
1409
  provider: Provider,
938
- options?: { project?: IssueProject },
1410
+ options?: { project?: IssueProject; currentAccountId?: string },
939
1411
  ): PullRequest {
1412
+ const repository = pr.repository;
1413
+ const repositoryName = repository?.name ?? '';
1414
+ const repositoryOwner = repository?.owner?.login ?? '';
1415
+ const repositoryRemoteInfo = repository?.remoteInfo;
1416
+ const headRepository = pr.headRepository;
1417
+ const headRepositoryRemoteInfo = headRepository?.remoteInfo;
1418
+
940
1419
  return new PullRequest(
941
1420
  provider,
942
1421
  fromProviderAccount(pr.author),
@@ -945,11 +1424,11 @@ export function fromProviderPullRequest(
945
1424
  pr.title,
946
1425
  pr.url ?? '',
947
1426
  {
948
- owner: pr.repository.owner.login,
949
- repo: pr.repository.name,
1427
+ owner: repositoryOwner,
1428
+ repo: repositoryName,
950
1429
  // This has to be here until we can take this information from ProviderPullRequest:
951
1430
  accessLevel: RepositoryAccessLevel.Write,
952
- id: pr.repository.id,
1431
+ id: repository?.id ?? '',
953
1432
  },
954
1433
  fromProviderPullRequestState(pr.state),
955
1434
  pr.createdDate,
@@ -962,24 +1441,29 @@ export function fromProviderPullRequest(
962
1441
  base: {
963
1442
  branch: pr.baseRef?.name ?? '',
964
1443
  sha: pr.baseRef?.oid ?? '',
965
- repo: pr.repository.name,
966
- owner: pr.repository.owner.login,
1444
+ repo: repositoryName,
1445
+ owner: repositoryOwner,
967
1446
  exists: pr.baseRef != null,
968
- url: pr.repository.remoteInfo?.cloneUrlHTTPS
969
- ? pr.repository.remoteInfo.cloneUrlHTTPS.replace(gitSuffixRegex, '')
1447
+ url: repositoryRemoteInfo?.cloneUrlHTTPS
1448
+ ? repositoryRemoteInfo.cloneUrlHTTPS.replace(gitSuffixRegex, '')
970
1449
  : '',
1450
+ cloneHttps: repositoryRemoteInfo?.cloneUrlHTTPS || undefined,
1451
+ cloneSsh: repositoryRemoteInfo?.cloneUrlSSH || undefined,
971
1452
  },
972
1453
  head: {
973
1454
  branch: pr.headRef?.name ?? '',
974
1455
  sha: pr.headRef?.oid ?? '',
975
- repo: pr.headRepository?.name ?? '',
976
- owner: pr.headRepository?.owner.login ?? '',
1456
+ repo: headRepository?.name ?? '',
1457
+ owner: headRepository?.owner?.login ?? '',
977
1458
  exists: pr.headRef != null,
978
- url: pr.headRepository?.remoteInfo?.cloneUrlHTTPS
979
- ? pr.headRepository.remoteInfo.cloneUrlHTTPS.replace(gitSuffixRegex, '')
1459
+ url: headRepositoryRemoteInfo?.cloneUrlHTTPS
1460
+ ? headRepositoryRemoteInfo.cloneUrlHTTPS.replace(gitSuffixRegex, '')
980
1461
  : '',
1462
+ cloneHttps: headRepositoryRemoteInfo?.cloneUrlHTTPS || undefined,
1463
+ cloneSsh: headRepositoryRemoteInfo?.cloneUrlSSH || undefined,
1464
+ isFork: headRepository?.isFork,
981
1465
  },
982
- isCrossRepository: pr.headRepository?.id !== pr.repository.id,
1466
+ isCrossRepository: pr.isCrossRepository,
983
1467
  },
984
1468
  pr.isDraft,
985
1469
  pr.additions ?? undefined,
@@ -995,6 +1479,9 @@ export function fromProviderPullRequest(
995
1479
  : undefined,
996
1480
  options?.project,
997
1481
  pr.version,
1482
+ pr.description ?? undefined,
1483
+ pr.number,
1484
+ options?.currentAccountId != null ? pr.author?.id === options.currentAccountId : undefined,
998
1485
  );
999
1486
  }
1000
1487
 
@@ -1003,10 +1490,11 @@ export function fromProviderIssue(
1003
1490
  integration: Integration,
1004
1491
  options?: { project?: IssueProject },
1005
1492
  ): Issue {
1493
+ const identifier = toIssueIdentifier(issue.number);
1006
1494
  return new Issue(
1007
1495
  integration,
1008
- issue.id,
1009
- issue.graphQLId,
1496
+ identifier,
1497
+ issue.graphQLId ?? issue.id,
1010
1498
  issue.title,
1011
1499
  issue.url ?? '',
1012
1500
  issue.createdDate,
@@ -1015,9 +1503,15 @@ export function fromProviderIssue(
1015
1503
  issue.closedDate != null ? 'closed' : 'opened',
1016
1504
  fromProviderAccount(issue.author),
1017
1505
  issue.assignees?.map(fromProviderAccount) ?? undefined,
1018
- undefined, // TODO: issue repo
1506
+ issue.repository != null
1507
+ ? {
1508
+ owner: issue.repository.owner.login ?? '',
1509
+ repo: issue.repository.name,
1510
+ id: issue.repository.id,
1511
+ }
1512
+ : undefined,
1019
1513
  issue.closedDate ?? undefined,
1020
- undefined,
1514
+ issue.labels?.map(label => ({ name: label.name, color: label.color ?? undefined })),
1021
1515
  issue.commentCount ?? undefined,
1022
1516
  issue.upvoteCount ?? undefined,
1023
1517
  issue.description ?? undefined,
@@ -1036,7 +1530,8 @@ export function fromProviderIssue(
1036
1530
  resourceName: issue.project.namespace,
1037
1531
  }
1038
1532
  : undefined,
1039
- issue.number,
1533
+ identifier,
1534
+ issue.type ?? undefined,
1040
1535
  );
1041
1536
  }
1042
1537
 
@@ -1062,9 +1557,19 @@ export function toProviderAccount(account: PullRequestMember | IssueMember): Pro
1062
1557
  export function fromProviderAccount(account: ProviderAccount | null): PullRequestMember | IssueMember {
1063
1558
  return {
1064
1559
  id: account?.id ?? '',
1065
- name: account?.name ?? 'unknown',
1560
+ // An absent name stays absent. `'unknown'` was a display fallback invented in the provider layer, and a
1561
+ // consumer couldn't tell it apart from a member genuinely named that — so it couldn't be undone where a
1562
+ // name-shaped placeholder is wrong (rendering an avatar-only chip, or building an AI prompt, where
1563
+ // `Assignees: unknown` reads as a real assignee). It also disagreed with {@link toIssueShape}, which
1564
+ // collapsed the same absent name to `''` — same facade method, two fallbacks. Both now emit `undefined`.
1565
+ name: account?.name ?? undefined,
1066
1566
  avatarUrl: account?.avatarUrl ?? undefined,
1067
- url: account?.url ?? '',
1567
+ // `url` is optional, so an absent one must be `undefined`, not `''`. `''` passes a `!= null` presence
1568
+ // check and renders as a link to nowhere, and it disagreed with {@link toIssueShape} — which already
1569
+ // collapses to `undefined` — even though BOTH mappers feed `listIssuesPage` (the repo-scoped path goes
1570
+ // through `toIssueShape`, Azure's account-wide path through {@link fromProviderIssue}). Same facade
1571
+ // method, two shapes. Matches {@link toProviderRepositoryShape}, which collapses every absent optional.
1572
+ url: account?.url ?? undefined,
1068
1573
  };
1069
1574
  }
1070
1575
 
@@ -1099,7 +1604,10 @@ export function isGitLabDotCom(domain: string | null | undefined): boolean {
1099
1604
  return equalsIgnoreCase(domain, 'gitlab.com');
1100
1605
  }
1101
1606
 
1102
- const azureCloudDomainRegex = /^dev\.azure\.com$|\bvisualstudio\.com$/i;
1607
+ // Anchor the `visualstudio.com` alternative on a label boundary (`^` or `.`) rather than `\b`: `\b` treats a
1608
+ // hyphen as a word boundary, so `\bvisualstudio\.com$` matched attacker-controlled hosts like
1609
+ // `evil-visualstudio.com` and classified them as Azure cloud, changing their auth/URL handling.
1610
+ const azureCloudDomainRegex = /^dev\.azure\.com$|(?:^|\.)visualstudio\.com$/i;
1103
1611
  export function isAzureCloudDomain(domain: string | undefined): boolean {
1104
1612
  return domain != null && azureCloudDomainRegex.test(domain);
1105
1613
  }