@gitkraken/core-gitlens 0.4.0 → 0.4.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1036) hide show
  1. package/CHANGELOG.md +71 -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 +131 -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 +293 -12
  580. package/dist/plus/integrations/integrationService.d.ts.map +1 -1
  581. package/dist/plus/integrations/integrationService.js +1305 -37
  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 +269 -10
  592. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
  593. package/dist/plus/integrations/models/gitHostIntegration.js +712 -88
  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 +87 -7
  600. package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
  601. package/dist/plus/integrations/models/issuesIntegration.js +148 -33
  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/context.d.ts +52 -0
  700. package/dist/plus/integrations/reads/context.d.ts.map +1 -0
  701. package/dist/plus/integrations/reads/context.js +2 -0
  702. package/dist/plus/integrations/reads/context.js.map +1 -0
  703. package/dist/plus/integrations/reads/cursors.d.ts +66 -0
  704. package/dist/plus/integrations/reads/cursors.d.ts.map +1 -0
  705. package/dist/plus/integrations/reads/cursors.js +133 -0
  706. package/dist/plus/integrations/reads/cursors.js.map +1 -0
  707. package/dist/plus/integrations/reads/drains.d.ts +60 -0
  708. package/dist/plus/integrations/reads/drains.d.ts.map +1 -0
  709. package/dist/plus/integrations/reads/drains.js +255 -0
  710. package/dist/plus/integrations/reads/drains.js.map +1 -0
  711. package/dist/plus/integrations/reads/filters.d.ts +81 -0
  712. package/dist/plus/integrations/reads/filters.d.ts.map +1 -0
  713. package/dist/plus/integrations/reads/filters.js +87 -0
  714. package/dist/plus/integrations/reads/filters.js.map +1 -0
  715. package/dist/plus/integrations/reads/hierarchy.d.ts +17 -0
  716. package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -0
  717. package/dist/plus/integrations/reads/hierarchy.js +348 -0
  718. package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
  719. package/dist/plus/integrations/reads/hierarchy.utils.d.ts +53 -0
  720. package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
  721. package/dist/plus/integrations/reads/hierarchy.utils.js +85 -0
  722. package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -0
  723. package/dist/plus/integrations/reads/issueTracker.d.ts +19 -0
  724. package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -0
  725. package/dist/plus/integrations/reads/issueTracker.js +346 -0
  726. package/dist/plus/integrations/reads/issueTracker.js.map +1 -0
  727. package/dist/plus/integrations/reads/issues.d.ts +34 -0
  728. package/dist/plus/integrations/reads/issues.d.ts.map +1 -0
  729. package/dist/plus/integrations/reads/issues.js +244 -0
  730. package/dist/plus/integrations/reads/issues.js.map +1 -0
  731. package/dist/plus/integrations/reads/paging.d.ts +136 -0
  732. package/dist/plus/integrations/reads/paging.d.ts.map +1 -0
  733. package/dist/plus/integrations/reads/paging.js +221 -0
  734. package/dist/plus/integrations/reads/paging.js.map +1 -0
  735. package/dist/plus/integrations/reads/pullRequests.d.ts +32 -0
  736. package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -0
  737. package/dist/plus/integrations/reads/pullRequests.js +151 -0
  738. package/dist/plus/integrations/reads/pullRequests.js.map +1 -0
  739. package/dist/plus/integrations/reads/warnings.d.ts +47 -0
  740. package/dist/plus/integrations/reads/warnings.d.ts.map +1 -0
  741. package/dist/plus/integrations/reads/warnings.js +81 -0
  742. package/dist/plus/integrations/reads/warnings.js.map +1 -0
  743. package/dist/plus/integrations/results.d.ts +189 -0
  744. package/dist/plus/integrations/results.d.ts.map +1 -0
  745. package/dist/plus/integrations/results.js +62 -0
  746. package/dist/plus/integrations/results.js.map +1 -0
  747. package/dist/plus/integrations/utils/domain.utils.d.ts +5 -0
  748. package/dist/plus/integrations/utils/domain.utils.d.ts.map +1 -0
  749. package/dist/plus/integrations/utils/domain.utils.js +27 -0
  750. package/dist/plus/integrations/utils/domain.utils.js.map +1 -0
  751. package/dist/plus/integrations/utils/integration.utils.d.ts +27 -1
  752. package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -1
  753. package/dist/plus/integrations/utils/integration.utils.js +86 -15
  754. package/dist/plus/integrations/utils/integration.utils.js.map +1 -1
  755. package/dist/utils/array.d.ts.map +1 -1
  756. package/dist/utils/array.js.map +1 -1
  757. package/dist/utils/brand.d.ts.map +1 -1
  758. package/dist/utils/cancellation.d.ts +13 -0
  759. package/dist/utils/cancellation.d.ts.map +1 -1
  760. package/dist/utils/cancellation.js +52 -7
  761. package/dist/utils/cancellation.js.map +1 -1
  762. package/dist/utils/charCode.d.ts.map +1 -1
  763. package/dist/utils/coalescedRun.d.ts +16 -0
  764. package/dist/utils/coalescedRun.d.ts.map +1 -0
  765. package/dist/utils/coalescedRun.js +43 -0
  766. package/dist/utils/coalescedRun.js.map +1 -0
  767. package/dist/utils/color.d.ts.map +1 -1
  768. package/dist/utils/color.js +3 -3
  769. package/dist/utils/color.js.map +1 -1
  770. package/dist/utils/date.d.ts +24 -0
  771. package/dist/utils/date.d.ts.map +1 -1
  772. package/dist/utils/date.js +62 -0
  773. package/dist/utils/date.js.map +1 -1
  774. package/dist/utils/debounce.js +1 -1
  775. package/dist/utils/debounce.js.map +1 -1
  776. package/dist/utils/decorators/debounce.d.ts.map +1 -1
  777. package/dist/utils/decorators/debounce.js.map +1 -1
  778. package/dist/utils/decorators/gate.d.ts.map +1 -1
  779. package/dist/utils/decorators/gate.js +2 -2
  780. package/dist/utils/decorators/gate.js.map +1 -1
  781. package/dist/utils/decorators/log.d.ts.map +1 -1
  782. package/dist/utils/decorators/log.js +5 -5
  783. package/dist/utils/decorators/log.js.map +1 -1
  784. package/dist/utils/decorators/memoize.d.ts.map +1 -1
  785. package/dist/utils/decorators/memoize.js +2 -2
  786. package/dist/utils/decorators/memoize.js.map +1 -1
  787. package/dist/utils/decorators/resolver.d.ts.map +1 -1
  788. package/dist/utils/decorators/resolver.js.map +1 -1
  789. package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
  790. package/dist/utils/decorators/sequentialize.js +2 -2
  791. package/dist/utils/decorators/sequentialize.js.map +1 -1
  792. package/dist/utils/decorators/serializable.d.ts.map +1 -1
  793. package/dist/utils/decorators/serializable.js +1 -1
  794. package/dist/utils/decorators/serializable.js.map +1 -1
  795. package/dist/utils/dedupedAsyncCache.d.ts.map +1 -1
  796. package/dist/utils/env/browser/base64.d.ts.map +1 -1
  797. package/dist/utils/env/browser/base64.js.map +1 -1
  798. package/dist/utils/env/browser/crypto.d.ts.map +1 -1
  799. package/dist/utils/env/browser/crypto.js.map +1 -1
  800. package/dist/utils/env/browser/fs.d.ts.map +1 -1
  801. package/dist/utils/env/browser/fs.js.map +1 -1
  802. package/dist/utils/env/browser/hex.d.ts.map +1 -1
  803. package/dist/utils/env/browser/hex.js.map +1 -1
  804. package/dist/utils/env/browser/hrtime.d.ts.map +1 -1
  805. package/dist/utils/env/browser/hrtime.js.map +1 -1
  806. package/dist/utils/env/browser/logScope.d.ts.map +1 -1
  807. package/dist/utils/env/browser/logScope.js.map +1 -1
  808. package/dist/utils/env/browser/md5.d.ts.map +1 -1
  809. package/dist/utils/env/browser/md5.js.map +1 -1
  810. package/dist/utils/env/browser/platform.d.ts.map +1 -1
  811. package/dist/utils/env/browser/platform.js.map +1 -1
  812. package/dist/utils/env/node/base64.d.ts.map +1 -1
  813. package/dist/utils/env/node/base64.js.map +1 -1
  814. package/dist/utils/env/node/crypto.d.ts.map +1 -1
  815. package/dist/utils/env/node/crypto.js.map +1 -1
  816. package/dist/utils/env/node/exec.d.ts +9 -1
  817. package/dist/utils/env/node/exec.d.ts.map +1 -1
  818. package/dist/utils/env/node/exec.js +11 -4
  819. package/dist/utils/env/node/exec.js.map +1 -1
  820. package/dist/utils/env/node/fs.d.ts.map +1 -1
  821. package/dist/utils/env/node/fs.js.map +1 -1
  822. package/dist/utils/env/node/hex.d.ts.map +1 -1
  823. package/dist/utils/env/node/hex.js.map +1 -1
  824. package/dist/utils/env/node/hrtime.d.ts.map +1 -1
  825. package/dist/utils/env/node/hrtime.js.map +1 -1
  826. package/dist/utils/env/node/logScope.d.ts.map +1 -1
  827. package/dist/utils/env/node/logScope.js.map +1 -1
  828. package/dist/utils/env/node/platform.d.ts.map +1 -1
  829. package/dist/utils/env/node/platform.js.map +1 -1
  830. package/dist/utils/event.d.ts.map +1 -1
  831. package/dist/utils/event.js +18 -22
  832. package/dist/utils/event.js.map +1 -1
  833. package/dist/utils/formatter.d.ts.map +1 -1
  834. package/dist/utils/formatter.js.map +1 -1
  835. package/dist/utils/function.d.ts.map +1 -1
  836. package/dist/utils/function.js +3 -3
  837. package/dist/utils/function.js.map +1 -1
  838. package/dist/utils/hash.js.map +1 -1
  839. package/dist/utils/iterable.d.ts.map +1 -1
  840. package/dist/utils/iterable.js +2 -6
  841. package/dist/utils/iterable.js.map +1 -1
  842. package/dist/utils/lazy.d.ts.map +1 -1
  843. package/dist/utils/lazy.js.map +1 -1
  844. package/dist/utils/logger.d.ts.map +1 -1
  845. package/dist/utils/logger.js +1 -1
  846. package/dist/utils/logger.js.map +1 -1
  847. package/dist/utils/logger.scoped.js +1 -1
  848. package/dist/utils/logger.scoped.js.map +1 -1
  849. package/dist/utils/lruMap.d.ts.map +1 -1
  850. package/dist/utils/lruMap.js.map +1 -1
  851. package/dist/utils/mru.d.ts.map +1 -1
  852. package/dist/utils/mru.js.map +1 -1
  853. package/dist/utils/object.js.map +1 -1
  854. package/dist/utils/paging.d.ts +29 -0
  855. package/dist/utils/paging.d.ts.map +1 -1
  856. package/dist/utils/paging.js +18 -0
  857. package/dist/utils/paging.js.map +1 -1
  858. package/dist/utils/path.js.map +1 -1
  859. package/dist/utils/promise.d.ts +10 -0
  860. package/dist/utils/promise.d.ts.map +1 -1
  861. package/dist/utils/promise.js +26 -3
  862. package/dist/utils/promise.js.map +1 -1
  863. package/dist/utils/promiseCache.d.ts +12 -2
  864. package/dist/utils/promiseCache.d.ts.map +1 -1
  865. package/dist/utils/promiseCache.js +80 -50
  866. package/dist/utils/promiseCache.js.map +1 -1
  867. package/dist/utils/searchTree.d.ts.map +1 -1
  868. package/dist/utils/searchTree.js +4 -1
  869. package/dist/utils/searchTree.js.map +1 -1
  870. package/dist/utils/stopwatch.d.ts.map +1 -1
  871. package/dist/utils/string.js +1 -1
  872. package/dist/utils/string.js.map +1 -1
  873. package/dist/utils/subscriptionManager.d.ts.map +1 -1
  874. package/dist/utils/subscriptionManager.js.map +1 -1
  875. package/dist/utils/trie.d.ts.map +1 -1
  876. package/dist/utils/trie.js +1 -0
  877. package/dist/utils/trie.js.map +1 -1
  878. package/docs/integrations.md +372 -0
  879. package/docs/kepler-read-api-parity.md +112 -0
  880. package/package.json +238 -213
  881. package/src/git/cache.ts +75 -8
  882. package/src/git/errors.ts +36 -1
  883. package/src/git/models/commit.ts +1 -1
  884. package/src/git/models/graph.ts +147 -0
  885. package/src/git/models/graphSession.ts +205 -0
  886. package/src/git/models/issue.ts +12 -1
  887. package/src/git/models/pullRequest.ts +27 -1
  888. package/src/git/models/repository.ts +24 -1
  889. package/src/git/models/resourceDescriptor.ts +17 -0
  890. package/src/git/models/signature.ts +16 -0
  891. package/src/git/models/tag.ts +6 -1
  892. package/src/git/parsers/diffParser.ts +1 -1
  893. package/src/git/providers/branches.ts +6 -1
  894. package/src/git/providers/commits.ts +6 -1
  895. package/src/git/providers/config.ts +5 -1
  896. package/src/git/providers/graph.ts +69 -2
  897. package/src/git/providers/status.ts +1 -1
  898. package/src/git/providers/worktrees.ts +3 -1
  899. package/src/git/remotes/azure-devops.ts +29 -33
  900. package/src/git/remotes/bitbucket-server.ts +23 -25
  901. package/src/git/remotes/bitbucket.ts +23 -25
  902. package/src/git/remotes/gerrit.ts +12 -14
  903. package/src/git/remotes/gitea.ts +13 -15
  904. package/src/git/remotes/github.ts +56 -58
  905. package/src/git/remotes/gitlab.ts +102 -104
  906. package/src/git/run.types.ts +54 -4
  907. package/src/git/utils/branch.utils.ts +12 -1
  908. package/src/git/utils/contributor.utils.ts +1 -1
  909. package/src/git/utils/fileStatus.utils.ts +7 -0
  910. package/src/git/utils/graph.utils.ts +46 -0
  911. package/src/git/utils/issue.utils.ts +1 -0
  912. package/src/git/utils/pullRequest.utils.ts +9 -0
  913. package/src/git/utils/reachability.utils.ts +79 -8
  914. package/src/git/utils/sshKey.utils.ts +30 -0
  915. package/src/git/watching/watchService.ts +16 -1
  916. package/src/git/watching/watchSession.ts +20 -2
  917. package/src/git-cli/exec/git.ts +144 -42
  918. package/src/git-cli/parsers/logParser.ts +83 -1
  919. package/src/git-cli/parsers/sshSignatureParser.ts +85 -0
  920. package/src/git-cli/parsers/worktreeParser.ts +5 -7
  921. package/src/git-cli/providers/branches.ts +60 -38
  922. package/src/git-cli/providers/commits.ts +102 -9
  923. package/src/git-cli/providers/graph.ts +1771 -393
  924. package/src/git-cli/providers/pausedOperations.ts +3 -3
  925. package/src/git-cli/providers/revision.ts +42 -0
  926. package/src/git-cli/providers/status.ts +333 -178
  927. package/src/git-cli/providers/tags.ts +2 -0
  928. package/src/git-cli/providers/worktrees.ts +40 -4
  929. package/src/git-cli/service.ts +9 -0
  930. package/src/ipc/ipcServer.ts +1 -1
  931. package/src/plus/agents/providers/claudeCodeProvider.ts +25 -0
  932. package/src/plus/agents/providers/claudeCodeTranscript.ts +320 -8
  933. package/src/plus/agents/types.ts +34 -0
  934. package/src/plus/ai/constants.ts +1 -9
  935. package/src/plus/ai/models/model.ts +53 -2
  936. package/src/plus/ai/models/promptTemplates.ts +9 -2
  937. package/src/plus/ai/prompts.ts +16 -48
  938. package/src/plus/ai/providers/anthropicProvider.ts +45 -3
  939. package/src/plus/ai/providers/deepSeekProvider.ts +17 -1
  940. package/src/plus/ai/providers/geminiProvider.ts +25 -6
  941. package/src/plus/ai/providers/gitkrakenProvider.ts +2 -0
  942. package/src/plus/ai/providers/huggingFaceProvider.ts +28 -21
  943. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +16 -1
  944. package/src/plus/ai/providers/xaiProvider.ts +14 -1
  945. package/src/plus/ai/utils/ai.utils.ts +0 -2
  946. package/src/plus/ai/utils/results.utils.ts +32 -0
  947. package/src/plus/ai/utils/truncation.utils.ts +0 -1
  948. package/src/plus/git-github/api/github.ts +484 -104
  949. package/src/plus/git-github/models.ts +33 -0
  950. package/src/plus/git-github/providers/github/branches.ts +6 -3
  951. package/src/plus/git-github/providers/github/diff.ts +1 -1
  952. package/src/plus/git-github/providers/github/graph.ts +131 -0
  953. package/src/plus/git-github/providers/github/tags.ts +2 -0
  954. package/src/plus/integrations/authentication/cloudIntegrationService.ts +189 -17
  955. package/src/plus/integrations/authentication/configuredIntegrationService.ts +287 -50
  956. package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +105 -31
  957. package/src/plus/integrations/authentication/integrationAuthenticationService.ts +7 -3
  958. package/src/plus/integrations/authentication/manualTokenProvider.ts +12 -5
  959. package/src/plus/integrations/authentication/models.ts +35 -1
  960. package/src/plus/integrations/collectionMetadata.ts +143 -0
  961. package/src/plus/integrations/constants.ts +21 -0
  962. package/src/plus/integrations/context.ts +8 -9
  963. package/src/plus/integrations/errors.ts +149 -0
  964. package/src/plus/integrations/index.ts +148 -51
  965. package/src/plus/integrations/integrationService.ts +1714 -49
  966. package/src/plus/integrations/lite.ts +233 -0
  967. package/src/plus/integrations/manager.ts +359 -0
  968. package/src/plus/integrations/models/gitHostIntegration.ts +1014 -121
  969. package/src/plus/integrations/models/integration.ts +293 -24
  970. package/src/plus/integrations/models/issuesIntegration.ts +178 -38
  971. package/src/plus/integrations/providerFilters.ts +12 -0
  972. package/src/plus/integrations/providers/apiClients.ts +8 -11
  973. package/src/plus/integrations/providers/apiConfig.ts +71 -0
  974. package/src/plus/integrations/providers/azure/azure.ts +164 -33
  975. package/src/plus/integrations/providers/azure/models.ts +19 -6
  976. package/src/plus/integrations/providers/azureDevOps.ts +766 -101
  977. package/src/plus/integrations/providers/bitbucket/bitbucket.ts +164 -34
  978. package/src/plus/integrations/providers/bitbucket-server/models.ts +32 -1
  979. package/src/plus/integrations/providers/bitbucket-server.ts +173 -8
  980. package/src/plus/integrations/providers/bitbucket.ts +489 -45
  981. package/src/plus/integrations/providers/github/github.ts +2 -2
  982. package/src/plus/integrations/providers/github/github.utils.ts +1 -1
  983. package/src/plus/integrations/providers/github.ts +390 -6
  984. package/src/plus/integrations/providers/gitlab/gitlab.ts +170 -60
  985. package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +9 -0
  986. package/src/plus/integrations/providers/gitlab/models.ts +19 -5
  987. package/src/plus/integrations/providers/gitlab.ts +369 -10
  988. package/src/plus/integrations/providers/jira.ts +247 -42
  989. package/src/plus/integrations/providers/linear.ts +154 -27
  990. package/src/plus/integrations/providers/models.ts +583 -75
  991. package/src/plus/integrations/providers/providersApi.ts +849 -86
  992. package/src/plus/integrations/providers/trello.ts +205 -0
  993. package/src/plus/integrations/providers/utils/providerPaging.ts +177 -0
  994. package/src/plus/integrations/providers/utils.ts +68 -8
  995. package/src/plus/integrations/reads/context.ts +75 -0
  996. package/src/plus/integrations/reads/cursors.ts +224 -0
  997. package/src/plus/integrations/reads/drains.ts +343 -0
  998. package/src/plus/integrations/reads/filters.ts +124 -0
  999. package/src/plus/integrations/reads/hierarchy.ts +493 -0
  1000. package/src/plus/integrations/reads/hierarchy.utils.ts +106 -0
  1001. package/src/plus/integrations/reads/issueTracker.ts +480 -0
  1002. package/src/plus/integrations/reads/issues.ts +407 -0
  1003. package/src/plus/integrations/reads/paging.ts +277 -0
  1004. package/src/plus/integrations/reads/pullRequests.ts +267 -0
  1005. package/src/plus/integrations/reads/warnings.ts +170 -0
  1006. package/src/plus/integrations/results.ts +275 -0
  1007. package/src/plus/integrations/utils/domain.utils.ts +26 -0
  1008. package/src/plus/integrations/utils/integration.utils.ts +93 -16
  1009. package/src/utils/brand.ts +0 -2
  1010. package/src/utils/cancellation.ts +56 -7
  1011. package/src/utils/coalescedRun.ts +45 -0
  1012. package/src/utils/color.ts +3 -3
  1013. package/src/utils/date.ts +72 -0
  1014. package/src/utils/debounce.ts +1 -1
  1015. package/src/utils/decorators/gate.ts +2 -2
  1016. package/src/utils/decorators/log.ts +5 -5
  1017. package/src/utils/decorators/memoize.ts +2 -2
  1018. package/src/utils/decorators/sequentialize.ts +2 -2
  1019. package/src/utils/decorators/serializable.ts +1 -1
  1020. package/src/utils/env/node/exec.ts +20 -5
  1021. package/src/utils/event.ts +19 -25
  1022. package/src/utils/function.ts +3 -3
  1023. package/src/utils/iterable.ts +2 -6
  1024. package/src/utils/logger.scoped.ts +1 -1
  1025. package/src/utils/logger.ts +1 -1
  1026. package/src/utils/paging.ts +46 -0
  1027. package/src/utils/promise.ts +33 -3
  1028. package/src/utils/promiseCache.ts +81 -51
  1029. package/src/utils/searchTree.ts +4 -2
  1030. package/src/utils/string.ts +1 -1
  1031. package/src/utils/trie.ts +1 -0
  1032. package/dist/plus/ai/providers/githubModelsProvider.d.ts +0 -19
  1033. package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +0 -1
  1034. package/dist/plus/ai/providers/githubModelsProvider.js +0 -51
  1035. package/dist/plus/ai/providers/githubModelsProvider.js.map +0 -1
  1036. package/src/plus/ai/providers/githubModelsProvider.ts +0 -92
