@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
@@ -2,12 +2,102 @@ import ProviderApis from '@gitkraken/provider-apis';
2
2
  import { base64 } from '../../../utils/base64.js';
3
3
  import { toTokenWithInfo } from '../authentication/models.js';
4
4
  import { GitCloudHostIntegrationId, GitSelfManagedHostIntegrationId, IssuesCloudHostIntegrationId, } from '../constants.js';
5
- import { AuthenticationError, AuthenticationErrorReason, RequestClientError, RequestNotFoundError, RequestRateLimitError, } from '../errors.js';
5
+ import { AuthenticationError, AuthenticationErrorReason, isRateLimitResponse, RequestClientError, RequestNotFoundError, toError, toRateLimitError, } from '../errors.js';
6
6
  import { providersMetadata } from './models.js';
7
+ import { collectProviderPagedResult, mergeCollectionMetadata, parsePageCursor, toPageCursor, } from './utils/providerPaging.js';
7
8
  const createProviderApis = ProviderApis.default ?? ProviderApis;
9
+ // Both GitHub and GitLab `getRepo` throw a missing-repo error whose message is exactly
10
+ // `Repository <x> not found`. Anchoring to that shape (rather than a loose `not found` substring) keeps
11
+ // the message fallbacks from misclassifying unrelated GraphQL/transport failures as a confident negative.
12
+ const repoNotFoundMessage = /^Repository .+ not found$/i;
13
+ // Duck-typed rather than `ex instanceof GraphQLErrors`, because importing the class as a value makes this
14
+ // module unloadable from plain Node ESM consumers: `@gitkraken/provider-apis` is CommonJS and declares its
15
+ // exports through getters, which Node's `cjs-module-lexer` cannot see, so the only named exports it can
16
+ // synthesize are `default` and `module.exports`. Bundled hosts (webpack/esbuild) bind the named export
17
+ // fine, but the published package keeps third-party deps external, so the named import survives into
18
+ // consumers and breaks linking there. The SDK's constructor always assigns `graphQLErrors` (defaulting to
19
+ // `[]`) and it is the only SDK error carrying that field, so the shape check is unambiguous.
20
+ function isGraphQLErrors(ex) {
21
+ return ex instanceof Error && Array.isArray(ex.graphQLErrors);
22
+ }
23
+ // `handleProviderError` classifies not-found by HTTP status (404/410/422), which only works for the
24
+ // REST `getRepo` clients (Bitbucket, Bitbucket Server, Azure DevOps). GitHub and GitLab `getRepo` are
25
+ // GraphQL: a missing repo comes back as HTTP 200 with a null node, and the SDK throws an unclassified
26
+ // error with no `response.status`, so it would otherwise fall through to the generic error bucket. This
27
+ // detects the SDK's not-found shapes so `getRepo` can rethrow them as `RequestNotFoundError`, keeping the
28
+ // facade's by-type mapping intact.
29
+ function isGraphQLRepoNotFoundError(ex) {
30
+ // GitHub throws `GraphQLErrors`. The SDK reports the null repository node with the same
31
+ // `Repository <x> not found` message regardless of the underlying cause, so a `FORBIDDEN` or
32
+ // `RATE_LIMITED` GraphQL error would also surface with that message. Trust the structured error type
33
+ // when entries are present (only `NOT_FOUND` is a real not-found), and fall back to the repo-specific
34
+ // message only when there are no entries to disambiguate (a bare null node).
35
+ if (isGraphQLErrors(ex)) {
36
+ const errors = ex.graphQLErrors;
37
+ // Scope NOT_FOUND to the `repository` field: `getRepo`'s query only selects that node today, but
38
+ // were it to grow other selections that can emit NOT_FOUND, an unscoped check would misclassify
39
+ // them. Tolerate a missing `path` so we degrade to the current behavior if the SDK stops populating
40
+ // it, rather than silently regressing to `error`.
41
+ if (errors?.length) {
42
+ return errors.some((e) => e.type === 'NOT_FOUND' && (e.path == null || e.path.includes('repository')));
43
+ }
44
+ return repoNotFoundMessage.test(ex.message);
45
+ }
46
+ // GitLab's `getRepo` throws a plain Error; match its not-found message specifically so unrelated
47
+ // bare Errors (network/parse failures) still reach the generic error bucket.
48
+ return ex instanceof Error && repoNotFoundMessage.test(ex.message);
49
+ }
50
+ const trelloBaseUrl = 'https://api.trello.com';
51
+ function getTrelloAuthHeaders(appKey, token) {
52
+ return {
53
+ Authorization: `OAuth oauth_consumer_key="${appKey}", oauth_token="${token}"`,
54
+ };
55
+ }
56
+ function getTrelloMemberAvatarUrl(member) {
57
+ if (member.avatarUrl != null)
58
+ return member.avatarUrl;
59
+ if (member.avatarHash == null)
60
+ return null;
61
+ return `https://trello-members.s3.amazonaws.com/${member.id}/${member.avatarHash}/50.png`;
62
+ }
63
+ function fromTrelloCard(card, trelloBoardListsById) {
64
+ const createdDate = new Date(1000 * parseInt(card.id.substring(0, 8), 16));
65
+ const list = card.idList != null ? trelloBoardListsById[card.idList] : undefined;
66
+ return {
67
+ id: card.id,
68
+ commentCount: card.badges?.comments ?? null,
69
+ number: String(card.idShort),
70
+ title: card.name,
71
+ url: card.url,
72
+ closedDate: null,
73
+ createdDate: new Date(createdDate.toISOString()),
74
+ author: null,
75
+ updatedDate: new Date(card.dateLastActivity),
76
+ assignees: (card.members ?? []).map(member => ({
77
+ id: member.id,
78
+ username: member.username ?? null,
79
+ name: member.fullName ?? null,
80
+ email: null,
81
+ avatarUrl: getTrelloMemberAvatarUrl(member),
82
+ url: null,
83
+ })),
84
+ description: null,
85
+ state: list != null ? { id: card.idList, name: list.name, color: null } : null,
86
+ type: null,
87
+ repository: null,
88
+ upvoteCount: card.badges?.votes ?? null,
89
+ labels: (card.labels ?? []).map(label => ({
90
+ color: label.color,
91
+ description: null,
92
+ id: label.id,
93
+ name: label.name,
94
+ })),
95
+ };
96
+ }
8
97
  export class ProvidersApi {
9
98
  authenticationService;
10
99
  providers;
100
+ request;
11
101
  constructor(authenticationService) {
12
102
  this.authenticationService = authenticationService;
13
103
  const http = authenticationService.ctx.http;
@@ -22,23 +112,32 @@ export class ProvidersApi {
22
112
  });
23
113
  return parseFetchResponseForApi(response);
24
114
  };