@@ -45,6 +45,12 @@ export interface WatchSessionOptions {
45
45
  * global event forwarding without affecting lifecycle callbacks.
46
46
  */
47
47
  readonly onDidFireRepoChange?: (event: WatcherRepoChangeEvent) => void;
48
+ /**
49
+ * Called whenever a debounced working-tree change is dispatched to subscribers. Like
50
+ * {@link onDidFireRepoChange}, does NOT count as a subscriber — used by WatchService for global
51
+ * event forwarding (the single point that drives the cache's status clock for working-tree edits).
52
+ */
53
+ readonly onDidFireWorkingTreeChange?: (repoPath: string) => void;
48
54
  }
49
55
 
50
56
  const defaultRepoDelay = 250;
@@ -82,6 +88,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
82
88
 
83
89
  private readonly lifecycle?: WatchSessionLifecycle;
84
90
  private readonly onDidFireRepoChangeCallback?: (event: WatcherRepoChangeEvent) => void;
91
+ private readonly onDidFireWorkingTreeChangeCallback?: (repoPath: string) => void;
85
92
 
86
93
  constructor(options: WatchSessionOptions) {
87
94
  this.repoPath = options.repoPath;
@@ -91,6 +98,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
91
98
  this.effectiveWorkingTreeMs = this.defaultWorkingTreeMs;
92
99
  this.lifecycle = options.lifecycle;
93
100
  this.onDidFireRepoChangeCallback = options.onDidFireRepoChange;
101
+ this.onDidFireWorkingTreeChangeCallback = options.onDidFireWorkingTreeChange;
94
102
  this._suspended = options.suspended ?? false;
95
103
  }
96
104
 
@@ -274,7 +282,12 @@ export class RepositoryWatchSession implements UnifiedDisposable {
274
282
  fireChangeImmediate(...changes: RepositoryChange[]): void {
275
283
  if (this._disposed || changes.length === 0) return;
276
284
 
277
- this.repoEmitter.fire(new WatcherRepoChangeEvent(this.repoPath, changes));
285
+ const event = new WatcherRepoChangeEvent(this.repoPath, changes);
286
+ // Same contract as `flushRepo`: notify the global forwarder (which advances the cache's status clock) BEFORE
287
+ // subscribers. Skipping it here would route changes to subscribers that no one advanced the clock for —
288
+ // subscribers see them as session-routed and (correctly) don't re-advance, so the cache would go stale.
289
+ this.onDidFireRepoChangeCallback?.(event);
290
+ this.repoEmitter.fire(event);
278
291
  }
279
292
 
280
293
  /** Push interpreted repo changes into the pipeline */
@@ -321,8 +334,10 @@ export class RepositoryWatchSession implements UnifiedDisposable {
321
334
  if (event == null) return;
322
335
 
323
336
  this.pendingRepoEvent = undefined;
324
- this.repoEmitter.fire(event);
337
+ // Advance any cache clock BEFORE notifying subscribers (same rationale as `flushWorkingTree`): a subscriber
338
+ // that synchronously reads status must see the post-change generation, not a joinable pre-change run.
325
339
  this.onDidFireRepoChangeCallback?.(event);
340
+ this.repoEmitter.fire(event);
326
341
  }
327
342
 
328
343
  private scheduleRepoFlush(delayOverride?: number): void {
@@ -351,6 +366,9 @@ export class RepositoryWatchSession implements UnifiedDisposable {
351
366
 
352
367
  const paths = this.pendingWorkingTreePaths;
353
368
  this.pendingWorkingTreePaths = new Set();
369
+ // Advance the cache's status clock (via WatchService's global forwarding) BEFORE notifying subscribers,
370
+ // so a subscriber that synchronously reads status sees the post-change generation, not a joinable pre-change run.
371
+ this.onDidFireWorkingTreeChangeCallback?.(this.repoPath);
354
372
  this.workingTreeEmitter.fire({ repoPath: this.repoPath, paths: paths });
355
373
  }
356
374
 
@@ -8,6 +8,7 @@ import type {
8
8
  CommitErrorReason,
9
9
  FetchErrorReason,
10
10
  GitCommandError,
11
+ GitWarningKey,
11
12
  MergeErrorReason,
12
13
  PausedOperationAbortErrorReason,
13
14
  PausedOperationContinueErrorReason,
@@ -24,8 +25,9 @@ import type {
24
25
  WorktreeCreateErrorReason,
25
26
  WorktreeDeleteErrorReason,
26
27
  } from '../../git/errors.js';
27
- import { WorkspaceUntrustedError } from '../../git/errors.js';
28
+ import { GitWarnings, WorkspaceUntrustedError } from '../../git/errors.js';
28
29
  import type { SigningFormat } from '../../git/models/signature.js';
30
+ import type { GitRunCancellation } from '../../git/run.types.js';
29
31
  import { CancellationError, getAbortSignalId, isCancellationError } from '../../utils/cancellation.js';
30
32
  import { getScopedCounter } from '../../utils/counter.js';
31
33
  import { getDurationMilliseconds, hrtime } from '../../utils/hrtime.js';
@@ -126,26 +128,16 @@ export const GitErrors = {
126
128
  unsafeRepository:
127
129
  /(?:^fatal:\s*detected dubious ownership in repository at '([^']+)'|unsafe repository \('([^']+)' is owned by someone else\))[\s\S]*(git config --global --add safe\.directory [^\n•]+)/m,
128
130
  unstagedChanges: /You have unstaged changes/i,
131
+ // Matches both variants: with a lock reason (`..., lock reason: <reason>`) and without (`...;`)
132
+ worktreeLocked: /fatal:\s*cannot remove a locked working tree/i,
133
+ // Only matches the variant where Git reports a lock reason; the reason is free text, so capture the whole line
134
+ worktreeLockedReason: /cannot remove a locked working tree,[ \t]*lock reason:[ \t]*(.*)/i,
129
135
  } as const;
130
136
 
131
- export const GitWarnings = {
132
- notARepository: /Not a git repository/i,
133
- outsideRepository: /is outside repository/i,
134
- noPath: /no such path/i,
135
- noCommits: /does not have any commits/i,
136
- notFound: /Path '.*?' does not exist in/i,
137
- foundButNotInRevision: /Path '.*?' exists on disk, but not in/i,
138
- headNotABranch: /HEAD does not point to a branch/i,
139
- noUpstream: /no upstream configured for branch '(.*?)'/i,
140
- unknownRevision:
141
- /ambiguous argument '.*?': unknown revision or path not in the working tree|not stored as a remote-tracking branch/i,
142
- mustRunInWorkTree: /this operation must be run in a work tree/i,
143
- patchWithConflicts: /Applied patch to '.*?' with conflicts/i,
144
- noRemoteRepositorySpecified: /No remote repository specified\./i,
145
- remoteConnectionError: /Could not read from remote repository/i,
146
- notAGitCommand: /'.+' is not a git command/i,
147
- tipBehind: /tip of your current branch is behind/i,
148
- } as const;
137
+ // `GitWarnings` moved to `@gitlens/git/errors.js` so the shared run contract can name its keys; re-exported
138
+ // here because it's long-established as part of this module's surface.
139
+ export { GitWarnings };
140
+ export type { GitWarningKey } from '../../git/errors.js';
149
141
 
150
142
  export class GitError extends Error {
151
143
  readonly cmd: string | undefined;
@@ -393,6 +385,8 @@ const errorToReasonMap = new Map<GitCommand, [RegExp, GitCommandToReasonMap[GitC
393
385
  [
394
386
  'worktree-delete',
395
387
  [
388
+ // Must come first -- a locked worktree's lock reason is free text that can otherwise match the errors below
389
+ [GitErrors.worktreeLocked, 'locked'],
396
390
  [GitErrors.mainWorkingTree, 'defaultWorkingTree'],
397
391
  [GitErrors.uncommittedChanges, 'uncommittedChanges'],
398
392
  [GitErrors.failedToDeleteDirectoryNotEmpty, 'directoryNotEmpty'],
@@ -653,14 +647,37 @@ export class Git {
653
647
  return options.caching.cache.getOrCreate(
654
648
  options.caching.commonPath ?? options.cwd!,
655
649
  gitCommand,
656
- async cacheable => {
657
- const result = await this.runCore<T>({ ...options, caching: undefined }, runArgs, gitCommand);
658
- if (result.exitCode !== 0) {
650
+ async (cacheable, signal) => {
651
+ // Bind the shared spawn to the aggregate `signal` (fires only when ALL current callers
652
+ // abort), not this-caller's `options.cancellation` otherwise a superseded caller's
653
+ // abort would kill the shared command and reject concurrent riders that never cancelled.
654
+ const result = await this.runCore<T>(
655
+ { ...options, caching: undefined, cancellation: signal ?? options.cancellation },
656
+ runArgs,
657
+ gitCommand,
658
+ );
659
+ // Never cache a result that isn't a genuine command outcome. Under `errors: 'ignore'` a
660
+ // cancelled/aborted run RESOLVES an empty result, which — left cached — would be served as a
661
+ // real empty result for the full TTL (e.g. a valid merge-base read back as "none").
662
+ // Invalidate on anything that isn't a clean exit, or whenever the aggregate signal aborted,
663
+ // so the entry self-evicts instead of poisoning later callers.
664
+ //
665
+ // `status !== 'exited'` is what catches the case a bare `exitCode` check cannot. A swallowed
666
+ // `GitWarnings` match used to report `exitCode: 0` UNCONDITIONALLY — the old code read it off
667
+ // a `result` that is only ever assigned on the non-throwing path, so it was always the `?? 0`
668
+ // fallback — which meant `exitCode !== 0` could never fire and every swallowed failure was
669
+ // cached. A `warned` result now carries git's real code, so it's the status, not the code,
670
+ // that has to do the work here. The `exitCode !== 0` half is kept as-is — a non-zero exit is
671
+ // a real answer and arguably cacheable, but it isn't cached today and this isn't the change
672
+ // to start.
673
+ if (result.completion.status !== 'exited' || result.exitCode !== 0 || signal?.aborted) {
659
674
  cacheable.invalidate();
660
675
  }
661
676
  return result;
662
677
  },
663
- options.caching.options,
678
+ // Forward this caller's cancellation so `getOrCreate` races each caller's own wait — an
679
+ // aborting caller rejects only itself, leaving the shared work (and its riders) intact.
680
+ { ...options.caching.options, cancellation: options.cancellation },
664
681
  );
665
682
  }
666
683
 
@@ -746,12 +763,42 @@ export class Git {
746
763
  let result;
747
764
  try {
748
765
  result = await promise;
766
+ // A normal `runSpawn` only resolves on a clean exit — `code !== 0 || signal` rejects — but the
767
+ // `exitCodeOnly` overload resolves unconditionally, INCLUDING for a signalled run (no code, partial
768
+ // or absent stdout). Coercing that to `0` would report a killed command as a clean success, so
769
+ // classify it as the failure it is.
770
+ if (result.exitCode == null) {
771
+ // SIGTERM is how BOTH a timeout kill and a caller abort terminate, so it has to group with
772
+ // cancellations here exactly as it does on the reject path — `failed`/`signal` is for every
773
+ // OTHER signal. Only `exitCodeOnly` reaches this: a native spawn `timeout` fires
774
+ // `close(null, 'SIGTERM')` with no `error` event, so it resolves instead of rejecting.
775
+ // Throwing hands it to the catch below, which owns the timeout-vs-abort heuristic, the ABORTED
776
+ // log, and the `onAborted` hook — none of which a branch here would fire.
777
+ if (result.signal === 'SIGTERM') {
778
+ throw new CancelledRunError(gitCommand, true, undefined, result.signal);
779
+ }
780
+
781
+ return {
782
+ stdout: result.stdout,
783
+ stderr: result.stderr,
784
+ completion: {
785
+ status: 'failed',
786
+ reason: result.signal != null ? 'signal' : 'unstarted',
787
+ error: new Error(
788
+ `Command terminated without an exit code${result.signal != null ? ` (${result.signal})` : ''}`,
789
+ ),
790
+ },
791
+ };
792
+ }
793
+
749
794
  return {
750
795
  stdout: result.stdout,
751
796
  stderr: result.stderr,
752
- exitCode: result.exitCode ?? 0,
797
+ exitCode: result.exitCode,
798
+ completion: { status: 'exited', code: result.exitCode },
753
799
  };
754
800
  } catch (ex) {
801
+ let cancellationReason: GitRunCancellation = 'unknown';
755
802
  if (ex instanceof CancelledRunError) {
756
803
  const duration = getDurationMilliseconds(start);
757
804
  const timeout = runOpts.timeout ?? 0;
@@ -761,6 +808,9 @@ export class Git {
761
808
  : cancellation?.aborted
762
809
  ? 'cancellation'
763
810
  : 'unknown';
811
+ // Also surfaced on the result, but DIAGNOSTIC ONLY — a timeout kill and a caller abort are both
812
+ // SIGTERM, so this duration heuristic can be wrong near the boundary. Never gate behavior on it.
813
+ cancellationReason = reason === 'cancellation' ? 'aborted' : reason;
764
814
  Logger.warn(
765
815
  `${formatLoggableScopeBlock('GIT')} ${gitCommand} \u00b7 ABORTED after ${duration}ms (${reason})`,
766
816
  );
@@ -774,19 +824,44 @@ export class Git {
774
824
 
775
825
  if (errorHandling === 'ignore') {
776
826
  if (ex instanceof RunError) {
827
+ // `code` is `string | number | undefined`: a numeric string is a real exit code, but an errno
828
+ // (`'ENOENT'`) means the spawn itself failed, and `undefined` means the process never exited
829
+ // normally. Only the numeric case is an exit; the rest previously became `0` or `NaN`.
830
+ const code = typeof ex.code === 'number' ? ex.code : ex.code != null ? parseInt(ex.code, 10) : NaN;
831
+ const exited = Number.isInteger(code);
832
+
777
833
  return {
778
834
  stdout: ex.stdout,
779
835
  stderr: ex.stderr,
780
- exitCode: ex.code != null ? (typeof ex.code === 'number' ? ex.code : parseInt(ex.code, 10)) : 0,
781
- cancelled: ex instanceof CancelledRunError,
836
+ ...(exited ? { exitCode: code } : {}),
837
+ completion:
838
+ ex instanceof CancelledRunError
839
+ ? { status: 'cancelled', reason: cancellationReason, error: ex }
840
+ : exited
841
+ ? { status: 'exited', code: code }
842
+ : {
843
+ status: 'failed',
844
+ // A signal means it ran and was killed (partial `stdout` may exist);
845
+ // no signal and no numeric code means it never got that far.
846
+ reason: ex.signal != null ? 'signal' : 'unstarted',
847
+ error: ex,
848
+ },
782
849
  };
783
850
  }
784
851
 
852
+ // No cancellation branch here: `CancelledRunError extends RunError`, so reaching this at all
853
+ // proves `ex` is neither.
785
854
  return {
786
855
  stdout: '',
787
856
  stderr: undefined,
788
- exitCode: 0,
789
- cancelled: ex instanceof CancelledRunError,
857
+ completion: {
858
+ status: 'failed',
859
+ // No `RunError` means no process was ever spawned — a queue rejection or a
860
+ // failure before `spawn` returned. (Not an untrusted workspace: `run` refuses
861
+ // those up front, so they never reach this catch.)
862
+ reason: 'unstarted',
863
+ error: ex instanceof Error ? ex : new Error(String(ex)),
864
+ },
790
865
  };
791
866
  }
792
867
 
@@ -797,9 +872,31 @@ export class Git {
797
872
  }
798
873
  if (errorHandling === 'throw') throw exception;
799
874
 
800
- defaultExceptionHandler(exception, options.cwd, start);
875
+ // Rethrows unless the message matches a `GitWarnings` pattern, in which case it logs and returns the
876
+ // key that matched. Capture the error first — `exception` is cleared to keep it out of the `finally`
877
+ // log, but the result still needs to carry it.
878
+ const swallowed = exception;
879
+ const warning = defaultExceptionHandler(exception, options.cwd, start);
801
880
  exception = undefined;
802
- return { stdout: '', stderr: result?.stderr, exitCode: result?.exitCode ?? 0 };
881
+ // The command did NOT produce this empty stdout a warning was swallowed. Say so, or the caller
882
+ // can't tell a genuinely empty answer (`noCommits`) from a read that never happened
883
+ // (`notARepository`).
884
+ //
885
+ // The process DID exit though (a warning is only ever swallowed for a non-zero exit), so report the
886
+ // code. `GitError.exitCode` is `number | string | undefined` — same normalization as the
887
+ // `errors: 'ignore'` path above, since only the numeric case is a real exit.
888
+ const rawCode = swallowed instanceof GitError ? swallowed.exitCode : undefined;
889
+ const code = typeof rawCode === 'number' ? rawCode : rawCode != null ? parseInt(rawCode, 10) : NaN;
890
+
891
+ // No `stderr`: it belongs to the error here. The top-level field is the channel for runs that
892
+ // completed WITHOUT one (`exited` carries no error, so a successful command's stderr has nowhere
893
+ // else to go) — a swallowed warning always has a `GitError`, and it carries the stderr. Reading
894
+ // `result?.stderr` would be dead anyway: `result` is only assigned on the non-throwing path.
895
+ return {
896
+ stdout: '',
897
+ ...(Number.isInteger(code) ? { exitCode: code } : {}),
898
+ completion: { status: 'warned', warning: warning, error: swallowed },
899
+ };
803
900
  } finally {
804
901
  this.logGitCommandComplete(gitCommand, exception, getDurationMilliseconds(start), waiting);
805
902
  }
@@ -826,13 +923,7 @@ export class Git {
826
923
 
827
924
  // Fixes https://github.com/gitkraken/vscode-gitlens/issues/73 & https://github.com/gitkraken/vscode-gitlens/issues/161
828
925
  // See https://stackoverflow.com/questions/4144417/how-to-handle-asian-characters-in-file-names-in-git-on-os-x
829
- runArgs.unshift(
830
- '-c',
831
- 'core.quotepath=false',
832
- '-c',
833
- 'color.ui=false',
834
- ...(configs !== undefined ? configs : emptyArray),
835
- );
926
+ runArgs.unshift('-c', 'core.quotepath=false', '-c', 'color.ui=false', ...(configs ?? emptyArray));
836
927
 
837
928
  if (process.platform === 'win32') {
838
929
  runArgs.unshift('-c', 'core.longpaths=true');
@@ -962,7 +1053,7 @@ export class Git {
962
1053
  // Ensure cleanup happens immediately when the generator is explicitly closed (e.g., via break or return)
963
1054
  // This is called by JavaScript when the generator is abandoned, ensuring logGitCommand is called
964
1055
  // synchronously rather than waiting for garbage collection.
965
- // eslint-disable-next-line @typescript-eslint/no-meaningless-void-operator
1056
+ // oxlint-disable-next-line typescript/no-meaningless-void-operator
966
1057
  return void cleanup();
967
1058
  }
968
1059
 
@@ -1114,12 +1205,21 @@ export class Git {
1114
1205
  }
1115
1206
  }
1116
1207
 
1117
- export function defaultExceptionHandler(ex: Error, cwd: string | undefined, start?: [number, number]): void {
1208
+ /**
1209
+ * Swallows an error whose message matches a known-benign {@link GitWarnings} pattern, returning WHICH one
1210
+ * matched so the caller can record it — the distinction matters, since `noCommits` is a real answer while
1211
+ * `notARepository` is a failed read. Rethrows anything else.
1212
+ */
1213
+ export function defaultExceptionHandler(
1214
+ ex: Error,
1215
+ cwd: string | undefined,
1216
+ start?: [number, number],
1217
+ ): GitWarningKey | undefined {
1118
1218
  if (isCancellationError(ex)) throw ex;
1119
1219
 
1120
1220
  const msg = ex.message || ex.toString();
1121
1221
  if (msg) {
1122
- for (const warning of Object.values(GitWarnings)) {
1222
+ for (const [key, warning] of Object.entries(GitWarnings) as [GitWarningKey, RegExp][]) {
1123
1223
  if (warning.test(msg)) {
1124
1224
  const duration = start !== undefined ? ` [${getDurationMilliseconds(start)}ms]` : '';
1125
1225
  Logger.warn(
@@ -1128,7 +1228,7 @@ export function defaultExceptionHandler(ex: Error, cwd: string | undefined, star
1128
1228
  .replace(/fatal:\s*/g, '')
1129
1229
  .replace(/\r?\n|\r/g, ' \u00b7 ')}${duration}`,
1130
1230
  );
1131
- return;
1231
+ return key;
1132
1232
  }
1133
1233
  }
1134
1234
 
@@ -1137,7 +1237,9 @@ export function defaultExceptionHandler(ex: Error, cwd: string | undefined, star
1137
1237
  const [, ref] = match;
1138
1238
 
1139
1239
  // Since looking up a ref with ^3 (e.g. looking for untracked files in a stash) can error on some versions of git just ignore it
1140
- if (ref?.endsWith('^3')) return;
1240
+ // Swallowed, but it matched no `GitWarnings` entry — `undefined` records "unclassified", which
1241
+ // callers must treat as "not a real answer" exactly like any warning they don't whitelist.
1242
+ if (ref?.endsWith('^3')) return undefined;
1141
1243
  }
1142
1244
  }
1143
1245
 
@@ -76,7 +76,7 @@ const graphMapping = {
76
76
  message: '%B',
77
77
  };
78
78
 
79
- type GraphLogParser = LogParser<typeof graphMapping>;
79
+ export type GraphLogParser = LogParser<typeof graphMapping>;
80
80
  let _graphParser: GraphLogParser | undefined;
81
81
  type GraphWithStatsLogParser = LogParserWithStats<typeof graphMapping>;
82
82
  let _graphWithStatsParser: GraphWithStatsLogParser | undefined;
@@ -223,6 +223,14 @@ export type AsyncParser<T> = {
223
223
  separators: { record: string; field: string };
224
224
  parse: (data: string | Iterable<string> | undefined) => Generator<T> | Iterable<T>;
225
225
  parseAsync: (stream: AsyncGenerator<string>) => AsyncGenerator<T>;
226
+ /**
227
+ * Like `parseAsync` but yields one ARRAY of entries per stream chunk, scanning each chunk
228
+ * synchronously with plain `indexOf` (no per-field iterator machinery). Bulk consumers (the
229
+ * graph walk) avoid two promise hops per record — thousands of awaited yields collapse to one
230
+ * per chunk. Only the plain parser implements it; per-record `parseAsync` remains the
231
+ * general-purpose path.
232
+ */
233
+ parseAsyncBatched?: (stream: AsyncGenerator<string>) => AsyncGenerator<T[]>;
226
234
  };
227
235
 
228
236
  export type LogParser<T> = AsyncParser<LogParsedEntry<T>>;
@@ -280,6 +288,20 @@ const recordFormatSep = '%x1E';
280
288
  const fieldSep = '\x1D'; // ASCII Group Separator character
281
289
  const fieldFormatSep = '%x1D';
282
290
 
291
+ // A complete record terminates every mapped field with a field separator — a cancelled/early-closed
292
+ // stream resolves cleanly with a truncated tail missing at least the final terminator.
293
+ function isCompleteRecord(record: string, requiredFields: number): boolean {
294
+ let count = 0;
295
+ let index = -1;
296
+ while (count < requiredFields) {
297
+ index = record.indexOf(fieldSep, index + 1);
298
+ if (index === -1) return false;
299
+
300
+ count++;
301
+ }
302
+ return true;
303
+ }
304
+
283
305
  export function createLogParser<T extends Record<string, string>>(mapping: ExtractAll<T, string>): LogParser<T> {
284
306
  let format = recordFormatSep;
285
307
  const keys: (keyof ExtractAll<T, string>)[] = [];
@@ -339,6 +361,8 @@ export function createLogParser<T extends Record<string, string>>(mapping: Extra
339
361
 
340
362
  for await (const record of records) {
341
363
  if (!record.length) continue;
364
+ // Drop a truncated tail (cancelled/early-closed stream) instead of yielding undefined/partial fields.
365
+ if (!isCompleteRecord(record, keys.length)) continue;
342
366
 
343
367
  entry = {} as unknown as LogParsedEntry<T>;
344
368
  fields = iterateByDelimiter(record, fieldSep);
@@ -361,11 +385,65 @@ export function createLogParser<T extends Record<string, string>>(mapping: Extra
361
385
  sw?.stop({ suffix: ` parsed ${count} records` });
362
386
  }
363
387
 
388
+ // Builds one entry from a complete record with a plain `indexOf` walk. Matches `parseAsync`'s
389
+ // semantics exactly: fields beyond the mapping are ignored, and every mapped field is
390
+ // terminated by a field separator (the format string appends one after each field).
391
+ function parseRecord(record: string): LogParsedEntry<T> {
392
+ const entry = {} as unknown as LogParsedEntry<T>;
393
+ let start = 0;
394
+ for (const key of keys) {
395
+ const end = record.indexOf(fieldSep, start);
396
+ if (end === -1) break;
397
+
398
+ entry[key] = record.substring(start, end) as T[keyof T];
399
+ start = end + 1;
400
+ }
401
+ return entry;
402
+ }
403
+
404
+ async function* parseAsyncBatched(stream: AsyncGenerator<string>): AsyncGenerator<LogParsedEntry<T>[]> {
405
+ using sw = maybeStopWatch('Git.LogParser.parseAsyncBatched', { log: { onlyExit: true, level: 'debug' } });
406
+
407
+ let count = 0;
408
+ let buffer = '';
409
+ for await (const chunk of stream) {
410
+ buffer += chunk;
411
+
412
+ let batch: LogParsedEntry<T>[] | undefined;
413
+ let start = 0;
414
+ while (true) {
415
+ const end = buffer.indexOf(recordSep, start);
416
+ if (end === -1) break;
417
+
418
+ if (end > start) {
419
+ (batch ??= []).push(parseRecord(buffer.substring(start, end)));
420
+ count++;
421
+ }
422
+ start = end + 1;
423
+ }
424
+ if (start > 0) {
425
+ buffer = buffer.substring(start);
426
+ }
427
+ if (batch != null) {
428
+ yield batch;
429
+ }
430
+ }
431
+ // Trailing record (the stream doesn't end with a record separator); a truncated tail from a
432
+ // cancelled/early-closed stream is missing a field terminator and must be dropped, not parsed.
433
+ if (buffer.length > 0 && isCompleteRecord(buffer, keys.length)) {
434
+ count++;
435
+ yield [parseRecord(buffer)];
436
+ }
437
+
438
+ sw?.stop({ suffix: ` parsed ${count} records` });
439
+ }
440
+
364
441
  return {
365
442
  arguments: args,
366
443
  separators: { record: recordSep, field: fieldSep },
367
444
  parse: parse,
368
445
  parseAsync: parseAsync,
446
+ parseAsyncBatched: parseAsyncBatched,
369
447
  };
370
448
  }
371
449
 
@@ -605,6 +683,8 @@ function createLogParserWithFilesAndStats<T extends Record<string, string> | voi
605
683
 
606
684
  for await (const record of records) {
607
685
  if (!record.length) continue;
686
+ // Drop a truncated tail (cancelled/early-closed stream) instead of yielding undefined/partial fields.
687
+ if (!isCompleteRecord(record, keys.length)) continue;
608
688
 
609
689
  count++;
610
690
  entry = {} as unknown as LogParsedEntryWithFilesAndStats<T>;
@@ -955,6 +1035,8 @@ function createLogParserWithPatch<T extends Record<string, string>>(
955
1035
 
956
1036
  for await (const record of records) {
957
1037
  if (!record.length) continue;
1038
+ // Drop a truncated tail (cancelled/early-closed stream) instead of yielding undefined/partial fields.
1039
+ if (!isCompleteRecord(record, keys.length)) continue;
958
1040
 
959
1041
  count++;
960
1042
  entry = {} as unknown as LogParsedEntryWithFiles<T>;
@@ -0,0 +1,85 @@
1
+ import type { SshPublicKey } from '../../git/models/signature.js';
2
+ import { isValidSshKeyData, isValidSshKeyType } from '../../git/utils/sshKey.utils.js';
3
+
4
+ const sshSigMagic = 'SSHSIG';
5
+ const gpgSigHeaderRegex = /^gpgsig(?:-sha256)? /;
6
+ const sshSigArmorRegex = /-----BEGIN SSH SIGNATURE-----\n([\s\S]*?)\n-----END SSH SIGNATURE-----/;
7
+ // A commit header line: `committer Display Name <email> <unix-ts> <tz>`.
8
+ const committerRegex = /^committer (.*) <([^>]*)> \d+ [-+]\d+$/m;
9
+
10
+ /**
11
+ * Extracts the committer's name and raw email from a commit object. The raw email (not a mailmapped one) is the
12
+ * principal Git checks an SSH signature against, so it's what an `allowed_signers` entry must use.
13
+ */
14
+ export function extractCommitterFromCommitObject(commitObject: string): { name: string; email: string } | undefined {
15
+ const match = committerRegex.exec(commitObject);
16
+ if (match == null) return undefined;
17
+
18
+ return { name: match[1], email: match[2] };
19
+ }
20
+
21
+ /**
22
+ * Extracts the signer's full SSH public key from a commit object's `gpgsig` SSH signature.
23
+ *
24
+ * A commit signed with `gpg.format=ssh` stores an armored `-----BEGIN SSH SIGNATURE-----` (SSHSIG) blob in its
25
+ * `gpgsig` header, and the SSHSIG wire format embeds the signer's full public key — exactly what an `allowed_signers`
26
+ * entry requires. (`git log`'s signature fields only expose the key fingerprint, never the full key.)
27
+ *
28
+ * @param commitObject Raw commit object text, as produced by `git cat-file commit <sha>`
29
+ * @returns The key type and base64 public-key blob, or `undefined` if the commit isn't SSH-signed or can't be parsed.
30
+ */
31
+ export function extractSshPublicKeyFromCommitObject(commitObject: string): SshPublicKey | undefined {
32
+ const armored = extractArmoredSignature(commitObject);
33
+ if (armored == null) return undefined;
34
+
35
+ const buffer = Buffer.from(armored, 'base64');
36
+
37
+ // SSHSIG wire format (see OpenSSH PROTOCOL.sshsig):
38
+ // byte[6] MAGIC "SSHSIG" | uint32 version | string publickey | string namespace | ...
39
+ // where each `string` is a big-endian uint32 length followed by that many bytes.
40
+ if (buffer.length < 10 || buffer.toString('latin1', 0, 6) !== sshSigMagic) return undefined;
41
+
42
+ // `publickey` is the first length-prefixed string, after the 6-byte magic and 4-byte version.
43
+ const pubKeyBlob = readSshString(buffer, 10);
44
+ if (pubKeyBlob == null) return undefined;
45
+
46
+ // The public-key blob itself begins with its key type as a length-prefixed string.
47
+ const keyType = readSshString(pubKeyBlob, 0)?.toString('utf8');
48
+ if (!keyType) return undefined;
49
+
50
+ const keyData = pubKeyBlob.toString('base64');
51
+ // The signature blob is attacker-controllable (Git stores it verbatim and never verifies it on read), so reject
52
+ // anything that isn't a recognized key type / well-formed base64 before it can become an `allowed_signers` entry.
53
+ if (!isValidSshKeyType(keyType) || !isValidSshKeyData(keyData)) return undefined;
54
+
55
+ return { keyType: keyType, keyData: keyData };
56
+ }
57
+
58
+ /** Extracts and concatenates the base64 body of the armored SSH signature from a commit's `gpgsig` header. */
59
+ function extractArmoredSignature(commitObject: string): string | undefined {
60
+ const lines = commitObject.split('\n');
61
+ const start = lines.findIndex(l => gpgSigHeaderRegex.test(l));
62
+ if (start === -1) return undefined;
63
+
64
+ // The header value, followed by continuation lines (each indented with a single leading space).
65
+ const block = [lines[start].replace(gpgSigHeaderRegex, '')];
66
+ for (let i = start + 1; i < lines.length; i++) {
67
+ if (!lines[i].startsWith(' ')) break;
68
+
69
+ block.push(lines[i].slice(1));
70
+ }
71
+
72
+ const match = sshSigArmorRegex.exec(block.join('\n'));
73
+ return match != null ? match[1].replace(/\s+/g, '') : undefined;
74
+ }
75
+
76
+ /** Reads a length-prefixed SSH wire-format string (big-endian uint32 length + bytes) at `offset`. */
77
+ function readSshString(buffer: Buffer, offset: number): Buffer | undefined {
78
+ if (offset + 4 > buffer.length) return undefined;
79
+
80
+ const start = offset + 4;
81
+ const end = start + buffer.readUInt32BE(offset);
82
+ if (end > buffer.length) return undefined;
83
+
84
+ return buffer.subarray(start, end);
85
+ }
@@ -39,8 +39,6 @@ export function parseGitWorktrees(
39
39
  let index: number;
40
40
  let key: string;
41
41
  let value: string;
42
- let locked: string;
43
- let prunable: string;
44
42
  let main = true; // the first worktree is the main worktree
45
43
 
46
44
  for (line of iterateByDelimiter(data, '\n')) {
@@ -54,7 +52,7 @@ export function parseGitWorktrees(
54
52
  }
55
53
 
56
54
  if (!key && entry != null) {
57
- // eslint-disable-next-line no-loop-func
55
+ // oxlint-disable-next-line no-loop-func
58
56
  const branch = entry.branch ? branches?.find(b => b.name === entry!.branch) : undefined;
59
57
  const uri = fileUri(entry.path!);
60
58
 
@@ -96,13 +94,13 @@ export function parseGitWorktrees(
96
94
  case 'detached':
97
95
  entry.detached = true;
98
96
  break;
97
+ // `value` is the whole reason, which is only present when the locker/Git provides one.
98
+ // Reasons with unusual characters (e.g. newlines) come through C-quoted, per `core.quotePath`
99
99
  case 'locked':
100
- [, locked] = value.split(' ', 2);
101
- entry.locked = locked?.trim() || true;
100
+ entry.locked = value.trim() || true;
102
101
  break;
103
102
  case 'prunable':
104
- [, prunable] = value.split(' ', 2);
105
- entry.prunable = prunable?.trim() || true;
103
+ entry.prunable = value.trim() || true;
106
104
  break;
107
105
  }
108
106
  }