115
+ this.request = customFetch;
25
116
  const providerApis = createProviderApis({ request: customFetch });
26
117
  this.providers = {
27
118
  [GitCloudHostIntegrationId.GitHub]: {
28
119
  ...providersMetadata[GitCloudHostIntegrationId.GitHub],
29
120
  provider: providerApis.github,
121
+ getRepoFn: providerApis.github.getRepo.bind(providerApis.github),
30
122
  getCurrentUserFn: providerApis.github.getCurrentUser.bind(providerApis.github),
31
123
  getPullRequestsForReposFn: providerApis.github.getPullRequestsForRepos.bind(providerApis.github),
32
124
  getPullRequestsForUserFn: providerApis.github.getPullRequestsAssociatedWithUser.bind(providerApis.github),
33
125
  getIssuesForReposFn: providerApis.github.getIssuesForRepos.bind(providerApis.github),
126
+ getOrgsForCurrentUserFn: providerApis.github.getOrgsForCurrentUser.bind(providerApis.github),
127
+ getReposForOrgFn: providerApis.github.getReposForOrg.bind(providerApis.github),
128
+ getReposForCurrentUserFn: providerApis.github.getReposForCurrentUser.bind(providerApis.github),
34
129
  },
35
130
  [GitSelfManagedHostIntegrationId.CloudGitHubEnterprise]: {
36
131
  ...providersMetadata[GitSelfManagedHostIntegrationId.CloudGitHubEnterprise],
37
132
  provider: providerApis.github,
133
+ getRepoFn: providerApis.github.getRepo.bind(providerApis.github),
38
134
  getCurrentUserFn: providerApis.github.getCurrentUser.bind(providerApis.github),
39
135
  getPullRequestsForReposFn: providerApis.github.getPullRequestsForRepos.bind(providerApis.github),
40
136
  getPullRequestsForUserFn: providerApis.github.getPullRequestsAssociatedWithUser.bind(providerApis.github),
41
137
  getIssuesForReposFn: providerApis.github.getIssuesForRepos.bind(providerApis.github),
138
+ getOrgsForCurrentUserFn: providerApis.github.getOrgsForCurrentUser.bind(providerApis.github),
139
+ getReposForOrgFn: providerApis.github.getReposForOrg.bind(providerApis.github),
140
+ getReposForCurrentUserFn: providerApis.github.getReposForCurrentUser.bind(providerApis.github),
42
141
  },
43
142
  [GitCloudHostIntegrationId.GitLab]: {
44
143
  ...providersMetadata[GitCloudHostIntegrationId.GitLab],
@@ -48,32 +147,43 @@ export class ProvidersApi {
48
147
  getPullRequestsForReposFn: providerApis.gitlab.getPullRequestsForRepos.bind(providerApis.gitlab),
49
148
  getPullRequestsForRepoFn: providerApis.gitlab.getPullRequestsForRepo.bind(providerApis.gitlab),
50
149
  getPullRequestsForUserFn: providerApis.gitlab.getPullRequestsAssociatedWithUser.bind(providerApis.gitlab),
150
+ getGitLabPullRequestsForUserAssociationFn: providerApis.gitlab.getPullRequestsForUser.bind(providerApis.gitlab),
51
151
  getIssueFn: providerApis.gitlab.getIssue.bind(providerApis.gitlab),
52
152
  getIssuesForReposFn: providerApis.gitlab.getIssuesForRepos.bind(providerApis.gitlab),
53
153
  getIssuesForRepoFn: providerApis.gitlab.getIssuesForRepo.bind(providerApis.gitlab),
154
+ getIssuesForCurrentUserFn: providerApis.gitlab.getIssuesForCurrentUser.bind(providerApis.gitlab),
54
155
  mergePullRequestFn: providerApis.gitlab.mergePullRequest.bind(providerApis.gitlab),
156
+ getGroupsForCurrentUserFn: providerApis.gitlab.getGroupsForCurrentUser.bind(providerApis.gitlab),
157
+ getReposForCurrentUserFn: providerApis.gitlab.getReposForCurrentUser.bind(providerApis.gitlab),
55
158
  },
56
159
  [GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted]: {
57
160
  ...providersMetadata[GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted],
58
161
  provider: providerApis.gitlab,
162
+ getRepoFn: providerApis.gitlab.getRepo.bind(providerApis.gitlab),
59
163
  getCurrentUserFn: providerApis.gitlab.getCurrentUser.bind(providerApis.gitlab),
60
164
  getPullRequestsForReposFn: providerApis.gitlab.getPullRequestsForRepos.bind(providerApis.gitlab),
61
165
  getPullRequestsForRepoFn: providerApis.gitlab.getPullRequestsForRepo.bind(providerApis.gitlab),
62
166
  getPullRequestsForUserFn: providerApis.gitlab.getPullRequestsAssociatedWithUser.bind(providerApis.gitlab),
167
+ getGitLabPullRequestsForUserAssociationFn: providerApis.gitlab.getPullRequestsForUser.bind(providerApis.gitlab),
63
168
  getIssueFn: providerApis.gitlab.getIssue.bind(providerApis.gitlab),
64
169
  getIssuesForReposFn: providerApis.gitlab.getIssuesForRepos.bind(providerApis.gitlab),
65
170
  getIssuesForRepoFn: providerApis.gitlab.getIssuesForRepo.bind(providerApis.gitlab),
171
+ getIssuesForCurrentUserFn: providerApis.gitlab.getIssuesForCurrentUser.bind(providerApis.gitlab),
66
172
  mergePullRequestFn: providerApis.gitlab.mergePullRequest.bind(providerApis.gitlab),
173
+ getGroupsForCurrentUserFn: providerApis.gitlab.getGroupsForCurrentUser.bind(providerApis.gitlab),
174
+ getReposForCurrentUserFn: providerApis.gitlab.getReposForCurrentUser.bind(providerApis.gitlab),
67
175
  },
68
176
  [GitCloudHostIntegrationId.Bitbucket]: {
69
177
  ...providersMetadata[GitCloudHostIntegrationId.Bitbucket],
70
178
  provider: providerApis.bitbucket,
179
+ getRepoFn: providerApis.bitbucket.getRepo.bind(providerApis.bitbucket),
71
180
  getCurrentUserFn: providerApis.bitbucket.getCurrentUser.bind(providerApis.bitbucket),
72
181
  getBitbucketResourcesForCurrentUserFn: providerApis.bitbucket.getWorkspacesForCurrentUser.bind(providerApis.bitbucket),
73
182
  getBitbucketPullRequestsAuthoredByUserForWorkspaceFn: providerApis.bitbucket.getPullRequestsForUserAndWorkspace.bind(providerApis.bitbucket),
74
183
  getPullRequestsForReposFn: providerApis.bitbucket.getPullRequestsForRepos.bind(providerApis.bitbucket),
75
184
  getPullRequestsForRepoFn: providerApis.bitbucket.getPullRequestsForRepo.bind(providerApis.bitbucket),
76
185
  mergePullRequestFn: providerApis.bitbucket.mergePullRequest.bind(providerApis.bitbucket),
186
+ getReposForWorkspaceFn: providerApis.bitbucket.getReposForWorkspace.bind(providerApis.bitbucket),
77
187
  },
78
188
  [GitSelfManagedHostIntegrationId.BitbucketServer]: {
79
189
  ...providersMetadata[GitSelfManagedHostIntegrationId.BitbucketServer],
@@ -96,6 +206,7 @@ export class ProvidersApi {
96
206
  getPullRequestsForReposFn: providerApis.azureDevOps.getPullRequestsForRepos.bind(providerApis.azureDevOps),
97
207
  getPullRequestsForRepoFn: providerApis.azureDevOps.getPullRequestsForRepo.bind(providerApis.azureDevOps),
98
208
  getPullRequestsForAzureProjectsFn: providerApis.azureDevOps.getPullRequestsForProjects.bind(providerApis.azureDevOps),
209
+ getPullRequestsForAzureProjectFn: providerApis.azureDevOps.getPullRequestsForProject.bind(providerApis.azureDevOps),
99
210
  getIssuesForAzureProjectFn: providerApis.azureDevOps.getIssuesForAzureProject.bind(providerApis.azureDevOps),
100
211
  getReposForAzureProjectFn: providerApis.azureDevOps.getReposForAzureProject.bind(providerApis.azureDevOps),
101
212
  mergePullRequestFn: providerApis.azureDevOps.mergePullRequest.bind(providerApis.azureDevOps),
@@ -111,6 +222,7 @@ export class ProvidersApi {
111
222
  getPullRequestsForReposFn: providerApis.azureDevOps.getPullRequestsForRepos.bind(providerApis.azureDevOps),
112
223
  getPullRequestsForRepoFn: providerApis.azureDevOps.getPullRequestsForRepo.bind(providerApis.azureDevOps),
113
224
  getPullRequestsForAzureProjectsFn: providerApis.azureDevOps.getPullRequestsForProjects.bind(providerApis.azureDevOps),
225
+ getPullRequestsForAzureProjectFn: providerApis.azureDevOps.getPullRequestsForProject.bind(providerApis.azureDevOps),
114
226
  getIssuesForAzureProjectFn: providerApis.azureDevOps.getIssuesForAzureProject.bind(providerApis.azureDevOps),
115
227
  getReposForAzureProjectFn: providerApis.azureDevOps.getReposForAzureProject.bind(providerApis.azureDevOps),
116
228
  mergePullRequestFn: providerApis.azureDevOps.mergePullRequest.bind(providerApis.azureDevOps),
@@ -121,6 +233,7 @@ export class ProvidersApi {
121
233
  getCurrentUserForResourceFn: providerApis.jira.getCurrentUserForResource.bind(providerApis.jira),
122
234
  getJiraResourcesForCurrentUserFn: providerApis.jira.getJiraResourcesForCurrentUser.bind(providerApis.jira),
123
235
  getJiraProjectsForResourcesFn: providerApis.jira.getJiraProjectsForResources.bind(providerApis.jira),
236
+ getJiraProjectsForResourceFn: providerApis.jira.getJiraProjectsForResource.bind(providerApis.jira),
124
237
  getIssueFn: providerApis.jira.getIssue.bind(providerApis.jira),
125
238
  getIssuesForProjectFn: providerApis.jira.getIssuesForProject.bind(providerApis.jira),
126
239
  getIssuesForResourceForCurrentUserFn: providerApis.jira.getIssuesForResourceForCurrentUser.bind(providerApis.jira),
@@ -132,10 +245,18 @@ export class ProvidersApi {
132
245
  getIssuesForCurrentUserFn: providerApis.linear.getIssuesForCurrentUser.bind(providerApis.linear),
133
246
  getLinearOrganizationFn: providerApis.linear.getLinearOrganization.bind(providerApis.linear),
134
247
  getLinearTeamsForCurrentUserFn: providerApis.linear.getTeamsForCurrentUser.bind(providerApis.linear),
248
+ getLinearIssuesFn: providerApis.linear.getIssues.bind(providerApis.linear),
249
+ getLinearCurrentUserFn: providerApis.linear.getCurrentUser.bind(providerApis.linear),
135
250
  },
136
251
  [IssuesCloudHostIntegrationId.Trello]: {
137
252
  ...providersMetadata[IssuesCloudHostIntegrationId.Trello],
138
253
  provider: providerApis.trello,
254
+ getTrelloCurrentUserFn: providerApis.trello.getCurrentUser.bind(providerApis.trello),
255
+ getTrelloBoardsForCurrentUserFn: providerApis.trello.getBoardsForCurrentUser.bind(providerApis.trello),
256
+ getTrelloListsForBoardFn: providerApis.trello.getListsForTrelloBoard.bind(providerApis.trello),
257
+ getTrelloAccountForIdFn: providerApis.trello.getAccountForId.bind(providerApis.trello),
258
+ getTrelloIssuesForBoardFn: providerApis.trello.getIssuesForBoard.bind(providerApis.trello),
259
+ getTrelloLabelsForBoardFn: providerApis.trello.getLabelsForBoard.bind(providerApis.trello),
139
260
  },
140
261
  };
141
262
  }
@@ -165,7 +286,12 @@ export class ProvidersApi {
165
286
  input.every((id) => typeof id === 'string' || typeof id === 'number'));
166
287
  }
167
288
  async getProviderToken(provider, options) {
168
- const providerDescriptor = { domain: provider.domain, scopes: provider.scopes };
289
+ // When a specific connection is requested, resolve that connection's cloud session (mirroring
290
+ // `Integration.resolveReadSession`); otherwise keep the plain descriptor so the primary is resolved.
291
+ // An empty string is not a real target, so it must also fall through to the primary path.
292
+ const providerDescriptor = options?.connectionId
293
+ ? { domain: provider.domain, scopes: provider.scopes, connectionId: options.connectionId, cloud: true }
294
+ : { domain: provider.domain, scopes: provider.scopes };
169
295
  try {
170
296
  const authProvider = await this.authenticationService.get(provider.id);
171
297
  const session = await authProvider.getSession(providerDescriptor, {
@@ -183,7 +309,7 @@ export class ProvidersApi {
183
309
  getAzurePATForOAuthToken(oauthToken) {
184
310
  return base64(`PAT:${oauthToken}`);
185
311
  }
186
- async ensureProviderTokenAndFunction(tokenOptInfo, providerFn) {
312
+ async ensureProviderToken(tokenOptInfo) {
187
313
  const providerId = tokenOptInfo.providerId;
188
314
  const provider = this.providers[providerId];
189
315
  if (provider == null) {
@@ -192,12 +318,20 @@ export class ProvidersApi {
192
318
  if (providerId !== provider.id) {
193
319
  throw new Error(`Provider id mismatch: expected ${providerId} but got ${provider.id}`);
194
320
  }
321
+ const connectionId = 'connectionId' in tokenOptInfo ? tokenOptInfo.connectionId : undefined;
195
322
  const tokenWithInfo = tokenOptInfo?.accessToken
196
323
  ? tokenOptInfo
197
- : await this.getProviderToken(provider);
324
+ : await this.getProviderToken(provider, {
325
+ connectionId: connectionId,
326
+ });
198
327
  if (tokenWithInfo == null) {
199
328
  throw new Error(`Not connected to provider ${providerId}`);
200
329
  }
330
+ return { provider: provider, tokenWithInfo: tokenWithInfo };
331
+ }
332
+ async ensureProviderTokenAndFunction(tokenOptInfo, providerFn) {
333
+ const { provider, tokenWithInfo } = await this.ensureProviderToken(tokenOptInfo);
334
+ const providerId = tokenOptInfo.providerId;
201
335
  if (provider[providerFn] == null) {
202
336
  throw new Error(`Provider with id ${providerId} does not support function: ${providerFn}`);
203
337
  }
@@ -211,40 +345,25 @@ export class ProvidersApi {
211
345
  throw new Error(`Provider with id ${providerId} not registered`);
212
346
  }
213
347
  if (error?.response?.status != null) {
214
- switch (error.response.status) {
348
+ const status = error.response.status;
349
+ switch (status) {
215
350
  case 404: // Not found
216
351
  case 410: // Gone
217
352
  case 422: // Unprocessable Entity
218
353
  throw new RequestNotFoundError(error);
354
+ case 429: // Too Many Requests
355
+ throw toRateLimitError(error, token);
219
356
  case 401: // Unauthorized
220
- if (error.message?.includes('rate limit')) {
221
- let resetAt;
222
- const reset = error.response?.headers?.['x-ratelimit-reset'];
223
- if (reset != null) {
224
- resetAt = parseInt(reset, 10);
225
- if (Number.isNaN(resetAt)) {
226
- resetAt = undefined;
227
- }
228
- }
229
- throw new RequestRateLimitError(error, token, resetAt);
230
- }
231
- throw new AuthenticationError(tokenInfo, AuthenticationErrorReason.Unauthorized, error);
232
357
  case 403: // Forbidden
233
- throw new AuthenticationError(tokenInfo, AuthenticationErrorReason.Forbidden, error);
234
- case 429: {
235
- // Too Many Requests
236
- let resetAt;
237
- const reset = error.response.headers?.['x-ratelimit-reset'];
238
- if (reset != null) {
239
- resetAt = parseInt(reset, 10);
240
- if (Number.isNaN(resetAt)) {
241
- resetAt = undefined;
242
- }
358
+ // A throttled request arrives on both statuses depending on the host (see
359
+ // `isRateLimitResponse`); 403 previously skipped the check, so every provider going through the
360
+ // SDK reported a rate limit as `auth` and asked the user to reconnect a healthy account.
361
+ if (isRateLimitResponse({ status: status, message: error.message })) {
362
+ throw toRateLimitError(error, token);
243
363
  }
244
- throw new RequestRateLimitError(error, token, resetAt);
245
- }
364
+ throw new AuthenticationError(tokenInfo, status === 401 ? AuthenticationErrorReason.Unauthorized : AuthenticationErrorReason.Forbidden, error);
246
365
  default:
247
- if (error.response.status >= 400 && error.response.status < 500) {
366
+ if (status >= 400 && status < 500) {
248
367
  throw new RequestClientError(error);
249
368
  }
250
369
  }
@@ -261,16 +380,30 @@ export class ProvidersApi {
261
380
  }
262
381
  const cursorValue = cursorInfo.value;
263
382
  const cursorType = cursorInfo.type;
383
+ // An explicit numbered `page` request wins over a page-typed cursor; otherwise follow the cursor. A
384
+ // live cursor-typed cursor still takes precedence so an in-flight continuation is never clobbered.
385
+ const requestedPage = typeof args?.page === 'number' ? args.page : undefined;
386
+ const requestedPageSize = typeof args?.pageSize === 'number' ? args.pageSize : undefined;
264
387
  let cursorOrPage = {};
265
- if (cursorType === 'page') {
388
+ if (requestedPage != null && cursorType !== 'cursor') {
389
+ cursorOrPage = { page: requestedPage };
390
+ }
391
+ else if (cursorType === 'page') {
266
392
  cursorOrPage = { page: cursorValue };
267
393
  }
268
394
  else if (cursorType === 'cursor') {
269
395
  cursorOrPage = { cursor: cursorValue };
270
396
  }
397
+ // Strip the caller's paging keys so `getPagedResult` fully controls them; otherwise `args.page` could
398
+ // survive alongside a resolved `cursor` (or the raw serialized wrapper `args.cursor` could leak in when
399
+ // following a page), letting the provider clobber the continuation we intended.
400
+ const { page: _page, pageSize: _pageSize, cursor: _cursor, ...restArgs } = args ?? {};
271
401
  const input = {
272
- ...args,
402
+ ...restArgs,
273
403
  ...cursorOrPage,
404
+ // `pageSize` is honored by numbered providers; GitHub reads `maxPageSize`. Set both so whichever
405
+ // the resolved provider understands takes effect; the other is ignored.
406
+ ...(requestedPageSize != null ? { pageSize: requestedPageSize, maxPageSize: requestedPageSize } : {}),
274
407
  };
275
408
  try {
276
409
  const result = await providerFn?.(input, {
@@ -279,22 +412,46 @@ export class ProvidersApi {
279
412
  baseUrl: baseUrl,
280
413
  });
281
414
  if (result == null) {
282
- return { values: [] };
415
+ const continuationWasRequested = (cursor != null && cursor !== '{}') || (requestedPage != null && requestedPage > 1);
416
+ return continuationWasRequested
417
+ ? {
418
+ values: [],
419
+ paging: { cursor: '{}', more: false, truncated: true },
420
+ metadata: { completeness: 'partial' },
421
+ }
422
+ : { values: [] };
283
423
  }
284
- const hasMore = result.pageInfo?.hasNextPage ?? false;
424
+ const pageInfo = result.pageInfo;
425
+ const hasMore = pageInfo?.hasNextPage ?? false;
285
426
  let nextCursor = '{}';
286
- if (result.pageInfo?.endCursor != null) {
287
- nextCursor = JSON.stringify({ value: result.pageInfo?.endCursor, type: 'cursor' });
427
+ if (pageInfo?.endCursor != null) {
428
+ nextCursor = JSON.stringify({ value: pageInfo.endCursor, type: 'cursor' });
288
429
  }
289
- else if (result.pageInfo?.nextPage != null) {
290
- nextCursor = JSON.stringify({ value: result.pageInfo?.nextPage, type: 'page' });
430
+ else if (pageInfo?.nextPage != null) {
431
+ nextCursor = JSON.stringify({ value: pageInfo.nextPage, type: 'page' });
291
432
  }
433
+ const continuationBroken = hasMore && (nextCursor === '{}' || nextCursor === cursor);
434
+ const normalizedMetadata = mergeCollectionMetadata(result.metadata, continuationBroken ? { completeness: 'partial' } : undefined);
435
+ // SDK collection completeness is independent from provider-native pagination: a result can expose a
436
+ // real next page (`more`) and still have a failed sibling scope (`partial`/`unknown`). Surface the
437
+ // latter as `truncated` so consumers treat the page as incomplete. Absent metadata (old providers,
438
+ // test doubles) leaves `truncated` unset for backward compatibility.
439
+ const truncated = normalizedMetadata != null && normalizedMetadata.completeness !== 'complete' ? true : undefined;
292
440
  return {
293
441
  values: result.data,
294
442
  paging: {
295
443
  cursor: nextCursor,
296
- more: hasMore,
444
+ more: hasMore && !continuationBroken,
445
+ truncated: truncated,
446
+ // Numbered-page metadata; left undefined by cursor-based providers (which don't report a
447
+ // currentPage), so we never echo the requested page for a provider that ignored it.
448
+ page: pageInfo?.currentPage ?? undefined,
449
+ pageSize: requestedPageSize,
450
+ nextPage: pageInfo?.nextPage ?? undefined,
451
+ totalPages: pageInfo?.totalPages ?? undefined,
452
+ totalCount: pageInfo?.totalCount ?? undefined,
297
453
  },
454
+ metadata: normalizedMetadata,
298
455
  };
299
456
  }
300
457
  catch (e) {
@@ -303,7 +460,11 @@ export class ProvidersApi {
303
460
  }
304
461
  async getRepo(tokenOptInfo, owner, name, project, options) {
305
462
  const providerId = tokenOptInfo.providerId;
306
- if (providerId === GitCloudHostIntegrationId.AzureDevOps && project != null) {
463
+ const isAzureDevOps = providerId === GitCloudHostIntegrationId.AzureDevOps ||
464
+ providerId === GitSelfManagedHostIntegrationId.AzureDevOpsServer;
465
+ if (isAzureDevOps) {
466
+ if (project == null)
467
+ return undefined;
307
468
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getRepoOfProjectFn');
308
469
  const token = tokenWithInfo.accessToken;
309
470
  try {
@@ -311,6 +472,8 @@ export class ProvidersApi {
311
472
  return result?.data;
312
473
  }
313
474
  catch (e) {
475
+ if (isGraphQLRepoNotFoundError(e))
476
+ throw new RequestNotFoundError(toError(e));
314
477
  return this.handleProviderError(tokenWithInfo, e);
315
478
  }
316
479
  }
@@ -322,6 +485,8 @@ export class ProvidersApi {
322
485
  return result?.data;
323
486
  }
324
487
  catch (e) {
488
+ if (isGraphQLRepoNotFoundError(e))
489
+ throw new RequestNotFoundError(toError(e));
325
490
  return this.handleProviderError(tokenWithInfo, e);
326
491
  }
327
492
  }
@@ -383,41 +548,89 @@ export class ProvidersApi {
383
548
  return this.handleProviderError(tokenWithInfo, e);
384
549
  }
385
550
  }
386
- async getAzureResourcesForUser(tokenOptInfo, userId, options) {
387
- const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getAzureResourcesForUserFn');
551
+ /**
552
+ * Reads issues scoped to Linear teams/projects/labels (Linear's issue-list filter). One page per call —
553
+ * follow `paging.cursor`. Linear's `getIssues` has no author/assignee filter, so per-user scoping is
554
+ * applied client-side by the caller.
555
+ */
556
+ async getLinearIssues(tokenOptInfo, input, options) {
557
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getLinearIssuesFn');
558
+ return this.getPagedResult({ ...input, ...options }, provider.getLinearIssuesFn, tokenWithInfo, options?.cursor ?? undefined);
559
+ }
560
+ /** Resolves Linear's current user (viewer). The viewer query returns only id/name/email/displayName. */
561
+ async getLinearCurrentUser(tokenOptInfo) {
562
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getLinearCurrentUserFn');
388
563
  const token = tokenWithInfo.accessToken;
389
564
  try {
390
- return (await provider.getAzureResourcesForUserFn?.({ userId: userId }, { token: token, isPAT: options?.isPAT, baseUrl: options?.baseUrl }))?.data;
565
+ return (await provider.getLinearCurrentUserFn?.({ token: token }))?.data;
391
566
  }
392
567
  catch (e) {
393
568
  return this.handleProviderError(tokenWithInfo, e);
394
569
  }
395
570
  }
396
- async getBitbucketResourcesForCurrentUser(tokenOptInfo) {
397
- const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketResourcesForCurrentUserFn');
571
+ async getAzureResourcesForUser(tokenOptInfo, userId, options) {
572
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getAzureResourcesForUserFn');
398
573
  const token = tokenWithInfo.accessToken;
399
574
  try {
400
- return (await provider.getBitbucketResourcesForCurrentUserFn?.({}, { token: token }))?.data;
575
+ return (await provider.getAzureResourcesForUserFn?.({ userId: userId }, { token: token, isPAT: options?.isPAT, baseUrl: options?.baseUrl }))?.data;
401
576
  }
402
577
  catch (e) {
403
578
  return this.handleProviderError(tokenWithInfo, e);
404
579
  }
405
580
  }
406
- async getBitbucketPullRequestsAuthoredByUserForWorkspace(tokenOptInfo, userId, workspaceSlug) {
581
+ async getBitbucketResourcesForCurrentUser(tokenOptInfo) {
582
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketResourcesForCurrentUserFn');
583
+ const token = tokenWithInfo.accessToken;
584
+ // Drain every workspace page (numbered): the SDK returns 50 per page, and a user in more than one page
585
+ // of workspaces would otherwise silently lose the rest (with them, their orgs/PRs). A scoped drain keeps
586
+ // a successful prefix plus structured failure metadata when a later page fails.
587
+ const result = await collectProviderPagedResult(async (cursor) => {
588
+ try {
589
+ const page = parsePageCursor(cursor);
590
+ const response = await provider.getBitbucketResourcesForCurrentUserFn?.({ page: page }, { token: token });
591
+ if (response == null)
592
+ return undefined;
593
+ const hasMore = response.pageInfo?.hasNextPage === true;
594
+ const nextPage = response.pageInfo?.nextPage;
595
+ return {
596
+ values: response.data,
597
+ paging: {
598
+ more: hasMore,
599
+ cursor: hasMore && nextPage != null ? toPageCursor(nextPage) : '{}',
600
+ },
601
+ };
602
+ }
603
+ catch (ex) {
604
+ return this.handleProviderError(tokenWithInfo, ex);
605
+ }
606
+ }, 20, { providerId: tokenWithInfo.providerId });
607
+ return {
608
+ values: result.values,
609
+ paging: { cursor: '{}', more: false, ...(result.truncated ? { truncated: true } : {}) },
610
+ ...(result.metadata != null ? { metadata: result.metadata } : {}),
611
+ };
612
+ }
613
+ async getBitbucketPullRequestsAuthoredByUserForWorkspace(tokenOptInfo, userId, workspaceSlug, options) {
407
614
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketPullRequestsAuthoredByUserForWorkspaceFn');
408
615
  const token = tokenWithInfo.accessToken;
409
616
  try {
410
- return (await provider.getBitbucketPullRequestsAuthoredByUserForWorkspaceFn?.({ userId: userId, workspaceSlug: workspaceSlug }, { token: token }))?.data;
617
+ const result = await provider.getBitbucketPullRequestsAuthoredByUserForWorkspaceFn?.({ userId: userId, workspaceSlug: workspaceSlug, states: options?.states, page: options?.page }, { token: token });
618
+ if (result == null)
619
+ return undefined;
620
+ return { data: result.data, hasMore: result.pageInfo.hasNextPage, nextPage: result.pageInfo.nextPage };
411
621
  }
412
622
  catch (e) {
413
623
  return this.handleProviderError(tokenWithInfo, e);
414
624
  }
415
625
  }
416
- async getBitbucketServerPullRequestsForCurrentUser(tokenOptInfo, baseUrl) {
626
+ async getBitbucketServerPullRequestsForCurrentUser(tokenOptInfo, baseUrl, options) {
417
627
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketServerPullRequestsForCurrentUserFn');
418
628
  const token = tokenWithInfo.accessToken;
419
629
  try {
420
- return (await provider.getBitbucketServerPullRequestsForCurrentUserFn?.({}, { token: token, baseUrl: baseUrl }))?.data;
630
+ const result = await provider.getBitbucketServerPullRequestsForCurrentUserFn?.({ states: options?.states, page: options?.page }, { token: token, baseUrl: baseUrl });
631
+ if (result == null)
632
+ return undefined;
633
+ return { data: result.data, hasMore: result.pageInfo.hasNextPage, nextPage: result.pageInfo.nextPage };
421
634
  }
422
635
  catch (e) {
423
636
  return this.handleProviderError(tokenWithInfo, e);
@@ -427,13 +640,19 @@ export class ProvidersApi {
427
640
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getJiraProjectsForResourcesFn');
428
641
  const token = tokenWithInfo.accessToken;
429
642
  try {
430
- return (await provider.getJiraProjectsForResourcesFn?.({ resourceIds: resourceIds }, { token: token }))
431
- ?.data;
643
+ const result = await provider.getJiraProjectsForResourcesFn?.({ resourceIds: resourceIds }, { token: token });
644
+ // Preserve the SDK's per-resource completeness/failures instead of collapsing to a bare array, so the
645
+ // Jira integration can cache only proven-successful resources and warn on the failed ones.
646
+ return { values: result?.data ?? [], metadata: result?.metadata };
432
647
  }
433
648
  catch (e) {
434
649
  return this.handleProviderError(tokenWithInfo, e);
435
650
  }
436
651
  }
652
+ async getJiraProjectsForResource(tokenOptInfo, resourceId, options) {
653
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getJiraProjectsForResourceFn');
654
+ return this.getPagedResult({ resourceId: resourceId }, provider.getJiraProjectsForResourceFn, tokenWithInfo, options?.cursor);
655
+ }
437
656
  async getAzureProjectsForResource(tokenOptInfo, namespace, options) {
438
657
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getAzureProjectsForResourceFn');
439
658
  const token = tokenWithInfo.accessToken;
@@ -450,6 +669,44 @@ export class ProvidersApi {
450
669
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForAzureProjectFn');
451
670
  return this.getPagedResult({ namespace: namespace, project: project, ...options }, provider.getReposForAzureProjectFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
452
671
  }
672
+ async getGitHubOrgsForCurrentUser(tokenOptInfo, options) {
673
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getOrgsForCurrentUserFn');
674
+ // Drain all pages so a user in many orgs doesn't lose everything past the first page, while
675
+ // surfacing `truncated` when the defensive backstop stops before the listing is exhausted.
676
+ const result = await collectProviderPagedResult(cursor => this.getPagedResult({}, provider.getOrgsForCurrentUserFn, tokenWithInfo, cursor, options?.isPAT, options?.baseUrl), 20, { providerId: tokenWithInfo.providerId });
677
+ // This method drains internally and takes no cursor, so a backstop cursor isn't resumable by
678
+ // callers — keep only the truncation signal rather than exposing a misleading `paging`.
679
+ return {
680
+ values: result.values,
681
+ ...(result.truncated ? { truncated: true } : {}),
682
+ ...(result.metadata != null ? { metadata: result.metadata } : {}),
683
+ };
684
+ }
685
+ async getReposForOrg(tokenOptInfo, orgName, options) {
686
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForOrgFn');
687
+ return this.getPagedResult({ orgName: orgName }, provider.getReposForOrgFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
688
+ }
689
+ async getReposForBitbucketWorkspace(tokenOptInfo, workspace, options) {
690
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForWorkspaceFn');
691
+ return this.getPagedResult({ workspace: workspace }, provider.getReposForWorkspaceFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
692
+ }
693
+ async getReposForCurrentUser(tokenOptInfo, options) {
694
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForCurrentUserFn');
695
+ return this.getPagedResult(options?.affiliations != null ? { affiliations: options.affiliations } : {}, provider.getReposForCurrentUserFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
696
+ }
697
+ async getGitlabGroupsForCurrentUser(tokenOptInfo, options) {
698
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getGroupsForCurrentUserFn');
699
+ // Drain all pages so a user in many groups doesn't lose everything past the first page, while
700
+ // surfacing `truncated` when the defensive backstop stops before the listing is exhausted.
701
+ const result = await collectProviderPagedResult(cursor => this.getPagedResult({ topLevelOnly: options?.topLevelOnly }, provider.getGroupsForCurrentUserFn, tokenWithInfo, cursor, options?.isPAT, options?.baseUrl), 20, { providerId: tokenWithInfo.providerId });
702
+ // This method drains internally and takes no cursor, so a backstop cursor isn't resumable by
703
+ // callers — keep only the truncation signal rather than exposing a misleading `paging`.
704
+ return {
705
+ values: result.values,
706
+ ...(result.truncated ? { truncated: true } : {}),
707
+ ...(result.metadata != null ? { metadata: result.metadata } : {}),
708
+ };
709
+ }
453
710
  async getPullRequestsForRepos(tokenOptInfo, reposOrIds, options) {
454
711
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getPullRequestsForReposFn');
455
712
  return this.getPagedResult({
@@ -470,13 +727,68 @@ export class ProvidersApi {
470
727
  ...options,
471
728
  }, provider.getPullRequestsForUserFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
472
729
  }
730
+ async getGitLabPullRequestsForUserAssociation(tokenOptInfo, username, association, options) {
731
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getGitLabPullRequestsForUserAssociationFn');
732
+ return this.getPagedResult({
733
+ username: username,
734
+ association: association,
735
+ states: options?.states,
736
+ pageSize: options?.pageSize,
737
+ }, provider.getGitLabPullRequestsForUserAssociationFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
738
+ }
473
739
  async getPullRequestsForAzureProjects(tokenOptInfo, projects, options) {
474
740
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getPullRequestsForAzureProjectsFn');
475
741
  const token = tokenWithInfo.accessToken;
476
742
  // Azure only supports PAT for this call
477
743
  const azureToken = options?.isPAT ? token : this.getAzurePATForOAuthToken(token);
478
744
  try {
479
- return (await provider.getPullRequestsForAzureProjectsFn?.({ projects: projects, ...options }, { token: azureToken, isPAT: options?.isPAT, baseUrl: options?.baseUrl }))?.data;
745
+ const result = await provider.getPullRequestsForAzureProjectsFn?.({
746
+ projects: projects,
747
+ authorLogin: options?.authorLogin,
748
+ assigneeLogins: options?.assigneeLogins,
749
+ reviewerId: options?.reviewerId,
750
+ states: options?.states,
751
+ repo: options?.repo,
752
+ },
753
+ // `azureToken` is always a PAT here (the raw token when `isPAT`, otherwise a PAT derived from
754
+ // the OAuth token), so it must be sent as a PAT regardless of the incoming `options?.isPAT`.
755
+ { token: azureToken, isPAT: true, baseUrl: options?.baseUrl });
756
+ // The SDK's multi-project aggregate preserves successful projects and reports failed/incomplete ones
757
+ // through `metadata` (it has no `pageInfo`); keep it so the account-wide drain can warn on the failed
758
+ // projects and set `fetchFailed` instead of publishing a partial Azure read as complete.
759
+ return { values: result?.data ?? [], metadata: result?.metadata };
760
+ }
761
+ catch (e) {
762
+ return this.handleProviderError(tokenWithInfo, e);
763
+ }
764
+ }
765
+ /**
766
+ * Single Azure project PR read, paginated by number. Unlike {@link getPullRequestsForAzureProjects} (which
767
+ * aggregates across projects and exposes no paging), this returns one page plus whether more remain, so a
768
+ * caller can drain a project fully.
769
+ */
770
+ async getPullRequestsForAzureProject(tokenOptInfo, project, options) {
771
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getPullRequestsForAzureProjectFn');
772
+ const token = tokenWithInfo.accessToken;
773
+ // Azure only supports PAT for this call
774
+ const azureToken = options?.isPAT ? token : this.getAzurePATForOAuthToken(token);
775
+ try {
776
+ const result = await provider.getPullRequestsForAzureProjectFn?.({
777
+ namespace: project.namespace,
778
+ project: project.project,
779
+ authorLogin: options?.authorLogin,
780
+ assigneeLogins: options?.assigneeLogins,
781
+ reviewerId: options?.reviewerId,
782
+ states: options?.states,
783
+ repo: options?.repo,
784
+ page: options?.page,
785
+ },
786
+ // `azureToken` is always a PAT here (already PAT-formatted when `isPAT`, otherwise derived from
787
+ // the OAuth token), so it must be sent as a PAT regardless of the incoming `options?.isPAT`.
788
+ { token: azureToken, isPAT: true, baseUrl: options?.baseUrl });
789
+ if (result == null)
790
+ return undefined;
791
+ return { data: result.data, hasMore: result.pageInfo.hasNextPage, nextPage: result.pageInfo.nextPage };
480
792
  }
481
793
  catch (e) {
482
794
  return this.handleProviderError(tokenWithInfo, e);
@@ -528,7 +840,13 @@ export class ProvidersApi {
528
840
  }
529
841
  async getIssuesForCurrentUser(tokenOptInfo, options) {
530
842
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForCurrentUserFn');
531
- return this.getPagedResult(options, provider.getIssuesForCurrentUserFn, tokenWithInfo, options?.cursor ?? undefined, options?.isPAT, options?.baseUrl);
843
+ return this.getPagedResult({
844
+ scope: options?.scope,
845
+ assigneeUsername: options?.assigneeUsername,
846
+ authorUsername: options?.authorUsername,
847
+ page: options?.page,
848
+ pageSize: options?.pageSize,
849
+ }, provider.getIssuesForCurrentUserFn, tokenWithInfo, options?.cursor ?? undefined, options?.isPAT, options?.baseUrl);
532
850
  }
533
851
  async getIssuesForAzureProject(tokenOptInfo, namespace, project, options) {
534
852
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForAzureProjectFn');
@@ -545,6 +863,92 @@ export class ProvidersApi {
545
863
  return this.handleProviderError(tokenWithInfo, e);
546
864
  }
547
865
  }
866
+ /**
867
+ * Single page of {@link getIssuesForProject} that preserves the SDK's `pageInfo` so a caller can drain
868
+ * every page (the plain {@link getIssuesForProject} discards it, silently capping at the first page).
869
+ * `nextCursor` is the raw provider cursor (Jira offset / nextPageToken) fed back verbatim as `options.cursor`.
870
+ */
871
+ async getIssuesForProjectPaged(tokenOptInfo, project, resourceId, options) {
872
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForProjectFn');
873
+ const token = tokenWithInfo.accessToken;
874
+ try {
875
+ const result = await provider.getIssuesForProjectFn?.({ projectKey: project, resourceId: resourceId, ...options }, { token: token });
876
+ if (result == null)
877
+ return undefined;
878
+ return {
879
+ data: result.data,
880
+ hasMore: result.pageInfo?.hasNextPage ?? false,
881
+ nextCursor: result.pageInfo?.endCursor ?? undefined,
882
+ };
883
+ }
884
+ catch (e) {
885
+ return this.handleProviderError(tokenWithInfo, e);
886
+ }
887
+ }
888
+ async getTrelloCard(tokenOptInfo, appKey, cardId, options) {
889
+ const { tokenWithInfo } = await this.ensureProviderToken(tokenOptInfo);
890
+ try {
891
+ const result = await this.request({
892
+ url: `${trelloBaseUrl}/1/cards/${encodeURIComponent(cardId)}?members=true`,
893
+ headers: getTrelloAuthHeaders(appKey, tokenWithInfo.accessToken),
894
+ });
895
+ return fromTrelloCard(result.body, options?.trelloBoardListsById ?? {});
896
+ }
897
+ catch (e) {
898
+ try {
899
+ return this.handleProviderError(tokenWithInfo, e);
900
+ }
901
+ catch (ex) {
902
+ if (RequestNotFoundError.is(ex))
903
+ return undefined;
904
+ throw ex;
905
+ }
906
+ }
907
+ }
908
+ // Trello reads. The Trello client is keyed by an `appKey` (the Trello app key from the cloud token exchange)
909
+ // paired with the OAuth token, so each wrapper threads `appKey` through alongside `tokenWithInfo`.
910
+ async getTrelloCurrentUser(tokenOptInfo, appKey) {
911
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloCurrentUserFn');
912
+ try {
913
+ const result = await provider.getTrelloCurrentUserFn?.({ appKey: appKey }, { token: tokenWithInfo.accessToken });
914
+ return result?.data;
915
+ }
916
+ catch (e) {
917
+ return this.handleProviderError(tokenWithInfo, e);
918
+ }
919
+ }
920
+ async getTrelloBoardsForCurrentUser(tokenOptInfo, appKey) {
921
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloBoardsForCurrentUserFn');
922
+ try {
923
+ const result = await provider.getTrelloBoardsForCurrentUserFn?.({ appKey: appKey }, { token: tokenWithInfo.accessToken });
924
+ return result?.data;
925
+ }
926
+ catch (e) {
927
+ return this.handleProviderError(tokenWithInfo, e);
928
+ }
929
+ }
930
+ async getTrelloListsForBoard(tokenOptInfo, appKey, boardId) {
931
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloListsForBoardFn');
932
+ try {
933
+ const result = await provider.getTrelloListsForBoardFn?.({ appKey: appKey, boardId: boardId }, { token: tokenWithInfo.accessToken });
934
+ return result?.data;
935
+ }
936
+ catch (e) {
937
+ return this.handleProviderError(tokenWithInfo, e);
938
+ }
939
+ }
940
+ async getTrelloIssuesForBoard(tokenOptInfo, appKey, boardId, options) {
941
+ const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloIssuesForBoardFn');
942
+ try {
943
+ const result = await provider.getTrelloIssuesForBoardFn?.({ appKey: appKey, boardId: boardId, ...options }, { token: tokenWithInfo.accessToken });
944
+ // Trello's search caps results and reports the cap through `metadata.completeness` (never a cursor).
945
+ // Preserve it so the integration can signal a terminal truncation rather than a fake next page.
946
+ return { values: result?.data ?? [], metadata: result?.metadata };
947
+ }
948
+ catch (e) {
949
+ return this.handleProviderError(tokenWithInfo, e);
950
+ }
951
+ }
548
952
  async getIssuesForResourceForCurrentUser(tokenOptInfo, resourceId, options) {
549
953
  const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForResourceForCurrentUserFn');
550
954
  return this.getPagedResult({ resourceId: resourceId }, provider.getIssuesForResourceForCurrentUserFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
@@ -593,10 +997,37 @@ async function parseFetchResponseForApi(response) {
593
997
  };
594
998
  // throw an error if the response is not ok
595
999
  if (!response.ok) {
596
- const error = new Error(response.statusText);
1000
+ const status = `(${response.status})${response.statusText ? ` ${response.statusText}` : ''}.`;
1001
+ const detail = getProviderResponseBodyMessage(body);
1002
+ const error = new Error(detail != null ? `${status} ${detail}` : status);
597
1003
  Object.assign(error, { response: result });
598
1004
  throw error;
599
1005
  }
600
1006
  return result;
601
1007
  }
1008
+ const maxProviderErrorBodyLength = 500;
1009
+ /** Extracts the useful provider prose from an already-parsed SDK response body. */
1010
+ function getProviderResponseBodyMessage(body) {
1011
+ let message;
1012
+ if (typeof body === 'string') {
1013
+ message = body;
1014
+ }
1015
+ else if (body != null && typeof body === 'object') {
1016
+ const { message: direct, error } = body;
1017
+ if (typeof direct === 'string') {
1018
+ message = direct;
1019
+ }
1020
+ else if (typeof error === 'string') {
1021
+ message = error;
1022
+ }
1023
+ else if (error != null && typeof error === 'object') {
1024
+ const nested = error.message;
1025
+ if (typeof nested === 'string') {
1026
+ message = nested;
1027
+ }
1028
+ }
1029
+ }
1030
+ message = message?.trim();
1031
+ return message ? message.slice(0, maxProviderErrorBodyLength) : undefined;
1032
+ }
602
1033
  //# sourceMappingURL=providersApi.js.map