@gitkraken/core-gitlens 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1375) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +30 -0
  3. package/LICENSE.plus +40 -0
  4. package/README.md +54 -0
  5. package/dist/git/cache.d.ts +140 -0
  6. package/dist/git/cache.d.ts.map +1 -0
  7. package/dist/git/cache.js +765 -0
  8. package/dist/git/cache.js.map +1 -0
  9. package/dist/git/context.d.ts +238 -0
  10. package/dist/git/context.d.ts.map +1 -0
  11. package/dist/git/context.js +11 -0
  12. package/dist/git/context.js.map +1 -0
  13. package/dist/git/errors.d.ts +419 -0
  14. package/dist/git/errors.d.ts.map +1 -0
  15. package/dist/git/errors.js +681 -0
  16. package/dist/git/errors.js.map +1 -0
  17. package/dist/git/exec.types.d.ts +66 -0
  18. package/dist/git/exec.types.d.ts.map +1 -0
  19. package/dist/git/exec.types.js +2 -0
  20. package/dist/git/exec.types.js.map +1 -0
  21. package/dist/git/features.d.ts +8 -0
  22. package/dist/git/features.d.ts.map +1 -0
  23. package/dist/git/features.js +18 -0
  24. package/dist/git/features.js.map +1 -0
  25. package/dist/git/models/author.d.ts +17 -0
  26. package/dist/git/models/author.d.ts.map +1 -0
  27. package/dist/git/models/author.js +2 -0
  28. package/dist/git/models/author.js.map +1 -0
  29. package/dist/git/models/autolink.d.ts +51 -0
  30. package/dist/git/models/autolink.d.ts.map +1 -0
  31. package/dist/git/models/autolink.js +2 -0
  32. package/dist/git/models/autolink.js.map +1 -0
  33. package/dist/git/models/blame.d.ts +41 -0
  34. package/dist/git/models/blame.d.ts.map +1 -0
  35. package/dist/git/models/blame.js +2 -0
  36. package/dist/git/models/blame.js.map +1 -0
  37. package/dist/git/models/branch.d.ts +85 -0
  38. package/dist/git/models/branch.d.ts.map +1 -0
  39. package/dist/git/models/branch.js +174 -0
  40. package/dist/git/models/branch.js.map +1 -0
  41. package/dist/git/models/commit.d.ts +163 -0
  42. package/dist/git/models/commit.d.ts.map +1 -0
  43. package/dist/git/models/commit.js +496 -0
  44. package/dist/git/models/commit.js.map +1 -0
  45. package/dist/git/models/contributor.d.ts +40 -0
  46. package/dist/git/models/contributor.d.ts.map +1 -0
  47. package/dist/git/models/contributor.js +67 -0
  48. package/dist/git/models/contributor.js.map +1 -0
  49. package/dist/git/models/defaultBranch.d.ts +6 -0
  50. package/dist/git/models/defaultBranch.d.ts.map +1 -0
  51. package/dist/git/models/defaultBranch.js +2 -0
  52. package/dist/git/models/defaultBranch.js.map +1 -0
  53. package/dist/git/models/diff.d.ts +73 -0
  54. package/dist/git/models/diff.d.ts.map +1 -0
  55. package/dist/git/models/diff.js +2 -0
  56. package/dist/git/models/diff.js.map +1 -0
  57. package/dist/git/models/file.d.ts +23 -0
  58. package/dist/git/models/file.d.ts.map +1 -0
  59. package/dist/git/models/file.js +2 -0
  60. package/dist/git/models/file.js.map +1 -0
  61. package/dist/git/models/fileChange.d.ts +50 -0
  62. package/dist/git/models/fileChange.d.ts.map +1 -0
  63. package/dist/git/models/fileChange.js +69 -0
  64. package/dist/git/models/fileChange.js.map +1 -0
  65. package/dist/git/models/fileStatus.d.ts +33 -0
  66. package/dist/git/models/fileStatus.d.ts.map +1 -0
  67. package/dist/git/models/fileStatus.js +29 -0
  68. package/dist/git/models/fileStatus.js.map +1 -0
  69. package/dist/git/models/graph.d.ts +171 -0
  70. package/dist/git/models/graph.d.ts.map +1 -0
  71. package/dist/git/models/graph.js +2 -0
  72. package/dist/git/models/graph.js.map +1 -0
  73. package/dist/git/models/graphSearch.d.ts +48 -0
  74. package/dist/git/models/graphSearch.d.ts.map +1 -0
  75. package/dist/git/models/graphSearch.js +2 -0
  76. package/dist/git/models/graphSearch.js.map +1 -0
  77. package/dist/git/models/issue.d.ts +69 -0
  78. package/dist/git/models/issue.d.ts.map +1 -0
  79. package/dist/git/models/issue.js +68 -0
  80. package/dist/git/models/issue.js.map +1 -0
  81. package/dist/git/models/issueOrPullRequest.d.ts +19 -0
  82. package/dist/git/models/issueOrPullRequest.d.ts.map +1 -0
  83. package/dist/git/models/issueOrPullRequest.js +2 -0
  84. package/dist/git/models/issueOrPullRequest.js.map +1 -0
  85. package/dist/git/models/lineRange.d.ts +8 -0
  86. package/dist/git/models/lineRange.d.ts.map +1 -0
  87. package/dist/git/models/lineRange.js +2 -0
  88. package/dist/git/models/lineRange.js.map +1 -0
  89. package/dist/git/models/log.d.ts +19 -0
  90. package/dist/git/models/log.d.ts.map +1 -0
  91. package/dist/git/models/log.js +2 -0
  92. package/dist/git/models/log.js.map +1 -0
  93. package/dist/git/models/mergeConflicts.d.ts +23 -0
  94. package/dist/git/models/mergeConflicts.d.ts.map +1 -0
  95. package/dist/git/models/mergeConflicts.js +2 -0
  96. package/dist/git/models/mergeConflicts.js.map +1 -0
  97. package/dist/git/models/patch.d.ts +22 -0
  98. package/dist/git/models/patch.d.ts.map +1 -0
  99. package/dist/git/models/patch.js +2 -0
  100. package/dist/git/models/patch.js.map +1 -0
  101. package/dist/git/models/pausedOperationStatus.d.ts +52 -0
  102. package/dist/git/models/pausedOperationStatus.d.ts.map +1 -0
  103. package/dist/git/models/pausedOperationStatus.js +2 -0
  104. package/dist/git/models/pausedOperationStatus.js.map +1 -0
  105. package/dist/git/models/pullRequest.d.ts +125 -0
  106. package/dist/git/models/pullRequest.d.ts.map +1 -0
  107. package/dist/git/models/pullRequest.js +127 -0
  108. package/dist/git/models/pullRequest.js.map +1 -0
  109. package/dist/git/models/rebase.d.ts +51 -0
  110. package/dist/git/models/rebase.d.ts.map +1 -0
  111. package/dist/git/models/rebase.js +2 -0
  112. package/dist/git/models/rebase.js.map +1 -0
  113. package/dist/git/models/reference.d.ts +48 -0
  114. package/dist/git/models/reference.d.ts.map +1 -0
  115. package/dist/git/models/reference.js +2 -0
  116. package/dist/git/models/reference.js.map +1 -0
  117. package/dist/git/models/reflog.d.ts +33 -0
  118. package/dist/git/models/reflog.d.ts.map +1 -0
  119. package/dist/git/models/reflog.js +85 -0
  120. package/dist/git/models/reflog.js.map +1 -0
  121. package/dist/git/models/remote.d.ts +37 -0
  122. package/dist/git/models/remote.d.ts.map +1 -0
  123. package/dist/git/models/remote.js +98 -0
  124. package/dist/git/models/remote.js.map +1 -0
  125. package/dist/git/models/remoteProvider.d.ts +112 -0
  126. package/dist/git/models/remoteProvider.d.ts.map +1 -0
  127. package/dist/git/models/remoteProvider.js +154 -0
  128. package/dist/git/models/remoteProvider.js.map +1 -0
  129. package/dist/git/models/remoteResource.d.ts +78 -0
  130. package/dist/git/models/remoteResource.d.ts.map +1 -0
  131. package/dist/git/models/remoteResource.js +13 -0
  132. package/dist/git/models/remoteResource.js.map +1 -0
  133. package/dist/git/models/repository.d.ts +106 -0
  134. package/dist/git/models/repository.d.ts.map +1 -0
  135. package/dist/git/models/repository.js +324 -0
  136. package/dist/git/models/repository.js.map +1 -0
  137. package/dist/git/models/repositoryChangeEvent.d.ts +17 -0
  138. package/dist/git/models/repositoryChangeEvent.d.ts.map +1 -0
  139. package/dist/git/models/repositoryChangeEvent.js +26 -0
  140. package/dist/git/models/repositoryChangeEvent.js.map +1 -0
  141. package/dist/git/models/repositoryIdentities.d.ts +72 -0
  142. package/dist/git/models/repositoryIdentities.d.ts.map +1 -0
  143. package/dist/git/models/repositoryIdentities.js +7 -0
  144. package/dist/git/models/repositoryIdentities.js.map +1 -0
  145. package/dist/git/models/repositoryMetadata.d.ts +12 -0
  146. package/dist/git/models/repositoryMetadata.d.ts.map +1 -0
  147. package/dist/git/models/repositoryMetadata.js +2 -0
  148. package/dist/git/models/repositoryMetadata.js.map +1 -0
  149. package/dist/git/models/resourceDescriptor.d.ts +12 -0
  150. package/dist/git/models/resourceDescriptor.d.ts.map +1 -0
  151. package/dist/git/models/resourceDescriptor.js +2 -0
  152. package/dist/git/models/resourceDescriptor.js.map +1 -0
  153. package/dist/git/models/revision.d.ts +7 -0
  154. package/dist/git/models/revision.d.ts.map +1 -0
  155. package/dist/git/models/revision.js +6 -0
  156. package/dist/git/models/revision.js.map +1 -0
  157. package/dist/git/models/search.d.ts +66 -0
  158. package/dist/git/models/search.d.ts.map +1 -0
  159. package/dist/git/models/search.js +48 -0
  160. package/dist/git/models/search.js.map +1 -0
  161. package/dist/git/models/shortlog.d.ts +6 -0
  162. package/dist/git/models/shortlog.d.ts.map +1 -0
  163. package/dist/git/models/shortlog.js +2 -0
  164. package/dist/git/models/shortlog.js.map +1 -0
  165. package/dist/git/models/signature.d.ts +26 -0
  166. package/dist/git/models/signature.d.ts.map +1 -0
  167. package/dist/git/models/signature.js +2 -0
  168. package/dist/git/models/signature.js.map +1 -0
  169. package/dist/git/models/staging.d.ts +24 -0
  170. package/dist/git/models/staging.d.ts.map +1 -0
  171. package/dist/git/models/staging.js +2 -0
  172. package/dist/git/models/staging.js.map +1 -0
  173. package/dist/git/models/stash.d.ts +6 -0
  174. package/dist/git/models/stash.d.ts.map +1 -0
  175. package/dist/git/models/stash.js +2 -0
  176. package/dist/git/models/stash.js.map +1 -0
  177. package/dist/git/models/status.d.ts +55 -0
  178. package/dist/git/models/status.d.ts.map +1 -0
  179. package/dist/git/models/status.js +208 -0
  180. package/dist/git/models/status.js.map +1 -0
  181. package/dist/git/models/statusFile.d.ts +28 -0
  182. package/dist/git/models/statusFile.d.ts.map +1 -0
  183. package/dist/git/models/statusFile.js +114 -0
  184. package/dist/git/models/statusFile.js.map +1 -0
  185. package/dist/git/models/tag.d.ts +26 -0
  186. package/dist/git/models/tag.d.ts.map +1 -0
  187. package/dist/git/models/tag.js +73 -0
  188. package/dist/git/models/tag.js.map +1 -0
  189. package/dist/git/models/tree.d.ts +10 -0
  190. package/dist/git/models/tree.d.ts.map +1 -0
  191. package/dist/git/models/tree.js +2 -0
  192. package/dist/git/models/tree.js.map +1 -0
  193. package/dist/git/models/user.d.ts +7 -0
  194. package/dist/git/models/user.d.ts.map +1 -0
  195. package/dist/git/models/user.js +2 -0
  196. package/dist/git/models/user.js.map +1 -0
  197. package/dist/git/models/worktree.d.ts +51 -0
  198. package/dist/git/models/worktree.d.ts.map +1 -0
  199. package/dist/git/models/worktree.js +136 -0
  200. package/dist/git/models/worktree.js.map +1 -0
  201. package/dist/git/parsers/diffParser.d.ts +45 -0
  202. package/dist/git/parsers/diffParser.d.ts.map +1 -0
  203. package/dist/git/parsers/diffParser.js +628 -0
  204. package/dist/git/parsers/diffParser.js.map +1 -0
  205. package/dist/git/parsers/rebaseTodoParser.d.ts +15 -0
  206. package/dist/git/parsers/rebaseTodoParser.d.ts.map +1 -0
  207. package/dist/git/parsers/rebaseTodoParser.js +215 -0
  208. package/dist/git/parsers/rebaseTodoParser.js.map +1 -0
  209. package/dist/git/providers/blame.d.ts +15 -0
  210. package/dist/git/providers/blame.d.ts.map +1 -0
  211. package/dist/git/providers/blame.js +2 -0
  212. package/dist/git/providers/blame.js.map +1 -0
  213. package/dist/git/providers/branches.d.ts +80 -0
  214. package/dist/git/providers/branches.d.ts.map +1 -0
  215. package/dist/git/providers/branches.js +2 -0
  216. package/dist/git/providers/branches.js.map +1 -0
  217. package/dist/git/providers/commits.d.ts +102 -0
  218. package/dist/git/providers/commits.d.ts.map +1 -0
  219. package/dist/git/providers/commits.js +2 -0
  220. package/dist/git/providers/commits.js.map +1 -0
  221. package/dist/git/providers/config.d.ts +64 -0
  222. package/dist/git/providers/config.d.ts.map +1 -0
  223. package/dist/git/providers/config.js +2 -0
  224. package/dist/git/providers/config.js.map +1 -0
  225. package/dist/git/providers/contributors.d.ts +26 -0
  226. package/dist/git/providers/contributors.d.ts.map +1 -0
  227. package/dist/git/providers/contributors.js +2 -0
  228. package/dist/git/providers/contributors.js.map +1 -0
  229. package/dist/git/providers/diff.d.ts +73 -0
  230. package/dist/git/providers/diff.d.ts.map +1 -0
  231. package/dist/git/providers/diff.js +2 -0
  232. package/dist/git/providers/diff.js.map +1 -0
  233. package/dist/git/providers/graph.d.ts +20 -0
  234. package/dist/git/providers/graph.d.ts.map +1 -0
  235. package/dist/git/providers/graph.js +2 -0
  236. package/dist/git/providers/graph.js.map +1 -0
  237. package/dist/git/providers/operations.d.ts +65 -0
  238. package/dist/git/providers/operations.d.ts.map +1 -0
  239. package/dist/git/providers/operations.js +2 -0
  240. package/dist/git/providers/operations.js.map +1 -0
  241. package/dist/git/providers/patch.d.ts +27 -0
  242. package/dist/git/providers/patch.d.ts.map +1 -0
  243. package/dist/git/providers/patch.js +2 -0
  244. package/dist/git/providers/patch.js.map +1 -0
  245. package/dist/git/providers/pausedOperations.d.ts +11 -0
  246. package/dist/git/providers/pausedOperations.d.ts.map +1 -0
  247. package/dist/git/providers/pausedOperations.js +2 -0
  248. package/dist/git/providers/pausedOperations.js.map +1 -0
  249. package/dist/git/providers/provider.d.ts +57 -0
  250. package/dist/git/providers/provider.d.ts.map +1 -0
  251. package/dist/git/providers/provider.js +2 -0
  252. package/dist/git/providers/provider.js.map +1 -0
  253. package/dist/git/providers/refs.d.ts +22 -0
  254. package/dist/git/providers/refs.d.ts.map +1 -0
  255. package/dist/git/providers/refs.js +2 -0
  256. package/dist/git/providers/refs.js.map +1 -0
  257. package/dist/git/providers/remotes.d.ts +25 -0
  258. package/dist/git/providers/remotes.d.ts.map +1 -0
  259. package/dist/git/providers/remotes.js +2 -0
  260. package/dist/git/providers/remotes.js.map +1 -0
  261. package/dist/git/providers/revision.d.ts +28 -0
  262. package/dist/git/providers/revision.d.ts.map +1 -0
  263. package/dist/git/providers/revision.js +2 -0
  264. package/dist/git/providers/revision.js.map +1 -0
  265. package/dist/git/providers/shared/remotes.d.ts +25 -0
  266. package/dist/git/providers/shared/remotes.d.ts.map +1 -0
  267. package/dist/git/providers/shared/remotes.js +79 -0
  268. package/dist/git/providers/shared/remotes.js.map +1 -0
  269. package/dist/git/providers/staging.d.ts +22 -0
  270. package/dist/git/providers/staging.d.ts.map +1 -0
  271. package/dist/git/providers/staging.js +2 -0
  272. package/dist/git/providers/staging.js.map +1 -0
  273. package/dist/git/providers/stash.d.ts +41 -0
  274. package/dist/git/providers/stash.d.ts.map +1 -0
  275. package/dist/git/providers/stash.js +2 -0
  276. package/dist/git/providers/stash.js.map +1 -0
  277. package/dist/git/providers/status.d.ts +30 -0
  278. package/dist/git/providers/status.d.ts.map +1 -0
  279. package/dist/git/providers/status.js +2 -0
  280. package/dist/git/providers/status.js.map +1 -0
  281. package/dist/git/providers/tags.d.ts +18 -0
  282. package/dist/git/providers/tags.d.ts.map +1 -0
  283. package/dist/git/providers/tags.js +2 -0
  284. package/dist/git/providers/tags.js.map +1 -0
  285. package/dist/git/providers/types.d.ts +28 -0
  286. package/dist/git/providers/types.d.ts.map +1 -0
  287. package/dist/git/providers/types.js +2 -0
  288. package/dist/git/providers/types.js.map +1 -0
  289. package/dist/git/providers/worktrees.d.ts +23 -0
  290. package/dist/git/providers/worktrees.d.ts.map +1 -0
  291. package/dist/git/providers/worktrees.js +2 -0
  292. package/dist/git/providers/worktrees.js.map +1 -0
  293. package/dist/git/remotes/azure-devops.d.ts +43 -0
  294. package/dist/git/remotes/azure-devops.d.ts.map +1 -0
  295. package/dist/git/remotes/azure-devops.js +248 -0
  296. package/dist/git/remotes/azure-devops.js.map +1 -0
  297. package/dist/git/remotes/bitbucket-server.d.ts +32 -0
  298. package/dist/git/remotes/bitbucket-server.d.ts.map +1 -0
  299. package/dist/git/remotes/bitbucket-server.js +145 -0
  300. package/dist/git/remotes/bitbucket-server.js.map +1 -0
  301. package/dist/git/remotes/bitbucket.d.ts +29 -0
  302. package/dist/git/remotes/bitbucket.d.ts.map +1 -0
  303. package/dist/git/remotes/bitbucket.js +114 -0
  304. package/dist/git/remotes/bitbucket.js.map +1 -0
  305. package/dist/git/remotes/custom.d.ts +26 -0
  306. package/dist/git/remotes/custom.d.ts.map +1 -0
  307. package/dist/git/remotes/custom.js +111 -0
  308. package/dist/git/remotes/custom.js.map +1 -0
  309. package/dist/git/remotes/gerrit.d.ts +31 -0
  310. package/dist/git/remotes/gerrit.d.ts.map +1 -0
  311. package/dist/git/remotes/gerrit.js +146 -0
  312. package/dist/git/remotes/gerrit.js.map +1 -0
  313. package/dist/git/remotes/gitea.d.ts +30 -0
  314. package/dist/git/remotes/gitea.d.ts.map +1 -0
  315. package/dist/git/remotes/gitea.js +148 -0
  316. package/dist/git/remotes/gitea.js.map +1 -0
  317. package/dist/git/remotes/github.d.ts +41 -0
  318. package/dist/git/remotes/github.d.ts.map +1 -0
  319. package/dist/git/remotes/github.js +198 -0
  320. package/dist/git/remotes/github.js.map +1 -0
  321. package/dist/git/remotes/gitlab.d.ts +35 -0
  322. package/dist/git/remotes/gitlab.d.ts.map +1 -0
  323. package/dist/git/remotes/gitlab.js +232 -0
  324. package/dist/git/remotes/gitlab.js.map +1 -0
  325. package/dist/git/remotes/google-source.d.ts +17 -0
  326. package/dist/git/remotes/google-source.d.ts.map +1 -0
  327. package/dist/git/remotes/google-source.js +32 -0
  328. package/dist/git/remotes/google-source.js.map +1 -0
  329. package/dist/git/remotes/matcher.d.ts +35 -0
  330. package/dist/git/remotes/matcher.d.ts.map +1 -0
  331. package/dist/git/remotes/matcher.js +140 -0
  332. package/dist/git/remotes/matcher.js.map +1 -0
  333. package/dist/git/repositoryService.d.ts +127 -0
  334. package/dist/git/repositoryService.d.ts.map +1 -0
  335. package/dist/git/repositoryService.js +54 -0
  336. package/dist/git/repositoryService.js.map +1 -0
  337. package/dist/git/service.d.ts +112 -0
  338. package/dist/git/service.d.ts.map +1 -0
  339. package/dist/git/service.js +303 -0
  340. package/dist/git/service.js.map +1 -0
  341. package/dist/git/utils/autolink.utils.d.ts +13 -0
  342. package/dist/git/utils/autolink.utils.d.ts.map +1 -0
  343. package/dist/git/utils/autolink.utils.js +147 -0
  344. package/dist/git/utils/autolink.utils.js.map +1 -0
  345. package/dist/git/utils/blame.utils.d.ts +47 -0
  346. package/dist/git/utils/blame.utils.d.ts.map +1 -0
  347. package/dist/git/utils/blame.utils.js +239 -0
  348. package/dist/git/utils/blame.utils.js.map +1 -0
  349. package/dist/git/utils/branch.utils.d.ts +22 -0
  350. package/dist/git/utils/branch.utils.d.ts.map +1 -0
  351. package/dist/git/utils/branch.utils.js +122 -0
  352. package/dist/git/utils/branch.utils.js.map +1 -0
  353. package/dist/git/utils/commit.utils.d.ts +26 -0
  354. package/dist/git/utils/commit.utils.d.ts.map +1 -0
  355. package/dist/git/utils/commit.utils.js +54 -0
  356. package/dist/git/utils/commit.utils.js.map +1 -0
  357. package/dist/git/utils/contributor.utils.d.ts +15 -0
  358. package/dist/git/utils/contributor.utils.d.ts.map +1 -0
  359. package/dist/git/utils/contributor.utils.js +55 -0
  360. package/dist/git/utils/contributor.utils.js.map +1 -0
  361. package/dist/git/utils/fetch.utils.d.ts +20 -0
  362. package/dist/git/utils/fetch.utils.d.ts.map +1 -0
  363. package/dist/git/utils/fetch.utils.js +47 -0
  364. package/dist/git/utils/fetch.utils.js.map +1 -0
  365. package/dist/git/utils/fileStatus.utils.d.ts +24 -0
  366. package/dist/git/utils/fileStatus.utils.d.ts.map +1 -0
  367. package/dist/git/utils/fileStatus.utils.js +45 -0
  368. package/dist/git/utils/fileStatus.utils.js.map +1 -0
  369. package/dist/git/utils/issue.utils.d.ts +4 -0
  370. package/dist/git/utils/issue.utils.d.ts.map +1 -0
  371. package/dist/git/utils/issue.utils.js +76 -0
  372. package/dist/git/utils/issue.utils.js.map +1 -0
  373. package/dist/git/utils/issueOrPullRequest.utils.d.ts +3 -0
  374. package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +1 -0
  375. package/dist/git/utils/issueOrPullRequest.utils.js +22 -0
  376. package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -0
  377. package/dist/git/utils/mergeConflicts.utils.d.ts +3 -0
  378. package/dist/git/utils/mergeConflicts.utils.d.ts.map +1 -0
  379. package/dist/git/utils/mergeConflicts.utils.js +19 -0
  380. package/dist/git/utils/mergeConflicts.utils.js.map +1 -0
  381. package/dist/git/utils/pausedOperationStatus.utils.d.ts +58 -0
  382. package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -0
  383. package/dist/git/utils/pausedOperationStatus.utils.js +133 -0
  384. package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -0
  385. package/dist/git/utils/pullRequest.utils.d.ts +12 -0
  386. package/dist/git/utils/pullRequest.utils.d.ts.map +1 -0
  387. package/dist/git/utils/pullRequest.utils.js +124 -0
  388. package/dist/git/utils/pullRequest.utils.js.map +1 -0
  389. package/dist/git/utils/rebase.utils.d.ts +19 -0
  390. package/dist/git/utils/rebase.utils.d.ts.map +1 -0
  391. package/dist/git/utils/rebase.utils.js +93 -0
  392. package/dist/git/utils/rebase.utils.js.map +1 -0
  393. package/dist/git/utils/reference.utils.d.ts +56 -0
  394. package/dist/git/utils/reference.utils.d.ts.map +1 -0
  395. package/dist/git/utils/reference.utils.js +191 -0
  396. package/dist/git/utils/reference.utils.js.map +1 -0
  397. package/dist/git/utils/remote.utils.d.ts +17 -0
  398. package/dist/git/utils/remote.utils.d.ts.map +1 -0
  399. package/dist/git/utils/remote.utils.js +124 -0
  400. package/dist/git/utils/remote.utils.js.map +1 -0
  401. package/dist/git/utils/repository.utils.d.ts +5 -0
  402. package/dist/git/utils/repository.utils.d.ts.map +1 -0
  403. package/dist/git/utils/repository.utils.js +15 -0
  404. package/dist/git/utils/repository.utils.js.map +1 -0
  405. package/dist/git/utils/resourceDescriptor.utils.d.ts +4 -0
  406. package/dist/git/utils/resourceDescriptor.utils.d.ts.map +1 -0
  407. package/dist/git/utils/resourceDescriptor.utils.js +17 -0
  408. package/dist/git/utils/resourceDescriptor.utils.js.map +1 -0
  409. package/dist/git/utils/revision.utils.d.ts +36 -0
  410. package/dist/git/utils/revision.utils.d.ts.map +1 -0
  411. package/dist/git/utils/revision.utils.js +114 -0
  412. package/dist/git/utils/revision.utils.js.map +1 -0
  413. package/dist/git/utils/search.utils.d.ts +15 -0
  414. package/dist/git/utils/search.utils.d.ts.map +1 -0
  415. package/dist/git/utils/search.utils.js +422 -0
  416. package/dist/git/utils/search.utils.js.map +1 -0
  417. package/dist/git/utils/sorting.d.ts +34 -0
  418. package/dist/git/utils/sorting.d.ts.map +1 -0
  419. package/dist/git/utils/sorting.js +203 -0
  420. package/dist/git/utils/sorting.js.map +1 -0
  421. package/dist/git/utils/status.utils.d.ts +20 -0
  422. package/dist/git/utils/status.utils.d.ts.map +1 -0
  423. package/dist/git/utils/status.utils.js +82 -0
  424. package/dist/git/utils/status.utils.js.map +1 -0
  425. package/dist/git/utils/statusFile.utils.d.ts +8 -0
  426. package/dist/git/utils/statusFile.utils.d.ts.map +1 -0
  427. package/dist/git/utils/statusFile.utils.js +76 -0
  428. package/dist/git/utils/statusFile.utils.js.map +1 -0
  429. package/dist/git/utils/tag.utils.d.ts +7 -0
  430. package/dist/git/utils/tag.utils.d.ts.map +1 -0
  431. package/dist/git/utils/tag.utils.js +13 -0
  432. package/dist/git/utils/tag.utils.js.map +1 -0
  433. package/dist/git/utils/tooltip.utils.d.ts +14 -0
  434. package/dist/git/utils/tooltip.utils.d.ts.map +1 -0
  435. package/dist/git/utils/tooltip.utils.js +29 -0
  436. package/dist/git/utils/tooltip.utils.js.map +1 -0
  437. package/dist/git/utils/uriAuthority.d.ts +16 -0
  438. package/dist/git/utils/uriAuthority.d.ts.map +1 -0
  439. package/dist/git/utils/uriAuthority.js +20 -0
  440. package/dist/git/utils/uriAuthority.js.map +1 -0
  441. package/dist/git/utils/user.utils.d.ts +3 -0
  442. package/dist/git/utils/user.utils.d.ts.map +1 -0
  443. package/dist/git/utils/user.utils.js +12 -0
  444. package/dist/git/utils/user.utils.js.map +1 -0
  445. package/dist/git/utils/worktree.utils.d.ts +7 -0
  446. package/dist/git/utils/worktree.utils.d.ts.map +1 -0
  447. package/dist/git/utils/worktree.utils.js +15 -0
  448. package/dist/git/utils/worktree.utils.js.map +1 -0
  449. package/dist/git/watching/changeEvent.d.ts +47 -0
  450. package/dist/git/watching/changeEvent.d.ts.map +1 -0
  451. package/dist/git/watching/changeEvent.js +69 -0
  452. package/dist/git/watching/changeEvent.js.map +1 -0
  453. package/dist/git/watching/classifyChange.d.ts +16 -0
  454. package/dist/git/watching/classifyChange.d.ts.map +1 -0
  455. package/dist/git/watching/classifyChange.js +61 -0
  456. package/dist/git/watching/classifyChange.js.map +1 -0
  457. package/dist/git/watching/gitIgnoreFilter.d.ts +58 -0
  458. package/dist/git/watching/gitIgnoreFilter.d.ts.map +1 -0
  459. package/dist/git/watching/gitIgnoreFilter.js +109 -0
  460. package/dist/git/watching/gitIgnoreFilter.js.map +1 -0
  461. package/dist/git/watching/initWatcher.d.ts +33 -0
  462. package/dist/git/watching/initWatcher.d.ts.map +1 -0
  463. package/dist/git/watching/initWatcher.js +59 -0
  464. package/dist/git/watching/initWatcher.js.map +1 -0
  465. package/dist/git/watching/provider.d.ts +23 -0
  466. package/dist/git/watching/provider.d.ts.map +1 -0
  467. package/dist/git/watching/provider.js +2 -0
  468. package/dist/git/watching/provider.js.map +1 -0
  469. package/dist/git/watching/watchGroup.d.ts +54 -0
  470. package/dist/git/watching/watchGroup.d.ts.map +1 -0
  471. package/dist/git/watching/watchGroup.js +139 -0
  472. package/dist/git/watching/watchGroup.js.map +1 -0
  473. package/dist/git/watching/watchService.d.ts +79 -0
  474. package/dist/git/watching/watchService.d.ts.map +1 -0
  475. package/dist/git/watching/watchService.js +282 -0
  476. package/dist/git/watching/watchService.js.map +1 -0
  477. package/dist/git/watching/watchSession.d.ts +118 -0
  478. package/dist/git/watching/watchSession.d.ts.map +1 -0
  479. package/dist/git/watching/watchSession.js +274 -0
  480. package/dist/git/watching/watchSession.js.map +1 -0
  481. package/dist/git/watching/watcherPatterns.d.ts +21 -0
  482. package/dist/git/watching/watcherPatterns.d.ts.map +1 -0
  483. package/dist/git/watching/watcherPatterns.js +36 -0
  484. package/dist/git/watching/watcherPatterns.js.map +1 -0
  485. package/dist/git-cli/cliGitProvider.d.ts +133 -0
  486. package/dist/git-cli/cliGitProvider.d.ts.map +1 -0
  487. package/dist/git-cli/cliGitProvider.js +273 -0
  488. package/dist/git-cli/cliGitProvider.js.map +1 -0
  489. package/dist/git-cli/exec/exec.d.ts +4 -0
  490. package/dist/git-cli/exec/exec.d.ts.map +1 -0
  491. package/dist/git-cli/exec/exec.errors.d.ts +2 -0
  492. package/dist/git-cli/exec/exec.errors.d.ts.map +1 -0
  493. package/dist/git-cli/exec/exec.errors.js +2 -0
  494. package/dist/git-cli/exec/exec.errors.js.map +1 -0
  495. package/dist/git-cli/exec/exec.js +3 -0
  496. package/dist/git-cli/exec/exec.js.map +1 -0
  497. package/dist/git-cli/exec/exec.types.d.ts +2 -0
  498. package/dist/git-cli/exec/exec.types.d.ts.map +1 -0
  499. package/dist/git-cli/exec/exec.types.js +2 -0
  500. package/dist/git-cli/exec/exec.types.js.map +1 -0
  501. package/dist/git-cli/exec/features.d.ts +3 -0
  502. package/dist/git-cli/exec/features.d.ts.map +1 -0
  503. package/dist/git-cli/exec/features.js +2 -0
  504. package/dist/git-cli/exec/features.js.map +1 -0
  505. package/dist/git-cli/exec/git.d.ts +228 -0
  506. package/dist/git-cli/exec/git.d.ts.map +1 -0
  507. package/dist/git-cli/exec/git.js +823 -0
  508. package/dist/git-cli/exec/git.js.map +1 -0
  509. package/dist/git-cli/exec/gitQueue.d.ts +68 -0
  510. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -0
  511. package/dist/git-cli/exec/gitQueue.js +207 -0
  512. package/dist/git-cli/exec/gitQueue.js.map +1 -0
  513. package/dist/git-cli/exec/locator.d.ts +14 -0
  514. package/dist/git-cli/exec/locator.d.ts.map +1 -0
  515. package/dist/git-cli/exec/locator.js +133 -0
  516. package/dist/git-cli/exec/locator.js.map +1 -0
  517. package/dist/git-cli/parsers/blameParser.d.ts +30 -0
  518. package/dist/git-cli/parsers/blameParser.d.ts.map +1 -0
  519. package/dist/git-cli/parsers/blameParser.js +339 -0
  520. package/dist/git-cli/parsers/blameParser.js.map +1 -0
  521. package/dist/git-cli/parsers/indexParser.d.ts +4 -0
  522. package/dist/git-cli/parsers/indexParser.d.ts.map +1 -0
  523. package/dist/git-cli/parsers/indexParser.js +226 -0
  524. package/dist/git-cli/parsers/indexParser.js.map +1 -0
  525. package/dist/git-cli/parsers/logParser.d.ts +178 -0
  526. package/dist/git-cli/parsers/logParser.d.ts.map +1 -0
  527. package/dist/git-cli/parsers/logParser.js +1166 -0
  528. package/dist/git-cli/parsers/logParser.js.map +1 -0
  529. package/dist/git-cli/parsers/mergeTreeParser.d.ts +7 -0
  530. package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +1 -0
  531. package/dist/git-cli/parsers/mergeTreeParser.js +74 -0
  532. package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -0
  533. package/dist/git-cli/parsers/refParser.d.ts +34 -0
  534. package/dist/git-cli/parsers/refParser.d.ts.map +1 -0
  535. package/dist/git-cli/parsers/refParser.js +148 -0
  536. package/dist/git-cli/parsers/refParser.js.map +1 -0
  537. package/dist/git-cli/parsers/reflogParser.d.ts +12 -0
  538. package/dist/git-cli/parsers/reflogParser.d.ts.map +1 -0
  539. package/dist/git-cli/parsers/reflogParser.js +181 -0
  540. package/dist/git-cli/parsers/reflogParser.js.map +1 -0
  541. package/dist/git-cli/parsers/remoteParser.d.ts +4 -0
  542. package/dist/git-cli/parsers/remoteParser.d.ts.map +1 -0
  543. package/dist/git-cli/parsers/remoteParser.js +128 -0
  544. package/dist/git-cli/parsers/remoteParser.js.map +1 -0
  545. package/dist/git-cli/parsers/shortlogParser.d.ts +4 -0
  546. package/dist/git-cli/parsers/shortlogParser.d.ts.map +1 -0
  547. package/dist/git-cli/parsers/shortlogParser.js +51 -0
  548. package/dist/git-cli/parsers/shortlogParser.js.map +1 -0
  549. package/dist/git-cli/parsers/signatureParser.d.ts +21 -0
  550. package/dist/git-cli/parsers/signatureParser.d.ts.map +1 -0
  551. package/dist/git-cli/parsers/signatureParser.js +139 -0
  552. package/dist/git-cli/parsers/signatureParser.js.map +1 -0
  553. package/dist/git-cli/parsers/statusParser.d.ts +4 -0
  554. package/dist/git-cli/parsers/statusParser.d.ts.map +1 -0
  555. package/dist/git-cli/parsers/statusParser.js +216 -0
  556. package/dist/git-cli/parsers/statusParser.js.map +1 -0
  557. package/dist/git-cli/parsers/treeParser.d.ts +3 -0
  558. package/dist/git-cli/parsers/treeParser.d.ts.map +1 -0
  559. package/dist/git-cli/parsers/treeParser.js +110 -0
  560. package/dist/git-cli/parsers/treeParser.js.map +1 -0
  561. package/dist/git-cli/parsers/worktreeParser.d.ts +5 -0
  562. package/dist/git-cli/parsers/worktreeParser.d.ts.map +1 -0
  563. package/dist/git-cli/parsers/worktreeParser.js +136 -0
  564. package/dist/git-cli/parsers/worktreeParser.js.map +1 -0
  565. package/dist/git-cli/providers/blame.d.ts +26 -0
  566. package/dist/git-cli/providers/blame.d.ts.map +1 -0
  567. package/dist/git-cli/providers/blame.js +426 -0
  568. package/dist/git-cli/providers/blame.js.map +1 -0
  569. package/dist/git-cli/providers/branches.d.ts +87 -0
  570. package/dist/git-cli/providers/branches.d.ts.map +1 -0
  571. package/dist/git-cli/providers/branches.js +1153 -0
  572. package/dist/git-cli/providers/branches.js.map +1 -0
  573. package/dist/git-cli/providers/commitFilesetUtils.d.ts +4 -0
  574. package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +1 -0
  575. package/dist/git-cli/providers/commitFilesetUtils.js +20 -0
  576. package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -0
  577. package/dist/git-cli/providers/commits.d.ts +49 -0
  578. package/dist/git-cli/providers/commits.d.ts.map +1 -0
  579. package/dist/git-cli/providers/commits.js +1151 -0
  580. package/dist/git-cli/providers/commits.js.map +1 -0
  581. package/dist/git-cli/providers/config.d.ts +74 -0
  582. package/dist/git-cli/providers/config.d.ts.map +1 -0
  583. package/dist/git-cli/providers/config.js +588 -0
  584. package/dist/git-cli/providers/config.js.map +1 -0
  585. package/dist/git-cli/providers/contributors.d.ts +31 -0
  586. package/dist/git-cli/providers/contributors.d.ts.map +1 -0
  587. package/dist/git-cli/providers/contributors.js +350 -0
  588. package/dist/git-cli/providers/contributors.js.map +1 -0
  589. package/dist/git-cli/providers/diff.d.ts +99 -0
  590. package/dist/git-cli/providers/diff.d.ts.map +1 -0
  591. package/dist/git-cli/providers/diff.js +786 -0
  592. package/dist/git-cli/providers/diff.js.map +1 -0
  593. package/dist/git-cli/providers/graph.d.ts +31 -0
  594. package/dist/git-cli/providers/graph.d.ts.map +1 -0
  595. package/dist/git-cli/providers/graph.js +703 -0
  596. package/dist/git-cli/providers/graph.js.map +1 -0
  597. package/dist/git-cli/providers/operations.d.ts +75 -0
  598. package/dist/git-cli/providers/operations.d.ts.map +1 -0
  599. package/dist/git-cli/providers/operations.js +564 -0
  600. package/dist/git-cli/providers/operations.js.map +1 -0
  601. package/dist/git-cli/providers/patch.d.ts +38 -0
  602. package/dist/git-cli/providers/patch.d.ts.map +1 -0
  603. package/dist/git-cli/providers/patch.js +324 -0
  604. package/dist/git-cli/providers/patch.js.map +1 -0
  605. package/dist/git-cli/providers/pausedOperations.d.ts +22 -0
  606. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -0
  607. package/dist/git-cli/providers/pausedOperations.js +411 -0
  608. package/dist/git-cli/providers/pausedOperations.js.map +1 -0
  609. package/dist/git-cli/providers/refs.d.ts +32 -0
  610. package/dist/git-cli/providers/refs.d.ts.map +1 -0
  611. package/dist/git-cli/providers/refs.js +149 -0
  612. package/dist/git-cli/providers/refs.js.map +1 -0
  613. package/dist/git-cli/providers/remotes.d.ts +24 -0
  614. package/dist/git-cli/providers/remotes.d.ts.map +1 -0
  615. package/dist/git-cli/providers/remotes.js +94 -0
  616. package/dist/git-cli/providers/remotes.js.map +1 -0
  617. package/dist/git-cli/providers/revision.d.ts +27 -0
  618. package/dist/git-cli/providers/revision.d.ts.map +1 -0
  619. package/dist/git-cli/providers/revision.js +269 -0
  620. package/dist/git-cli/providers/revision.js.map +1 -0
  621. package/dist/git-cli/providers/staging.d.ts +24 -0
  622. package/dist/git-cli/providers/staging.d.ts.map +1 -0
  623. package/dist/git-cli/providers/staging.js +138 -0
  624. package/dist/git-cli/providers/staging.js.map +1 -0
  625. package/dist/git-cli/providers/stash.d.ts +55 -0
  626. package/dist/git-cli/providers/stash.d.ts.map +1 -0
  627. package/dist/git-cli/providers/stash.js +430 -0
  628. package/dist/git-cli/providers/stash.js.map +1 -0
  629. package/dist/git-cli/providers/status.d.ts +38 -0
  630. package/dist/git-cli/providers/status.d.ts.map +1 -0
  631. package/dist/git-cli/providers/status.js +352 -0
  632. package/dist/git-cli/providers/status.js.map +1 -0
  633. package/dist/git-cli/providers/tags.d.ts +29 -0
  634. package/dist/git-cli/providers/tags.d.ts.map +1 -0
  635. package/dist/git-cli/providers/tags.js +190 -0
  636. package/dist/git-cli/providers/tags.js.map +1 -0
  637. package/dist/git-cli/providers/worktrees.d.ts +33 -0
  638. package/dist/git-cli/providers/worktrees.d.ts.map +1 -0
  639. package/dist/git-cli/providers/worktrees.js +175 -0
  640. package/dist/git-cli/providers/worktrees.js.map +1 -0
  641. package/dist/git-cli/service.d.ts +52 -0
  642. package/dist/git-cli/service.d.ts.map +1 -0
  643. package/dist/git-cli/service.js +35 -0
  644. package/dist/git-cli/service.js.map +1 -0
  645. package/dist/plus/ai/constants.d.ts +21 -0
  646. package/dist/plus/ai/constants.d.ts.map +1 -0
  647. package/dist/plus/ai/constants.js +99 -0
  648. package/dist/plus/ai/constants.js.map +1 -0
  649. package/dist/plus/ai/errors.d.ts +25 -0
  650. package/dist/plus/ai/errors.d.ts.map +1 -0
  651. package/dist/plus/ai/errors.js +76 -0
  652. package/dist/plus/ai/errors.js.map +1 -0
  653. package/dist/plus/ai/models/conversation.d.ts +12 -0
  654. package/dist/plus/ai/models/conversation.d.ts.map +1 -0
  655. package/dist/plus/ai/models/conversation.js +27 -0
  656. package/dist/plus/ai/models/conversation.js.map +1 -0
  657. package/dist/plus/ai/models/model.d.ts +34 -0
  658. package/dist/plus/ai/models/model.d.ts.map +1 -0
  659. package/dist/plus/ai/models/model.js +379 -0
  660. package/dist/plus/ai/models/model.js.map +1 -0
  661. package/dist/plus/ai/models/promptTemplates.d.ts +74 -0
  662. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -0
  663. package/dist/plus/ai/models/promptTemplates.js +2 -0
  664. package/dist/plus/ai/models/promptTemplates.js.map +1 -0
  665. package/dist/plus/ai/models/provider.d.ts +46 -0
  666. package/dist/plus/ai/models/provider.d.ts.map +1 -0
  667. package/dist/plus/ai/models/provider.js +2 -0
  668. package/dist/plus/ai/models/provider.js.map +1 -0
  669. package/dist/plus/ai/models/results.d.ts +5 -0
  670. package/dist/plus/ai/models/results.d.ts.map +1 -0
  671. package/dist/plus/ai/models/results.js +2 -0
  672. package/dist/plus/ai/models/results.js.map +1 -0
  673. package/dist/plus/ai/prompts.d.ts +13 -0
  674. package/dist/plus/ai/prompts.d.ts.map +1 -0
  675. package/dist/plus/ai/prompts.js +517 -0
  676. package/dist/plus/ai/prompts.js.map +1 -0
  677. package/dist/plus/ai/providers/anthropicProvider.d.ts +21 -0
  678. package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -0
  679. package/dist/plus/ai/providers/anthropicProvider.js +257 -0
  680. package/dist/plus/ai/providers/anthropicProvider.js.map +1 -0
  681. package/dist/plus/ai/providers/azureProvider.d.ts +18 -0
  682. package/dist/plus/ai/providers/azureProvider.d.ts.map +1 -0
  683. package/dist/plus/ai/providers/azureProvider.js +54 -0
  684. package/dist/plus/ai/providers/azureProvider.js.map +1 -0
  685. package/dist/plus/ai/providers/context.d.ts +23 -0
  686. package/dist/plus/ai/providers/context.d.ts.map +1 -0
  687. package/dist/plus/ai/providers/context.js +2 -0
  688. package/dist/plus/ai/providers/context.js.map +1 -0
  689. package/dist/plus/ai/providers/deepSeekProvider.d.ts +15 -0
  690. package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -0
  691. package/dist/plus/ai/providers/deepSeekProvider.js +35 -0
  692. package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -0
  693. package/dist/plus/ai/providers/geminiProvider.d.ts +15 -0
  694. package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -0
  695. package/dist/plus/ai/providers/geminiProvider.js +195 -0
  696. package/dist/plus/ai/providers/geminiProvider.js.map +1 -0
  697. package/dist/plus/ai/providers/githubModelsProvider.d.ts +19 -0
  698. package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +1 -0
  699. package/dist/plus/ai/providers/githubModelsProvider.js +51 -0
  700. package/dist/plus/ai/providers/githubModelsProvider.js.map +1 -0
  701. package/dist/plus/ai/providers/gitkrakenProvider.d.ts +18 -0
  702. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -0
  703. package/dist/plus/ai/providers/gitkrakenProvider.js +151 -0
  704. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -0
  705. package/dist/plus/ai/providers/huggingFaceProvider.d.ts +15 -0
  706. package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -0
  707. package/dist/plus/ai/providers/huggingFaceProvider.js +39 -0
  708. package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -0
  709. package/dist/plus/ai/providers/mistralProvider.d.ts +20 -0
  710. package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -0
  711. package/dist/plus/ai/providers/mistralProvider.js +118 -0
  712. package/dist/plus/ai/providers/mistralProvider.js.map +1 -0
  713. package/dist/plus/ai/providers/ollamaProvider.d.ts +25 -0
  714. package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -0
  715. package/dist/plus/ai/providers/ollamaProvider.js +155 -0
  716. package/dist/plus/ai/providers/ollamaProvider.js.map +1 -0
  717. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts +17 -0
  718. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -0
  719. package/dist/plus/ai/providers/openAICompatibleProvider.js +47 -0
  720. package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -0
  721. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +39 -0
  722. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -0
  723. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +218 -0
  724. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -0
  725. package/dist/plus/ai/providers/openRouterProvider.d.ts +17 -0
  726. package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -0
  727. package/dist/plus/ai/providers/openRouterProvider.js +57 -0
  728. package/dist/plus/ai/providers/openRouterProvider.js.map +1 -0
  729. package/dist/plus/ai/providers/openaiProvider.d.ts +16 -0
  730. package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -0
  731. package/dist/plus/ai/providers/openaiProvider.js +34 -0
  732. package/dist/plus/ai/providers/openaiProvider.js.map +1 -0
  733. package/dist/plus/ai/providers/xaiProvider.d.ts +15 -0
  734. package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -0
  735. package/dist/plus/ai/providers/xaiProvider.js +27 -0
  736. package/dist/plus/ai/providers/xaiProvider.js.map +1 -0
  737. package/dist/plus/ai/utils/ai.utils.d.ts +18 -0
  738. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -0
  739. package/dist/plus/ai/utils/ai.utils.js +70 -0
  740. package/dist/plus/ai/utils/ai.utils.js.map +1 -0
  741. package/dist/plus/ai/utils/results.utils.d.ts +9 -0
  742. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -0
  743. package/dist/plus/ai/utils/results.utils.js +44 -0
  744. package/dist/plus/ai/utils/results.utils.js.map +1 -0
  745. package/dist/plus/ai/utils/truncation.utils.d.ts +13 -0
  746. package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -0
  747. package/dist/plus/ai/utils/truncation.utils.js +228 -0
  748. package/dist/plus/ai/utils/truncation.utils.js.map +1 -0
  749. package/dist/plus/git-github/api/config.d.ts +66 -0
  750. package/dist/plus/git-github/api/config.d.ts.map +1 -0
  751. package/dist/plus/git-github/api/config.js +2 -0
  752. package/dist/plus/git-github/api/config.js.map +1 -0
  753. package/dist/plus/git-github/api/github.d.ts +178 -0
  754. package/dist/plus/git-github/api/github.d.ts.map +1 -0
  755. package/dist/plus/git-github/api/github.js +2360 -0
  756. package/dist/plus/git-github/api/github.js.map +1 -0
  757. package/dist/plus/git-github/api/github.utils.d.ts +9 -0
  758. package/dist/plus/git-github/api/github.utils.d.ts.map +1 -0
  759. package/dist/plus/git-github/api/github.utils.js +22 -0
  760. package/dist/plus/git-github/api/github.utils.js.map +1 -0
  761. package/dist/plus/git-github/api/token.d.ts +16 -0
  762. package/dist/plus/git-github/api/token.d.ts.map +1 -0
  763. package/dist/plus/git-github/api/token.js +2 -0
  764. package/dist/plus/git-github/api/token.js.map +1 -0
  765. package/dist/plus/git-github/api/tokenUtils.d.ts +7 -0
  766. package/dist/plus/git-github/api/tokenUtils.d.ts.map +1 -0
  767. package/dist/plus/git-github/api/tokenUtils.js +13 -0
  768. package/dist/plus/git-github/api/tokenUtils.js.map +1 -0
  769. package/dist/plus/git-github/api/types.d.ts +100 -0
  770. package/dist/plus/git-github/api/types.d.ts.map +1 -0
  771. package/dist/plus/git-github/api/types.js +2 -0
  772. package/dist/plus/git-github/api/types.js.map +1 -0
  773. package/dist/plus/git-github/context.d.ts +102 -0
  774. package/dist/plus/git-github/context.d.ts.map +1 -0
  775. package/dist/plus/git-github/context.js +12 -0
  776. package/dist/plus/git-github/context.js.map +1 -0
  777. package/dist/plus/git-github/models.d.ts +204 -0
  778. package/dist/plus/git-github/models.d.ts.map +1 -0
  779. package/dist/plus/git-github/models.js +229 -0
  780. package/dist/plus/git-github/models.js.map +1 -0
  781. package/dist/plus/git-github/providers/github/blame.d.ts +34 -0
  782. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -0
  783. package/dist/plus/git-github/providers/github/blame.js +155 -0
  784. package/dist/plus/git-github/providers/github/blame.js.map +1 -0
  785. package/dist/plus/git-github/providers/github/branches.d.ts +38 -0
  786. package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -0
  787. package/dist/plus/git-github/providers/github/branches.js +234 -0
  788. package/dist/plus/git-github/providers/github/branches.js.map +1 -0
  789. package/dist/plus/git-github/providers/github/commits.d.ts +36 -0
  790. package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -0
  791. package/dist/plus/git-github/providers/github/commits.js +560 -0
  792. package/dist/plus/git-github/providers/github/commits.js.map +1 -0
  793. package/dist/plus/git-github/providers/github/config.d.ts +11 -0
  794. package/dist/plus/git-github/providers/github/config.d.ts.map +1 -0
  795. package/dist/plus/git-github/providers/github/config.js +47 -0
  796. package/dist/plus/git-github/providers/github/config.js.map +1 -0
  797. package/dist/plus/git-github/providers/github/contributors.d.ts +27 -0
  798. package/dist/plus/git-github/providers/github/contributors.d.ts.map +1 -0
  799. package/dist/plus/git-github/providers/github/contributors.js +218 -0
  800. package/dist/plus/git-github/providers/github/contributors.js.map +1 -0
  801. package/dist/plus/git-github/providers/github/diff.d.ts +33 -0
  802. package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -0
  803. package/dist/plus/git-github/providers/github/diff.js +184 -0
  804. package/dist/plus/git-github/providers/github/diff.js.map +1 -0
  805. package/dist/plus/git-github/providers/github/graph.d.ts +25 -0
  806. package/dist/plus/git-github/providers/github/graph.d.ts.map +1 -0
  807. package/dist/plus/git-github/providers/github/graph.js +372 -0
  808. package/dist/plus/git-github/providers/github/graph.js.map +1 -0
  809. package/dist/plus/git-github/providers/github/refs.d.ts +26 -0
  810. package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -0
  811. package/dist/plus/git-github/providers/github/refs.js +108 -0
  812. package/dist/plus/git-github/providers/github/refs.js.map +1 -0
  813. package/dist/plus/git-github/providers/github/remotes.d.ts +9 -0
  814. package/dist/plus/git-github/providers/github/remotes.d.ts.map +1 -0
  815. package/dist/plus/git-github/providers/github/remotes.js +37 -0
  816. package/dist/plus/git-github/providers/github/remotes.js.map +1 -0
  817. package/dist/plus/git-github/providers/github/revision.d.ts +14 -0
  818. package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -0
  819. package/dist/plus/git-github/providers/github/revision.js +132 -0
  820. package/dist/plus/git-github/providers/github/revision.js.map +1 -0
  821. package/dist/plus/git-github/providers/github/status.d.ts +21 -0
  822. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -0
  823. package/dist/plus/git-github/providers/github/status.js +49 -0
  824. package/dist/plus/git-github/providers/github/status.js.map +1 -0
  825. package/dist/plus/git-github/providers/github/tags.d.ts +22 -0
  826. package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -0
  827. package/dist/plus/git-github/providers/github/tags.js +104 -0
  828. package/dist/plus/git-github/providers/github/tags.js.map +1 -0
  829. package/dist/plus/git-github/providers/githubGitProvider.d.ts +85 -0
  830. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -0
  831. package/dist/plus/git-github/providers/githubGitProvider.js +130 -0
  832. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -0
  833. package/dist/plus/git-github/providers/githubProvider.d.ts +55 -0
  834. package/dist/plus/git-github/providers/githubProvider.d.ts.map +1 -0
  835. package/dist/plus/git-github/providers/githubProvider.js +2 -0
  836. package/dist/plus/git-github/providers/githubProvider.js.map +1 -0
  837. package/dist/utils/array.d.ts +27 -0
  838. package/dist/utils/array.d.ts.map +1 -0
  839. package/dist/utils/array.js +142 -0
  840. package/dist/utils/array.js.map +1 -0
  841. package/dist/utils/base64.d.ts +2 -0
  842. package/dist/utils/base64.d.ts.map +1 -0
  843. package/dist/utils/base64.js +2 -0
  844. package/dist/utils/base64.js.map +1 -0
  845. package/dist/utils/brand.d.ts +11 -0
  846. package/dist/utils/brand.d.ts.map +1 -0
  847. package/dist/utils/brand.js +2 -0
  848. package/dist/utils/brand.js.map +1 -0
  849. package/dist/utils/cancellation.d.ts +54 -0
  850. package/dist/utils/cancellation.d.ts.map +1 -0
  851. package/dist/utils/cancellation.js +133 -0
  852. package/dist/utils/cancellation.js.map +1 -0
  853. package/dist/utils/charCode.d.ts +39 -0
  854. package/dist/utils/charCode.d.ts.map +1 -0
  855. package/dist/utils/charCode.js +39 -0
  856. package/dist/utils/charCode.js.map +1 -0
  857. package/dist/utils/color.d.ts +177 -0
  858. package/dist/utils/color.d.ts.map +1 -0
  859. package/dist/utils/color.js +693 -0
  860. package/dist/utils/color.js.map +1 -0
  861. package/dist/utils/counter.d.ts +7 -0
  862. package/dist/utils/counter.d.ts.map +1 -0
  863. package/dist/utils/counter.js +19 -0
  864. package/dist/utils/counter.js.map +1 -0
  865. package/dist/utils/crypto.d.ts +2 -0
  866. package/dist/utils/crypto.d.ts.map +1 -0
  867. package/dist/utils/crypto.js +2 -0
  868. package/dist/utils/crypto.js.map +1 -0
  869. package/dist/utils/date.d.ts +20 -0
  870. package/dist/utils/date.d.ts.map +1 -0
  871. package/dist/utils/date.js +313 -0
  872. package/dist/utils/date.js.map +1 -0
  873. package/dist/utils/debounce.d.ts +108 -0
  874. package/dist/utils/debounce.d.ts.map +1 -0
  875. package/dist/utils/debounce.js +209 -0
  876. package/dist/utils/debounce.js.map +1 -0
  877. package/dist/utils/decorators/debounce.d.ts +3 -0
  878. package/dist/utils/decorators/debounce.d.ts.map +1 -0
  879. package/dist/utils/decorators/debounce.js +21 -0
  880. package/dist/utils/decorators/debounce.js.map +1 -0
  881. package/dist/utils/decorators/gate.d.ts +15 -0
  882. package/dist/utils/decorators/gate.d.ts.map +1 -0
  883. package/dist/utils/decorators/gate.js +129 -0
  884. package/dist/utils/decorators/gate.js.map +1 -0
  885. package/dist/utils/decorators/log.d.ts +46 -0
  886. package/dist/utils/decorators/log.d.ts.map +1 -0
  887. package/dist/utils/decorators/log.js +238 -0
  888. package/dist/utils/decorators/log.js.map +1 -0
  889. package/dist/utils/decorators/memoize.d.ts +17 -0
  890. package/dist/utils/decorators/memoize.d.ts.map +1 -0
  891. package/dist/utils/decorators/memoize.js +63 -0
  892. package/dist/utils/decorators/memoize.js.map +1 -0
  893. package/dist/utils/decorators/resolver.d.ts +12 -0
  894. package/dist/utils/decorators/resolver.d.ts.map +1 -0
  895. package/dist/utils/decorators/resolver.js +85 -0
  896. package/dist/utils/decorators/resolver.js.map +1 -0
  897. package/dist/utils/decorators/sequentialize.d.ts +29 -0
  898. package/dist/utils/decorators/sequentialize.d.ts.map +1 -0
  899. package/dist/utils/decorators/sequentialize.js +81 -0
  900. package/dist/utils/decorators/sequentialize.js.map +1 -0
  901. package/dist/utils/decorators/serializable.d.ts +13 -0
  902. package/dist/utils/decorators/serializable.d.ts.map +1 -0
  903. package/dist/utils/decorators/serializable.js +42 -0
  904. package/dist/utils/decorators/serializable.js.map +1 -0
  905. package/dist/utils/disposable.d.ts +40 -0
  906. package/dist/utils/disposable.d.ts.map +1 -0
  907. package/dist/utils/disposable.js +87 -0
  908. package/dist/utils/disposable.js.map +1 -0
  909. package/dist/utils/encoding.d.ts +3 -0
  910. package/dist/utils/encoding.d.ts.map +1 -0
  911. package/dist/utils/encoding.js +7 -0
  912. package/dist/utils/encoding.js.map +1 -0
  913. package/dist/utils/env/browser/base64.d.ts +9 -0
  914. package/dist/utils/env/browser/base64.d.ts.map +1 -0
  915. package/dist/utils/env/browser/base64.js +42 -0
  916. package/dist/utils/env/browser/base64.js.map +1 -0
  917. package/dist/utils/env/browser/crypto.d.ts +5 -0
  918. package/dist/utils/env/browser/crypto.d.ts.map +1 -0
  919. package/dist/utils/env/browser/crypto.js +18 -0
  920. package/dist/utils/env/browser/crypto.js.map +1 -0
  921. package/dist/utils/env/browser/fs.d.ts +2 -0
  922. package/dist/utils/env/browser/fs.d.ts.map +1 -0
  923. package/dist/utils/env/browser/fs.js +4 -0
  924. package/dist/utils/env/browser/fs.js.map +1 -0
  925. package/dist/utils/env/browser/hex.d.ts +4 -0
  926. package/dist/utils/env/browser/hex.d.ts.map +1 -0
  927. package/dist/utils/env/browser/hex.js +38 -0
  928. package/dist/utils/env/browser/hex.js.map +1 -0
  929. package/dist/utils/env/browser/hrtime.d.ts +2 -0
  930. package/dist/utils/env/browser/hrtime.d.ts.map +1 -0
  931. package/dist/utils/env/browser/hrtime.js +15 -0
  932. package/dist/utils/env/browser/hrtime.js.map +1 -0
  933. package/dist/utils/env/browser/logScope.d.ts +25 -0
  934. package/dist/utils/env/browser/logScope.d.ts.map +1 -0
  935. package/dist/utils/env/browser/logScope.js +53 -0
  936. package/dist/utils/env/browser/logScope.js.map +1 -0
  937. package/dist/utils/env/browser/md5.d.ts +2 -0
  938. package/dist/utils/env/browser/md5.d.ts.map +1 -0
  939. package/dist/utils/env/browser/md5.js +199 -0
  940. package/dist/utils/env/browser/md5.js.map +1 -0
  941. package/dist/utils/env/browser/platform.d.ts +4 -0
  942. package/dist/utils/env/browser/platform.d.ts.map +1 -0
  943. package/dist/utils/env/browser/platform.js +6 -0
  944. package/dist/utils/env/browser/platform.js.map +1 -0
  945. package/dist/utils/env/node/base64.d.ts +9 -0
  946. package/dist/utils/env/node/base64.d.ts.map +1 -0
  947. package/dist/utils/env/node/base64.js +14 -0
  948. package/dist/utils/env/node/base64.js.map +1 -0
  949. package/dist/utils/env/node/crypto.d.ts +5 -0
  950. package/dist/utils/env/node/crypto.d.ts.map +1 -0
  951. package/dist/utils/env/node/crypto.js +14 -0
  952. package/dist/utils/env/node/crypto.js.map +1 -0
  953. package/dist/utils/env/node/exec.d.ts +89 -0
  954. package/dist/utils/env/node/exec.d.ts.map +1 -0
  955. package/dist/utils/env/node/exec.js +277 -0
  956. package/dist/utils/env/node/exec.js.map +1 -0
  957. package/dist/utils/env/node/fs.d.ts +2 -0
  958. package/dist/utils/env/node/fs.d.ts.map +1 -0
  959. package/dist/utils/env/node/fs.js +5 -0
  960. package/dist/utils/env/node/fs.js.map +1 -0
  961. package/dist/utils/env/node/hex.d.ts +4 -0
  962. package/dist/utils/env/node/hex.d.ts.map +1 -0
  963. package/dist/utils/env/node/hex.js +10 -0
  964. package/dist/utils/env/node/hex.js.map +1 -0
  965. package/dist/utils/env/node/hrtime.d.ts +2 -0
  966. package/dist/utils/env/node/hrtime.d.ts.map +1 -0
  967. package/dist/utils/env/node/hrtime.js +2 -0
  968. package/dist/utils/env/node/hrtime.js.map +1 -0
  969. package/dist/utils/env/node/logScope.d.ts +34 -0
  970. package/dist/utils/env/node/logScope.d.ts.map +1 -0
  971. package/dist/utils/env/node/logScope.js +52 -0
  972. package/dist/utils/env/node/logScope.js.map +1 -0
  973. package/dist/utils/env/node/platform.d.ts +4 -0
  974. package/dist/utils/env/node/platform.d.ts.map +1 -0
  975. package/dist/utils/env/node/platform.js +5 -0
  976. package/dist/utils/env/node/platform.js.map +1 -0
  977. package/dist/utils/error.d.ts +18 -0
  978. package/dist/utils/error.d.ts.map +1 -0
  979. package/dist/utils/error.js +19 -0
  980. package/dist/utils/error.js.map +1 -0
  981. package/dist/utils/event.d.ts +59 -0
  982. package/dist/utils/event.d.ts.map +1 -0
  983. package/dist/utils/event.js +183 -0
  984. package/dist/utils/event.js.map +1 -0
  985. package/dist/utils/formatter.d.ts +21 -0
  986. package/dist/utils/formatter.d.ts.map +1 -0
  987. package/dist/utils/formatter.js +139 -0
  988. package/dist/utils/formatter.js.map +1 -0
  989. package/dist/utils/fs.d.ts +2 -0
  990. package/dist/utils/fs.d.ts.map +1 -0
  991. package/dist/utils/fs.js +2 -0
  992. package/dist/utils/fs.js.map +1 -0
  993. package/dist/utils/function.d.ts +24 -0
  994. package/dist/utils/function.d.ts.map +1 -0
  995. package/dist/utils/function.js +103 -0
  996. package/dist/utils/function.js.map +1 -0
  997. package/dist/utils/fuzzy.d.ts +68 -0
  998. package/dist/utils/fuzzy.d.ts.map +1 -0
  999. package/dist/utils/fuzzy.js +134 -0
  1000. package/dist/utils/fuzzy.js.map +1 -0
  1001. package/dist/utils/hash.d.ts +32 -0
  1002. package/dist/utils/hash.d.ts.map +1 -0
  1003. package/dist/utils/hash.js +53 -0
  1004. package/dist/utils/hash.js.map +1 -0
  1005. package/dist/utils/hex.d.ts +2 -0
  1006. package/dist/utils/hex.d.ts.map +1 -0
  1007. package/dist/utils/hex.js +2 -0
  1008. package/dist/utils/hex.js.map +1 -0
  1009. package/dist/utils/hrtime.d.ts +4 -0
  1010. package/dist/utils/hrtime.d.ts.map +1 -0
  1011. package/dist/utils/hrtime.js +7 -0
  1012. package/dist/utils/hrtime.js.map +1 -0
  1013. package/dist/utils/iterable.d.ts +65 -0
  1014. package/dist/utils/iterable.d.ts.map +1 -0
  1015. package/dist/utils/iterable.js +635 -0
  1016. package/dist/utils/iterable.js.map +1 -0
  1017. package/dist/utils/lazy.d.ts +18 -0
  1018. package/dist/utils/lazy.d.ts.map +1 -0
  1019. package/dist/utils/lazy.js +40 -0
  1020. package/dist/utils/lazy.js.map +1 -0
  1021. package/dist/utils/loggable.d.ts +5 -0
  1022. package/dist/utils/loggable.d.ts.map +1 -0
  1023. package/dist/utils/loggable.js +4 -0
  1024. package/dist/utils/loggable.js.map +1 -0
  1025. package/dist/utils/logger.d.ts +63 -0
  1026. package/dist/utils/logger.d.ts.map +1 -0
  1027. package/dist/utils/logger.js +316 -0
  1028. package/dist/utils/logger.js.map +1 -0
  1029. package/dist/utils/logger.scoped.d.ts +56 -0
  1030. package/dist/utils/logger.scoped.d.ts.map +1 -0
  1031. package/dist/utils/logger.scoped.js +166 -0
  1032. package/dist/utils/logger.scoped.js.map +1 -0
  1033. package/dist/utils/markdown.d.ts +9 -0
  1034. package/dist/utils/markdown.d.ts.map +1 -0
  1035. package/dist/utils/markdown.js +100 -0
  1036. package/dist/utils/markdown.js.map +1 -0
  1037. package/dist/utils/mru.d.ts +14 -0
  1038. package/dist/utils/mru.d.ts.map +1 -0
  1039. package/dist/utils/mru.js +63 -0
  1040. package/dist/utils/mru.js.map +1 -0
  1041. package/dist/utils/object.d.ts +62 -0
  1042. package/dist/utils/object.d.ts.map +1 -0
  1043. package/dist/utils/object.js +151 -0
  1044. package/dist/utils/object.js.map +1 -0
  1045. package/dist/utils/paging.d.ts +19 -0
  1046. package/dist/utils/paging.d.ts.map +1 -0
  1047. package/dist/utils/paging.js +32 -0
  1048. package/dist/utils/paging.js.map +1 -0
  1049. package/dist/utils/path.d.ts +17 -0
  1050. package/dist/utils/path.d.ts.map +1 -0
  1051. package/dist/utils/path.js +156 -0
  1052. package/dist/utils/path.js.map +1 -0
  1053. package/dist/utils/platform.d.ts +2 -0
  1054. package/dist/utils/platform.d.ts.map +1 -0
  1055. package/dist/utils/platform.js +2 -0
  1056. package/dist/utils/platform.js.map +1 -0
  1057. package/dist/utils/promise.d.ts +61 -0
  1058. package/dist/utils/promise.d.ts.map +1 -0
  1059. package/dist/utils/promise.js +337 -0
  1060. package/dist/utils/promise.js.map +1 -0
  1061. package/dist/utils/promiseCache.d.ts +337 -0
  1062. package/dist/utils/promiseCache.d.ts.map +1 -0
  1063. package/dist/utils/promiseCache.js +634 -0
  1064. package/dist/utils/promiseCache.js.map +1 -0
  1065. package/dist/utils/searchTree.d.ts +58 -0
  1066. package/dist/utils/searchTree.d.ts.map +1 -0
  1067. package/dist/utils/searchTree.js +394 -0
  1068. package/dist/utils/searchTree.js.map +1 -0
  1069. package/dist/utils/stopwatch.d.ts +41 -0
  1070. package/dist/utils/stopwatch.d.ts.map +1 -0
  1071. package/dist/utils/stopwatch.js +83 -0
  1072. package/dist/utils/stopwatch.js.map +1 -0
  1073. package/dist/utils/string.d.ts +91 -0
  1074. package/dist/utils/string.d.ts.map +1 -0
  1075. package/dist/utils/string.js +803 -0
  1076. package/dist/utils/string.js.map +1 -0
  1077. package/dist/utils/subscriptionManager.d.ts +18 -0
  1078. package/dist/utils/subscriptionManager.d.ts.map +1 -0
  1079. package/dist/utils/subscriptionManager.js +34 -0
  1080. package/dist/utils/subscriptionManager.js.map +1 -0
  1081. package/dist/utils/trie.d.ts +76 -0
  1082. package/dist/utils/trie.d.ts.map +1 -0
  1083. package/dist/utils/trie.js +584 -0
  1084. package/dist/utils/trie.js.map +1 -0
  1085. package/dist/utils/types.d.ts +21 -0
  1086. package/dist/utils/types.d.ts.map +1 -0
  1087. package/dist/utils/types.js +2 -0
  1088. package/dist/utils/types.js.map +1 -0
  1089. package/dist/utils/uri.d.ts +69 -0
  1090. package/dist/utils/uri.d.ts.map +1 -0
  1091. package/dist/utils/uri.js +66 -0
  1092. package/dist/utils/uri.js.map +1 -0
  1093. package/dist/utils/validation.d.ts +14 -0
  1094. package/dist/utils/validation.d.ts.map +1 -0
  1095. package/dist/utils/validation.js +26 -0
  1096. package/dist/utils/validation.js.map +1 -0
  1097. package/dist/utils/version.d.ts +15 -0
  1098. package/dist/utils/version.d.ts.map +1 -0
  1099. package/dist/utils/version.js +66 -0
  1100. package/dist/utils/version.js.map +1 -0
  1101. package/package.json +161 -0
  1102. package/src/git/cache.ts +1152 -0
  1103. package/src/git/context.ts +248 -0
  1104. package/src/git/errors.ts +1121 -0
  1105. package/src/git/exec.types.ts +78 -0
  1106. package/src/git/features.ts +45 -0
  1107. package/src/git/models/author.ts +19 -0
  1108. package/src/git/models/autolink.ts +59 -0
  1109. package/src/git/models/blame.ts +46 -0
  1110. package/src/git/models/branch.ts +236 -0
  1111. package/src/git/models/commit.ts +688 -0
  1112. package/src/git/models/contributor.ts +84 -0
  1113. package/src/git/models/defaultBranch.ts +6 -0
  1114. package/src/git/models/diff.ts +74 -0
  1115. package/src/git/models/file.ts +29 -0
  1116. package/src/git/models/fileChange.ts +82 -0
  1117. package/src/git/models/fileStatus.ts +35 -0
  1118. package/src/git/models/graph.ts +184 -0
  1119. package/src/git/models/graphSearch.ts +53 -0
  1120. package/src/git/models/issue.ts +88 -0
  1121. package/src/git/models/issueOrPullRequest.ts +20 -0
  1122. package/src/git/models/lineRange.ts +7 -0
  1123. package/src/git/models/log.ts +21 -0
  1124. package/src/git/models/mergeConflicts.ts +18 -0
  1125. package/src/git/models/patch.ts +25 -0
  1126. package/src/git/models/pausedOperationStatus.ts +63 -0
  1127. package/src/git/models/pullRequest.ts +161 -0
  1128. package/src/git/models/rebase.ts +60 -0
  1129. package/src/git/models/reference.ts +47 -0
  1130. package/src/git/models/reflog.ts +88 -0
  1131. package/src/git/models/remote.ts +99 -0
  1132. package/src/git/models/remoteProvider.ts +290 -0
  1133. package/src/git/models/remoteResource.ts +87 -0
  1134. package/src/git/models/repository.ts +417 -0
  1135. package/src/git/models/repositoryChangeEvent.ts +30 -0
  1136. package/src/git/models/repositoryIdentities.ts +99 -0
  1137. package/src/git/models/repositoryMetadata.ts +12 -0
  1138. package/src/git/models/resourceDescriptor.ts +11 -0
  1139. package/src/git/models/revision.ts +12 -0
  1140. package/src/git/models/search.ts +123 -0
  1141. package/src/git/models/shortlog.ts +6 -0
  1142. package/src/git/models/signature.ts +29 -0
  1143. package/src/git/models/staging.ts +27 -0
  1144. package/src/git/models/stash.ts +6 -0
  1145. package/src/git/models/status.ts +246 -0
  1146. package/src/git/models/statusFile.ts +116 -0
  1147. package/src/git/models/tag.ts +71 -0
  1148. package/src/git/models/tree.ts +10 -0
  1149. package/src/git/models/user.ts +7 -0
  1150. package/src/git/models/worktree.ts +152 -0
  1151. package/src/git/parsers/diffParser.ts +660 -0
  1152. package/src/git/parsers/rebaseTodoParser.ts +169 -0
  1153. package/src/git/providers/blame.ts +40 -0
  1154. package/src/git/providers/branches.ts +111 -0
  1155. package/src/git/providers/commits.ts +147 -0
  1156. package/src/git/providers/config.ts +104 -0
  1157. package/src/git/providers/contributors.ts +34 -0
  1158. package/src/git/providers/diff.ts +127 -0
  1159. package/src/git/providers/graph.ts +30 -0
  1160. package/src/git/providers/operations.ts +82 -0
  1161. package/src/git/providers/patch.ts +31 -0
  1162. package/src/git/providers/pausedOperations.ts +10 -0
  1163. package/src/git/providers/provider.ts +62 -0
  1164. package/src/git/providers/refs.ts +39 -0
  1165. package/src/git/providers/remotes.ts +33 -0
  1166. package/src/git/providers/revision.ts +28 -0
  1167. package/src/git/providers/shared/remotes.ts +95 -0
  1168. package/src/git/providers/staging.ts +22 -0
  1169. package/src/git/providers/stash.ts +51 -0
  1170. package/src/git/providers/status.ts +42 -0
  1171. package/src/git/providers/tags.ts +28 -0
  1172. package/src/git/providers/types.ts +33 -0
  1173. package/src/git/providers/worktrees.ts +23 -0
  1174. package/src/git/remotes/azure-devops.ts +309 -0
  1175. package/src/git/remotes/bitbucket-server.ts +191 -0
  1176. package/src/git/remotes/bitbucket.ts +144 -0
  1177. package/src/git/remotes/custom.ts +139 -0
  1178. package/src/git/remotes/gerrit.ts +188 -0
  1179. package/src/git/remotes/gitea.ts +186 -0
  1180. package/src/git/remotes/github.ts +238 -0
  1181. package/src/git/remotes/gitlab.ts +272 -0
  1182. package/src/git/remotes/google-source.ts +51 -0
  1183. package/src/git/remotes/matcher.ts +215 -0
  1184. package/src/git/repositoryService.ts +179 -0
  1185. package/src/git/service.ts +365 -0
  1186. package/src/git/utils/autolink.utils.ts +201 -0
  1187. package/src/git/utils/blame.utils.ts +296 -0
  1188. package/src/git/utils/branch.utils.ts +154 -0
  1189. package/src/git/utils/commit.utils.ts +89 -0
  1190. package/src/git/utils/contributor.utils.ts +81 -0
  1191. package/src/git/utils/fetch.utils.ts +48 -0
  1192. package/src/git/utils/fileStatus.utils.ts +49 -0
  1193. package/src/git/utils/issue.utils.ts +81 -0
  1194. package/src/git/utils/issueOrPullRequest.utils.ts +23 -0
  1195. package/src/git/utils/mergeConflicts.utils.ts +21 -0
  1196. package/src/git/utils/pausedOperationStatus.utils.ts +156 -0
  1197. package/src/git/utils/pullRequest.utils.ts +149 -0
  1198. package/src/git/utils/rebase.utils.ts +128 -0
  1199. package/src/git/utils/reference.utils.ts +267 -0
  1200. package/src/git/utils/remote.utils.ts +140 -0
  1201. package/src/git/utils/repository.utils.ts +18 -0
  1202. package/src/git/utils/resourceDescriptor.utils.ts +26 -0
  1203. package/src/git/utils/revision.utils.ts +149 -0
  1204. package/src/git/utils/search.utils.ts +498 -0
  1205. package/src/git/utils/sorting.ts +291 -0
  1206. package/src/git/utils/status.utils.ts +114 -0
  1207. package/src/git/utils/statusFile.utils.ts +182 -0
  1208. package/src/git/utils/tag.utils.ts +17 -0
  1209. package/src/git/utils/tooltip.utils.ts +37 -0
  1210. package/src/git/utils/uriAuthority.ts +34 -0
  1211. package/src/git/utils/user.utils.ts +20 -0
  1212. package/src/git/utils/worktree.utils.ts +21 -0
  1213. package/src/git/watching/changeEvent.ts +90 -0
  1214. package/src/git/watching/classifyChange.ts +81 -0
  1215. package/src/git/watching/gitIgnoreFilter.ts +134 -0
  1216. package/src/git/watching/initWatcher.ts +79 -0
  1217. package/src/git/watching/provider.ts +24 -0
  1218. package/src/git/watching/watchGroup.ts +182 -0
  1219. package/src/git/watching/watchService.ts +350 -0
  1220. package/src/git/watching/watchSession.ts +370 -0
  1221. package/src/git/watching/watcherPatterns.ts +51 -0
  1222. package/src/git-cli/cliGitProvider.ts +436 -0
  1223. package/src/git-cli/exec/exec.errors.ts +1 -0
  1224. package/src/git-cli/exec/exec.ts +11 -0
  1225. package/src/git-cli/exec/exec.types.ts +8 -0
  1226. package/src/git-cli/exec/features.ts +2 -0
  1227. package/src/git-cli/exec/git.ts +1092 -0
  1228. package/src/git-cli/exec/gitQueue.ts +251 -0
  1229. package/src/git-cli/exec/locator.ts +157 -0
  1230. package/src/git-cli/parsers/blameParser.ts +373 -0
  1231. package/src/git-cli/parsers/indexParser.ts +192 -0
  1232. package/src/git-cli/parsers/logParser.ts +1275 -0
  1233. package/src/git-cli/parsers/mergeTreeParser.ts +22 -0
  1234. package/src/git-cli/parsers/refParser.ts +111 -0
  1235. package/src/git-cli/parsers/reflogParser.ts +153 -0
  1236. package/src/git-cli/parsers/remoteParser.ts +95 -0
  1237. package/src/git-cli/parsers/shortlogParser.ts +59 -0
  1238. package/src/git-cli/parsers/signatureParser.ts +162 -0
  1239. package/src/git-cli/parsers/statusParser.ts +209 -0
  1240. package/src/git-cli/parsers/treeParser.ts +61 -0
  1241. package/src/git-cli/parsers/worktreeParser.ts +113 -0
  1242. package/src/git-cli/providers/blame.ts +602 -0
  1243. package/src/git-cli/providers/branches.ts +1491 -0
  1244. package/src/git-cli/providers/commitFilesetUtils.ts +45 -0
  1245. package/src/git-cli/providers/commits.ts +1517 -0
  1246. package/src/git-cli/providers/config.ts +724 -0
  1247. package/src/git-cli/providers/contributors.ts +361 -0
  1248. package/src/git-cli/providers/diff.ts +1084 -0
  1249. package/src/git-cli/providers/graph.ts +799 -0
  1250. package/src/git-cli/providers/operations.ts +776 -0
  1251. package/src/git-cli/providers/patch.ts +326 -0
  1252. package/src/git-cli/providers/pausedOperations.ts +538 -0
  1253. package/src/git-cli/providers/refs.ts +193 -0
  1254. package/src/git-cli/providers/remotes.ts +115 -0
  1255. package/src/git-cli/providers/revision.ts +334 -0
  1256. package/src/git-cli/providers/staging.ts +160 -0
  1257. package/src/git-cli/providers/stash.ts +626 -0
  1258. package/src/git-cli/providers/status.ts +373 -0
  1259. package/src/git-cli/providers/tags.ts +188 -0
  1260. package/src/git-cli/providers/worktrees.ts +229 -0
  1261. package/src/git-cli/service.ts +74 -0
  1262. package/src/plus/ai/constants.ts +121 -0
  1263. package/src/plus/ai/errors.ts +82 -0
  1264. package/src/plus/ai/models/conversation.ts +35 -0
  1265. package/src/plus/ai/models/model.ts +425 -0
  1266. package/src/plus/ai/models/promptTemplates.ts +122 -0
  1267. package/src/plus/ai/models/provider.ts +52 -0
  1268. package/src/plus/ai/models/results.ts +1 -0
  1269. package/src/plus/ai/prompts.ts +528 -0
  1270. package/src/plus/ai/providers/anthropicProvider.ts +308 -0
  1271. package/src/plus/ai/providers/azureProvider.ts +74 -0
  1272. package/src/plus/ai/providers/context.ts +29 -0
  1273. package/src/plus/ai/providers/deepSeekProvider.ts +40 -0
  1274. package/src/plus/ai/providers/geminiProvider.ts +207 -0
  1275. package/src/plus/ai/providers/githubModelsProvider.ts +92 -0
  1276. package/src/plus/ai/providers/gitkrakenProvider.ts +218 -0
  1277. package/src/plus/ai/providers/huggingFaceProvider.ts +51 -0
  1278. package/src/plus/ai/providers/mistralProvider.ts +160 -0
  1279. package/src/plus/ai/providers/ollamaProvider.ts +241 -0
  1280. package/src/plus/ai/providers/openAICompatibleProvider.ts +59 -0
  1281. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +279 -0
  1282. package/src/plus/ai/providers/openRouterProvider.ts +84 -0
  1283. package/src/plus/ai/providers/openaiProvider.ts +46 -0
  1284. package/src/plus/ai/providers/xaiProvider.ts +32 -0
  1285. package/src/plus/ai/utils/ai.utils.ts +79 -0
  1286. package/src/plus/ai/utils/results.utils.ts +50 -0
  1287. package/src/plus/ai/utils/truncation.utils.ts +295 -0
  1288. package/src/plus/git-github/api/config.ts +78 -0
  1289. package/src/plus/git-github/api/github.ts +3424 -0
  1290. package/src/plus/git-github/api/github.utils.ts +36 -0
  1291. package/src/plus/git-github/api/token.ts +15 -0
  1292. package/src/plus/git-github/api/tokenUtils.ts +15 -0
  1293. package/src/plus/git-github/api/types.ts +182 -0
  1294. package/src/plus/git-github/context.ts +107 -0
  1295. package/src/plus/git-github/models.ts +524 -0
  1296. package/src/plus/git-github/providers/github/blame.ts +222 -0
  1297. package/src/plus/git-github/providers/github/branches.ts +356 -0
  1298. package/src/plus/git-github/providers/github/commits.ts +858 -0
  1299. package/src/plus/git-github/providers/github/config.ts +47 -0
  1300. package/src/plus/git-github/providers/github/contributors.ts +313 -0
  1301. package/src/plus/git-github/providers/github/diff.ts +267 -0
  1302. package/src/plus/git-github/providers/github/graph.ts +511 -0
  1303. package/src/plus/git-github/providers/github/refs.ts +137 -0
  1304. package/src/plus/git-github/providers/github/remotes.ts +44 -0
  1305. package/src/plus/git-github/providers/github/revision.ts +141 -0
  1306. package/src/plus/git-github/providers/github/status.ts +63 -0
  1307. package/src/plus/git-github/providers/github/tags.ts +147 -0
  1308. package/src/plus/git-github/providers/githubGitProvider.ts +167 -0
  1309. package/src/plus/git-github/providers/githubProvider.ts +65 -0
  1310. package/src/utils/array.ts +194 -0
  1311. package/src/utils/base64.ts +1 -0
  1312. package/src/utils/brand.ts +9 -0
  1313. package/src/utils/cancellation.ts +150 -0
  1314. package/src/utils/charCode.ts +38 -0
  1315. package/src/utils/color.ts +815 -0
  1316. package/src/utils/counter.ts +21 -0
  1317. package/src/utils/crypto.ts +1 -0
  1318. package/src/utils/date.ts +394 -0
  1319. package/src/utils/debounce.ts +303 -0
  1320. package/src/utils/decorators/debounce.ts +31 -0
  1321. package/src/utils/decorators/gate.ts +167 -0
  1322. package/src/utils/decorators/log.ts +320 -0
  1323. package/src/utils/decorators/memoize.ts +98 -0
  1324. package/src/utils/decorators/resolver.ts +95 -0
  1325. package/src/utils/decorators/sequentialize.ts +116 -0
  1326. package/src/utils/decorators/serializable.ts +42 -0
  1327. package/src/utils/disposable.ts +141 -0
  1328. package/src/utils/encoding.ts +8 -0
  1329. package/src/utils/env/browser/base64.ts +50 -0
  1330. package/src/utils/env/browser/crypto.ts +21 -0
  1331. package/src/utils/env/browser/fs.ts +3 -0
  1332. package/src/utils/env/browser/hex.ts +41 -0
  1333. package/src/utils/env/browser/hrtime.ts +14 -0
  1334. package/src/utils/env/browser/logScope.ts +57 -0
  1335. package/src/utils/env/browser/md5.ts +217 -0
  1336. package/src/utils/env/browser/platform.ts +10 -0
  1337. package/src/utils/env/node/base64.ts +17 -0
  1338. package/src/utils/env/node/crypto.ts +17 -0
  1339. package/src/utils/env/node/exec.ts +471 -0
  1340. package/src/utils/env/node/fs.ts +5 -0
  1341. package/src/utils/env/node/hex.ts +11 -0
  1342. package/src/utils/env/node/hrtime.ts +1 -0
  1343. package/src/utils/env/node/logScope.ts +63 -0
  1344. package/src/utils/env/node/platform.ts +5 -0
  1345. package/src/utils/error.ts +17 -0
  1346. package/src/utils/event.ts +236 -0
  1347. package/src/utils/formatter.ts +205 -0
  1348. package/src/utils/fs.ts +1 -0
  1349. package/src/utils/function.ts +141 -0
  1350. package/src/utils/fuzzy.ts +185 -0
  1351. package/src/utils/hash.ts +60 -0
  1352. package/src/utils/hex.ts +1 -0
  1353. package/src/utils/hrtime.ts +8 -0
  1354. package/src/utils/iterable.ts +787 -0
  1355. package/src/utils/lazy.ts +39 -0
  1356. package/src/utils/loggable.ts +7 -0
  1357. package/src/utils/logger.scoped.ts +237 -0
  1358. package/src/utils/logger.ts +402 -0
  1359. package/src/utils/markdown.ts +114 -0
  1360. package/src/utils/mru.ts +66 -0
  1361. package/src/utils/object.ts +227 -0
  1362. package/src/utils/paging.ts +51 -0
  1363. package/src/utils/path.ts +189 -0
  1364. package/src/utils/platform.ts +1 -0
  1365. package/src/utils/promise.ts +590 -0
  1366. package/src/utils/promiseCache.ts +803 -0
  1367. package/src/utils/searchTree.ts +442 -0
  1368. package/src/utils/stopwatch.ts +125 -0
  1369. package/src/utils/string.ts +964 -0
  1370. package/src/utils/subscriptionManager.ts +40 -0
  1371. package/src/utils/trie.ts +739 -0
  1372. package/src/utils/types.ts +31 -0
  1373. package/src/utils/uri.ts +117 -0
  1374. package/src/utils/validation.ts +38 -0
  1375. package/src/utils/version.ts +79 -0
@@ -0,0 +1,1092 @@
1
+ import type { SpawnOptions } from 'child_process';
2
+ import { spawn } from 'child_process';
3
+ import * as process from 'process';
4
+ import type {
5
+ BranchErrorReason,
6
+ CheckoutErrorReason,
7
+ CherryPickErrorReason,
8
+ CommitErrorReason,
9
+ FetchErrorReason,
10
+ GitCommandError,
11
+ MergeErrorReason,
12
+ PausedOperationAbortErrorReason,
13
+ PausedOperationContinueErrorReason,
14
+ PullErrorReason,
15
+ PushErrorReason,
16
+ RebaseErrorReason,
17
+ ResetErrorReason,
18
+ RevertErrorReason,
19
+ ShowErrorReason,
20
+ StashApplyErrorReason,
21
+ StashPushErrorReason,
22
+ TagErrorReason,
23
+ WorktreeCreateErrorReason,
24
+ WorktreeDeleteErrorReason,
25
+ } from '../../git/errors.js';
26
+ import { WorkspaceUntrustedError } from '../../git/errors.js';
27
+ import { CancellationError, getAbortSignalId, isCancellationError } from '../../utils/cancellation.js';
28
+ import { getScopedCounter } from '../../utils/counter.js';
29
+ import { getDurationMilliseconds, hrtime } from '../../utils/hrtime.js';
30
+ import type { LogChannel } from '../../utils/logger.js';
31
+ import { Logger } from '../../utils/logger.js';
32
+ import { formatLoggableScopeBlock } from '../../utils/logger.scoped.js';
33
+ import { dirname, isAbsolute, joinPaths, normalizePath } from '../../utils/path.js';
34
+ import { defer } from '../../utils/promise.js';
35
+ import type { Mutable } from '../../utils/types.js';
36
+ import { compare, fromString } from '../../utils/version.js';
37
+ import { CancelledRunError, RunError } from './exec.errors.js';
38
+ import type { RunOptions, RunResult } from './exec.js';
39
+ import { fsExists, runSpawn } from './exec.js';
40
+ import type { GitCommandPriority, GitExecOptions, GitResult, GitSpawnOptions } from './exec.types.js';
41
+ import type { FilteredGitFeatures, GitFeatureOrPrefix, GitFeatures } from './features.js';
42
+ import { gitFeaturesByVersion } from './features.js';
43
+ import type { GitQueueConfig } from './gitQueue.js';
44
+ import { GitQueue, inferGitCommandPriority } from './gitQueue.js';
45
+ import type { GitLocation } from './locator.js';
46
+
47
+ const slowCallWarningThreshold = 2000;
48
+ export const maxGitCliLength = 30000;
49
+
50
+ export const gitConfigsBranch = ['-c', 'color.branch=false'] as const;
51
+ export const gitConfigsDiff = ['-c', 'color.diff=false', '-c', 'diff.mnemonicPrefix=false'] as const;
52
+ export const gitConfigsLog = ['-c', 'log.showSignature=false'] as const;
53
+ export const gitConfigsLogWithFiles = ['-c', 'log.showSignature=false', '-c', 'diff.renameLimit=0'] as const;
54
+ export const gitConfigsLogWithSignatures = ['-c', 'log.showSignature=true'] as const;
55
+ export const gitConfigsPull = ['-c', 'merge.autoStash=true', '-c', 'rebase.autoStash=true'] as const;
56
+ export const gitConfigsStatus = ['-c', 'color.status=false'] as const;
57
+
58
+ export const GitErrors = {
59
+ alreadyCheckedOut: /already checked out/i,
60
+ alreadyExists: /already exists/i,
61
+ ambiguousArgument: /fatal:\s*ambiguous argument ['"].+['"]: unknown revision or path not in the working tree/i,
62
+ badObject: /fatal:\s*bad object (.*?)/i,
63
+ badRevision: /bad revision '(.*?)'/i,
64
+ branchAlreadyExists: /fatal:\s*A branch named '.+?' already exists/i,
65
+ notFullyMerged: /error:\s*The branch '.+?' is not fully merged/i,
66
+ cantLockRef: /cannot lock ref|unable to update local ref/i,
67
+ changesWouldBeOverwritten:
68
+ /Your local changes to the following files would be overwritten|Your local changes would be overwritten|overwritten by checkout/i,
69
+ cherryPickAborted: /cherry-pick.*aborted/i,
70
+ cherryPickEmptyPrevious: /The previous cherry-pick is now empty/i,
71
+ cherryPickInProgress: /cherry-pick is already in progress|You have not concluded your cherry-pick/i,
72
+ commitChangesFirst: /Please, commit your changes before you can/i,
73
+ conflict: /^CONFLICT \([^)]+\): \b/m,
74
+ detachedHead: /You are in 'detached HEAD' state/i,
75
+ entryNotUpToDate: /error:\s*Entry ['"].+['"] not uptodate\. Cannot merge\./i,
76
+ failedToDeleteDirectoryNotEmpty: /failed to delete '(.*?)': Directory not empty/i,
77
+ invalidName: /fatal:\s*'.+?' is not a valid branch name/i,
78
+ invalidLineCount: /file .+? has only (\d+) lines/i,
79
+ invalidObjectName: /invalid object name: (.*)\s/i,
80
+ invalidObjectNameList: /could not open object name list: (.*)\s/i,
81
+ invalidTagName: /invalid tag name/i,
82
+ mainWorkingTree: /is a main working tree/i,
83
+ mergeAborted: /merge.*aborted/i,
84
+ mergeInProgress: /^fatal:\s*You have not concluded your merge/i,
85
+ noFastForward: /\(non-fast-forward\)/i,
86
+ noMergeBase: /no merge base/i,
87
+ noRemoteReference: /unable to delete '.+?': remote ref does not exist/i,
88
+ noRemoteRepositorySpecified: /No remote repository specified\./i,
89
+ noUpstream: /^fatal:\s*The current branch .* has no upstream branch/i,
90
+ notAValidObjectName: /Not a valid object name/i,
91
+ notAWorkingTree: /'(.*?)' is not a working tree/i,
92
+ noUserNameConfigured: /Please tell me who you are\./i,
93
+ nothingToCommit: /nothing(?: added)? to commit|no changes added to commit/i,
94
+ noPausedOperation:
95
+ /no merge (?:in progress|to abort)|no cherry-pick(?: or revert)? in progress|no rebase in progress/i,
96
+ permissionDenied: /Permission.*denied/i,
97
+ pushRejected: /^error:\s*failed to push some refs to\b/m,
98
+ pushRejectedRefDoesNotExists: /error:\s*unable to delete '(.*?)': remote ref does not exist/m,
99
+ rebaseAborted: /Nothing to do|rebase.*aborted/i,
100
+ rebaseInProgress: /It seems that there is already a rebase-(?:merge|apply) directory/i,
101
+ rebaseMissingTodo: /error:\s*could not read file .*\/git-rebase-todo': No such file or directory/,
102
+ rebaseMultipleBranches: /cannot rebase onto multiple branches/i,
103
+ revertAborted: /revert.*aborted/i,
104
+ revertInProgress: /^(error: )?(revert|cherry-pick) is already in progress/i,
105
+ refLocked: /fatal:\s*cannot lock ref ['"].+['"]: unable to create file/i,
106
+ remoteAhead: /rejected because the remote contains work/i,
107
+ remoteConnectionFailed: /Could not read from remote repository/i,
108
+ remoteRejected: /rejected because the remote contains work/i,
109
+ stashConflictingStagedAndUnstagedLines: /Cannot remove worktree changes/i,
110
+ stashNothingToSave: /No local changes to save/i,
111
+ stashSavedWorkingDirAndIndexState: /Saved working directory and index state/i,
112
+ tagAlreadyExists: /tag .* already exists/i,
113
+ tagConflict: /! \[rejected\].*\(would clobber existing tag\)/m,
114
+ tagNotFound: /tag .* not found/i,
115
+ uncommittedChanges: /contains modified or untracked files/i,
116
+ unmergedChanges: /error:\s*you need to resolve your current index first/i,
117
+ unmergedFiles: /is not possible because you have unmerged files|You have unmerged files/i,
118
+ unresolvedConflicts:
119
+ /You must edit all merge conflicts|Resolve all conflicts|^CONFLICT \(|^Automatic merge failed|could not apply .*/im,
120
+ unsafeRepository:
121
+ /(?:^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,
122
+ unstagedChanges: /You have unstaged changes/i,
123
+ } as const;
124
+
125
+ export const GitWarnings = {
126
+ notARepository: /Not a git repository/i,
127
+ outsideRepository: /is outside repository/i,
128
+ noPath: /no such path/i,
129
+ noCommits: /does not have any commits/i,
130
+ notFound: /Path '.*?' does not exist in/i,
131
+ foundButNotInRevision: /Path '.*?' exists on disk, but not in/i,
132
+ headNotABranch: /HEAD does not point to a branch/i,
133
+ noUpstream: /no upstream configured for branch '(.*?)'/i,
134
+ unknownRevision:
135
+ /ambiguous argument '.*?': unknown revision or path not in the working tree|not stored as a remote-tracking branch/i,
136
+ mustRunInWorkTree: /this operation must be run in a work tree/i,
137
+ patchWithConflicts: /Applied patch to '.*?' with conflicts/i,
138
+ noRemoteRepositorySpecified: /No remote repository specified\./i,
139
+ remoteConnectionError: /Could not read from remote repository/i,
140
+ notAGitCommand: /'.+' is not a git command/i,
141
+ tipBehind: /tip of your current branch is behind/i,
142
+ } as const;
143
+
144
+ export class GitError extends Error {
145
+ readonly cmd: string | undefined;
146
+ readonly exitCode: number | string | undefined;
147
+ readonly stdout: string | undefined;
148
+ readonly stderr: string | undefined;
149
+
150
+ constructor(readonly original: Error) {
151
+ let message: string;
152
+ let stdout: string | undefined;
153
+ let stderr: string | undefined;
154
+ let cmd: string | undefined;
155
+ let exitCode: number | string | undefined;
156
+
157
+ if (original instanceof RunError) {
158
+ stdout = original.stdout;
159
+ stderr = original.stderr;
160
+ message = stderr || stdout || original.message;
161
+ cmd = original.cmd;
162
+ exitCode = original.code;
163
+ } else {
164
+ message = original.message;
165
+ }
166
+
167
+ super(message);
168
+
169
+ this.stdout = stdout;
170
+ this.stderr = stderr;
171
+ this.cmd = cmd;
172
+ this.exitCode = exitCode;
173
+
174
+ Error.captureStackTrace?.(this, new.target);
175
+ }
176
+ }
177
+
178
+ export type PushForceOptions = { withLease: true; ifIncludes?: boolean } | { withLease: false; ifIncludes?: never };
179
+
180
+ type GitCommand =
181
+ | 'branch'
182
+ | 'checkout'
183
+ | 'cherry-pick'
184
+ | 'commit'
185
+ | 'fetch'
186
+ | 'merge'
187
+ | 'paused-operation-abort'
188
+ | 'paused-operation-continue'
189
+ | 'pull'
190
+ | 'push'
191
+ | 'rebase'
192
+ | 'reset'
193
+ | 'revert'
194
+ | 'show'
195
+ | 'stash-apply'
196
+ | 'stash-push'
197
+ | 'tag'
198
+ | 'worktree-create'
199
+ | 'worktree-delete';
200
+
201
+ type GitCommandToReasonMap = {
202
+ branch: BranchErrorReason;
203
+ checkout: CheckoutErrorReason;
204
+ 'cherry-pick': CherryPickErrorReason;
205
+ commit: CommitErrorReason;
206
+ fetch: FetchErrorReason;
207
+ merge: MergeErrorReason;
208
+ 'paused-operation-abort': PausedOperationAbortErrorReason;
209
+ 'paused-operation-continue': PausedOperationContinueErrorReason;
210
+ pull: PullErrorReason;
211
+ push: PushErrorReason;
212
+ rebase: RebaseErrorReason;
213
+ reset: ResetErrorReason;
214
+ revert: RevertErrorReason;
215
+ show: ShowErrorReason;
216
+ 'stash-apply': StashApplyErrorReason;
217
+ 'stash-push': StashPushErrorReason;
218
+ tag: TagErrorReason;
219
+ 'worktree-create': WorktreeCreateErrorReason;
220
+ 'worktree-delete': WorktreeDeleteErrorReason;
221
+ };
222
+
223
+ const errorToReasonMap = new Map<GitCommand, [RegExp, GitCommandToReasonMap[GitCommand]][]>([
224
+ [
225
+ 'branch',
226
+ [
227
+ [GitErrors.branchAlreadyExists, 'alreadyExists'],
228
+ [GitErrors.invalidName, 'invalidName'],
229
+ [GitErrors.notFullyMerged, 'notFullyMerged'],
230
+ [GitErrors.noRemoteReference, 'noRemoteReference'],
231
+ ],
232
+ ],
233
+ [
234
+ 'checkout',
235
+ [
236
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
237
+ [GitErrors.ambiguousArgument, 'pathspecNotFound'],
238
+ [GitErrors.notAValidObjectName, 'invalidRef'],
239
+ ],
240
+ ],
241
+ [
242
+ 'cherry-pick',
243
+ [
244
+ [GitErrors.cherryPickAborted, 'aborted'],
245
+ [GitErrors.cherryPickInProgress, 'alreadyInProgress'],
246
+ [GitErrors.conflict, 'conflicts'],
247
+ [GitErrors.cherryPickEmptyPrevious, 'emptyCommit'],
248
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
249
+ ],
250
+ ],
251
+ [
252
+ 'commit',
253
+ [
254
+ [GitErrors.nothingToCommit, 'nothingToCommit'],
255
+ [GitErrors.unmergedFiles, 'conflicts'],
256
+ [GitErrors.unresolvedConflicts, 'conflicts'],
257
+ [GitErrors.noUserNameConfigured, 'noUserNameConfigured'],
258
+ ],
259
+ ],
260
+ [
261
+ 'fetch',
262
+ [
263
+ [GitErrors.noFastForward, 'noFastForward'],
264
+ [GitErrors.noRemoteRepositorySpecified, 'noRemote'],
265
+ [GitErrors.remoteConnectionFailed, 'remoteConnectionFailed'],
266
+ ],
267
+ ],
268
+ [
269
+ 'merge',
270
+ [
271
+ [GitErrors.mergeAborted, 'aborted'],
272
+ [GitErrors.mergeInProgress, 'alreadyInProgress'],
273
+ [GitErrors.unresolvedConflicts, 'conflicts'],
274
+ [GitErrors.uncommittedChanges, 'uncommittedChanges'],
275
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
276
+ ],
277
+ ],
278
+ ['paused-operation-abort', [[GitErrors.noPausedOperation, 'nothingToAbort']]],
279
+ [
280
+ 'paused-operation-continue',
281
+ [
282
+ [GitErrors.cherryPickEmptyPrevious, 'emptyCommit'],
283
+ [GitErrors.noPausedOperation, 'nothingToContinue'],
284
+ [GitErrors.uncommittedChanges, 'uncommittedChanges'],
285
+ [GitErrors.unmergedFiles, 'unmergedFiles'],
286
+ [GitErrors.unresolvedConflicts, 'conflicts'],
287
+ [GitErrors.unstagedChanges, 'unstagedChanges'],
288
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
289
+ ],
290
+ ],
291
+ [
292
+ 'pull',
293
+ [
294
+ [GitErrors.conflict, 'conflict'],
295
+ [GitErrors.noUserNameConfigured, 'gitIdentity'],
296
+ [GitErrors.remoteConnectionFailed, 'remoteConnectionFailed'],
297
+ [GitErrors.unstagedChanges, 'unstagedChanges'],
298
+ [GitErrors.unmergedFiles, 'unmergedFiles'],
299
+ [GitErrors.commitChangesFirst, 'uncommittedChanges'],
300
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
301
+ [GitErrors.cantLockRef, 'refLocked'],
302
+ [GitErrors.rebaseMultipleBranches, 'rebaseMultipleBranches'],
303
+ [GitErrors.tagConflict, 'tagConflict'],
304
+ ],
305
+ ],
306
+ [
307
+ 'push',
308
+ [
309
+ [GitErrors.remoteAhead, 'remoteAhead'],
310
+ [GitWarnings.tipBehind, 'tipBehind'],
311
+ [GitErrors.pushRejected, 'rejected'],
312
+ [GitErrors.pushRejectedRefDoesNotExists, 'rejectedRefDoesNotExist'],
313
+ [GitErrors.permissionDenied, 'permissionDenied'],
314
+ [GitErrors.remoteConnectionFailed, 'remoteConnectionFailed'],
315
+ [GitErrors.noUpstream, 'noUpstream'],
316
+ ],
317
+ ],
318
+ [
319
+ 'rebase',
320
+ [
321
+ [GitErrors.rebaseAborted, 'aborted'],
322
+ [GitErrors.rebaseMissingTodo, 'aborted'],
323
+ [GitErrors.rebaseInProgress, 'alreadyInProgress'],
324
+ [GitErrors.unresolvedConflicts, 'conflicts'],
325
+ [GitErrors.uncommittedChanges, 'uncommittedChanges'],
326
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
327
+ ],
328
+ ],
329
+ [
330
+ 'reset',
331
+ [
332
+ [GitErrors.ambiguousArgument, 'ambiguousArgument'],
333
+ [GitErrors.detachedHead, 'detachedHead'],
334
+ [GitErrors.refLocked, 'refLocked'],
335
+ [GitErrors.entryNotUpToDate, 'notUpToDate'],
336
+ [GitErrors.permissionDenied, 'permissionDenied'],
337
+ [GitErrors.unmergedChanges, 'unmergedChanges'],
338
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
339
+ ],
340
+ ],
341
+ [
342
+ 'revert',
343
+ [
344
+ [GitErrors.revertAborted, 'aborted'],
345
+ [GitErrors.revertInProgress, 'alreadyInProgress'],
346
+ [GitErrors.unresolvedConflicts, 'conflicts'],
347
+ [GitErrors.uncommittedChanges, 'uncommittedChanges'],
348
+ [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
349
+ ],
350
+ ],
351
+ [
352
+ 'show',
353
+ [
354
+ [GitErrors.badObject, 'invalidObject'],
355
+ [GitErrors.badRevision, 'invalidRevision'],
356
+ [GitErrors.notAValidObjectName, 'invalidRevision'],
357
+ [GitWarnings.notFound, 'notFound'],
358
+ [GitWarnings.foundButNotInRevision, 'notInRevision'],
359
+ ],
360
+ ],
361
+ ['stash-apply', [[GitErrors.changesWouldBeOverwritten, 'uncommittedChanges']]],
362
+ [
363
+ 'stash-push',
364
+ [
365
+ [GitErrors.stashConflictingStagedAndUnstagedLines, 'conflictingStagedAndUnstagedLines'],
366
+ [GitErrors.stashNothingToSave, 'nothingToSave'],
367
+ [GitErrors.stashSavedWorkingDirAndIndexState, 'conflictingStagedAndUnstagedLines'],
368
+ ],
369
+ ],
370
+ [
371
+ 'tag',
372
+ [
373
+ [GitErrors.tagAlreadyExists, 'alreadyExists'],
374
+ [GitErrors.invalidTagName, 'invalidName'],
375
+ [GitErrors.tagNotFound, 'notFound'],
376
+ [GitErrors.permissionDenied, 'permissionDenied'],
377
+ [GitErrors.remoteRejected, 'remoteRejected'],
378
+ ],
379
+ ],
380
+ [
381
+ 'worktree-create',
382
+ [
383
+ [GitErrors.alreadyCheckedOut, 'alreadyCheckedOut'],
384
+ [GitErrors.alreadyExists, 'alreadyExists'],
385
+ ],
386
+ ],
387
+ [
388
+ 'worktree-delete',
389
+ [
390
+ [GitErrors.mainWorkingTree, 'defaultWorkingTree'],
391
+ [GitErrors.uncommittedChanges, 'uncommittedChanges'],
392
+ [GitErrors.failedToDeleteDirectoryNotEmpty, 'directoryNotEmpty'],
393
+ ],
394
+ ],
395
+ ]);
396
+
397
+ export function getGitCommandError<T extends GitCommand, TReturn extends GitCommandError<any>>(
398
+ command: T,
399
+ ex: GitError,
400
+ creator: (reason: GitCommandToReasonMap[T] | undefined) => TReturn,
401
+ ): TReturn {
402
+ const msg: string = ex?.toString() ?? '';
403
+
404
+ const errorsToReasons = errorToReasonMap.get(command) as [RegExp, GitCommandToReasonMap[T]][] | undefined;
405
+ if (errorsToReasons != null) {
406
+ for (const [error, reason] of errorsToReasons) {
407
+ if (error.test(msg) || (ex.stderr && error.test(ex.stderr)) || (ex.stdout && error.test(ex.stdout))) {
408
+ return creator(reason);
409
+ }
410
+ }
411
+ }
412
+
413
+ return creator(undefined);
414
+ }
415
+
416
+ export interface GitOptions {
417
+ /** Custom environment variables to add to every git command */
418
+ env?: Record<string, string | undefined>;
419
+ /** Dynamic environment provider called for each command (e.g., host-discovered SCM credentials) */
420
+ getEnvironment?: () => Record<string, string | undefined> | undefined;
421
+ /** Git command timeout in milliseconds. Defaults to 60000. Set to 0 to disable. */
422
+ gitTimeout?: number;
423
+ /** Returns whether the workspace is currently trusted. Defaults to true when not provided. Called on every exec/stream. */
424
+ isTrusted?: () => boolean;
425
+ /** Queue configuration (max concurrent processes, etc.) */
426
+ queue?: GitQueueConfig;
427
+ /** Decodes non-UTF-8 git output. Required when repositories use non-UTF-8 encodings. */
428
+ decode?: (data: Uint8Array, options?: { readonly encoding: string }) => string | Promise<string>;
429
+ /** Hooks for observing git execution events */
430
+ hooks?: GitHooks;
431
+ /** Optional dedicated logger for git command logging */
432
+ logger?: LogChannel;
433
+ }
434
+
435
+ export interface GitHooks {
436
+ /** Called when a git command is aborted (timeout or cancellation) */
437
+ onAborted?(info: {
438
+ operation: string;
439
+ reason: 'timeout' | 'cancellation' | 'unknown';
440
+ duration: number;
441
+ timeout: number;
442
+ }): void;
443
+ /** Called when a queued command waited longer than 1s before executing */
444
+ onSlowQueue?(info: {
445
+ priority: GitCommandPriority;
446
+ waitTime: number;
447
+ active: number;
448
+ queued: Record<GitCommandPriority, number>;
449
+ maxConcurrent: number;
450
+ }): void;
451
+ }
452
+
453
+ const emptyArray: readonly never[] = Object.freeze([]);
454
+ const emptyObj = Object.freeze({});
455
+ const trailingNewlineRegex = /[\r|\n]+$/;
456
+ const uniqueCounterForStdin = getScopedCounter();
457
+ const uniqueCounterForStream = getScopedCounter();
458
+
459
+ type ExitCodeOnlyGitCommandOptions = GitExecOptions & { exitCodeOnly: true };
460
+
461
+ export class Git {
462
+ /** Map of running git commands — avoids running duplicate overlapping commands */
463
+ private readonly pendingCommands = new Map<string, Promise<RunResult<string | Buffer>>>();
464
+ /** Queue for throttling background git operations */
465
+ private readonly _queue: GitQueue;
466
+
467
+ /** Cached base environment: process.env + static options.env + GCM/LC_ALL vars */
468
+ private _baseEnv: Record<string, string | undefined> | undefined;
469
+ /** Cached full environment: base + dynamic getEnvironment() result */
470
+ private _fullEnv: Record<string, string | undefined> | undefined;
471
+ /** Last dynamic env reference, used to detect when getEnvironment() returns a new object */
472
+ private _lastDynamicEnv: Record<string, string | undefined> | undefined | null;
473
+
474
+ constructor(
475
+ private readonly _locator: () => Promise<GitLocation>,
476
+ readonly options: GitOptions = {},
477
+ ) {
478
+ this._queue = new GitQueue(options.queue, { onSlowQueue: options.hooks?.onSlowQueue });
479
+ }
480
+
481
+ /**
482
+ * Returns the base environment for git commands. Cached to avoid spreading
483
+ * process.env (30-100+ keys) on every call. Includes static options.env and
484
+ * GCM/LC_ALL vars but NOT dynamic getEnvironment() or per-call env overrides.
485
+ */
486
+ private getBaseEnv(): Record<string, string | undefined> {
487
+ return (this._baseEnv ??= {
488
+ ...process.env,
489
+ ...(this.options.env ?? emptyObj),
490
+ GCM_INTERACTIVE: 'NEVER',
491
+ GCM_PRESERVE_CREDS: 'TRUE',
492
+ LC_ALL: 'C',
493
+ });
494
+ }
495
+
496
+ /**
497
+ * Returns the full environment (base + dynamic). Cached and invalidated
498
+ * when getEnvironment() returns a different object reference.
499
+ */
500
+ private getFullEnv(): Record<string, string | undefined> {
501
+ const dynamicEnv = this.options.getEnvironment?.() ?? undefined;
502
+ if (this._fullEnv != null && dynamicEnv === this._lastDynamicEnv) return this._fullEnv;
503
+
504
+ this._lastDynamicEnv = dynamicEnv;
505
+ this._fullEnv = dynamicEnv != null ? { ...this.getBaseEnv(), ...dynamicEnv } : this.getBaseEnv();
506
+ return this._fullEnv;
507
+ }
508
+
509
+ /**
510
+ * Builds the environment for a git command. Returns the cached full env
511
+ * directly when there are no per-call overrides (the common case).
512
+ * Only allocates a new object when per-call env overrides are provided.
513
+ */
514
+ private buildEnv(perCallEnv: Record<string, string | undefined> | undefined): Record<string, string | undefined> {
515
+ if (perCallEnv == null) return this.getFullEnv();
516
+
517
+ return { ...this.getFullEnv(), ...perCallEnv };
518
+ }
519
+
520
+ dispose(): void {
521
+ this._queue.dispose();
522
+ }
523
+
524
+ /** Clear pending commands (e.g. on cache reset) */
525
+ clearPendingCommands(): void {
526
+ this.pendingCommands.clear();
527
+ }
528
+
529
+ private _gitLocation: GitLocation | undefined;
530
+ private _gitLocationPromise: Promise<GitLocation> | undefined;
531
+
532
+ private async getLocation(): Promise<GitLocation> {
533
+ if (this._gitLocation == null) {
534
+ this._gitLocationPromise ??= this._locator();
535
+ this._gitLocation = await this._gitLocationPromise;
536
+ }
537
+ return this._gitLocation;
538
+ }
539
+
540
+ async path(): Promise<string> {
541
+ return (await this.getLocation()).path;
542
+ }
543
+
544
+ async version(): Promise<string> {
545
+ return (await this.getLocation()).version;
546
+ }
547
+
548
+ supports(feature: GitFeatures): boolean | Promise<boolean> {
549
+ const version = gitFeaturesByVersion.get(feature);
550
+ if (version == null) return true;
551
+
552
+ return this._gitLocation != null
553
+ ? compare(fromString(this._gitLocation.version), fromString(version)) !== -1
554
+ : this.version().then(v => compare(fromString(v), fromString(version)) !== -1);
555
+ }
556
+
557
+ supported<T extends GitFeatureOrPrefix>(feature: T): FilteredGitFeatures<T>[] | Promise<FilteredGitFeatures<T>[]> {
558
+ function supportedCore(gitVersion: string): FilteredGitFeatures<T>[] {
559
+ return [...gitFeaturesByVersion]
560
+ .filter(([f, v]) => f.startsWith(feature) && compare(fromString(gitVersion), v) !== -1)
561
+ .map(([f]) => f as FilteredGitFeatures<T>);
562
+ }
563
+
564
+ if (this._gitLocation == null) {
565
+ return this.version().then(v => supportedCore(v));
566
+ }
567
+ return supportedCore(this._gitLocation.version);
568
+ }
569
+
570
+ async ensureSupports(feature: GitFeatures, prefix: string, suffix: string): Promise<void> {
571
+ const version = gitFeaturesByVersion.get(feature);
572
+ if (version == null) return;
573
+
574
+ const gitVersion = await this.version();
575
+ if (compare(fromString(gitVersion), fromString(version)) !== -1) return;
576
+
577
+ throw new Error(
578
+ `${prefix} requires a newer version of Git (>= ${version}) than is currently installed (${gitVersion}).${suffix}`,
579
+ );
580
+ }
581
+
582
+ async exec(
583
+ options: ExitCodeOnlyGitCommandOptions,
584
+ ...args: readonly (string | undefined)[]
585
+ ): Promise<GitResult<unknown>>;
586
+ async exec<T extends string | Buffer = string>(
587
+ options: GitExecOptions,
588
+ ...args: readonly (string | undefined)[]
589
+ ): Promise<GitResult<T>>;
590
+ async exec<T extends string | Buffer = string>(
591
+ options: GitExecOptions,
592
+ ...args: readonly (string | undefined)[]
593
+ ): Promise<GitResult<T | unknown>> {
594
+ if (this.options.isTrusted?.() === false) throw new WorkspaceUntrustedError();
595
+
596
+ const runArgs = args.filter(a => a != null);
597
+ const gitCommand = `git ${runArgs.join(' ')}`;
598
+
599
+ // If cache is provided, use it to cache the full result
600
+ if (options.caching != null) {
601
+ return options.caching.cache.getOrCreate(
602
+ options.caching.commonPath ?? options.cwd!,
603
+ gitCommand,
604
+ async cacheable => {
605
+ const result = await this.execCore<T>({ ...options, caching: undefined }, runArgs, gitCommand);
606
+ if (result.exitCode !== 0) {
607
+ cacheable.invalidate();
608
+ }
609
+ return result;
610
+ },
611
+ options.caching.options,
612
+ );
613
+ }
614
+
615
+ return this.execCore<T>(options, runArgs, gitCommand);
616
+ }
617
+
618
+ private async execCore<T extends string | Buffer>(
619
+ options: GitExecOptions,
620
+ args: string[],
621
+ gitCommand: string,
622
+ ): Promise<GitResult<T | unknown>> {
623
+ const start = hrtime();
624
+
625
+ gitCommand = `[${options.cwd}] ${gitCommand}`;
626
+ const {
627
+ cancellation,
628
+ configs,
629
+ correlationKey,
630
+ errors: errorHandling,
631
+ encoding,
632
+ runLocally: _,
633
+ ...opts
634
+ } = options;
635
+
636
+ const defaultTimeout = this.options.gitTimeout ?? 60000;
637
+ const runOpts: Mutable<RunOptions> = {
638
+ ...opts,
639
+ timeout: opts.timeout === 0 || defaultTimeout === 0 ? undefined : (opts.timeout ?? defaultTimeout),
640
+ encoding: (encoding ?? 'utf8') === 'utf8' ? 'utf8' : 'buffer',
641
+ decode: this.options.decode,
642
+ env: this.buildEnv(options.env),
643
+ quiet: errorHandling === 'ignore',
644
+ };
645
+
646
+ const cacheKey = `${correlationKey !== undefined ? `${correlationKey}:` : ''}${
647
+ options?.stdin != null ? `${uniqueCounterForStdin.next()}:` : ''
648
+ }${cancellation != null ? `${getAbortSignalId(cancellation)}:` : ''}${gitCommand}`;
649
+
650
+ let waiting;
651
+ let promise = this.pendingCommands.get(cacheKey);
652
+ if (promise == null) {
653
+ waiting = false;
654
+
655
+ // Create a deferred promise and store it immediately to prevent duplicate commands
656
+ // Note: cancellation tokens are not part of the dedup key — calls with different AbortSignals will not be deduplicated
657
+ const deferred = defer<RunResult<string | Buffer>>();
658
+ promise = deferred.promise;
659
+ this.pendingCommands.set(cacheKey, promise);
660
+
661
+ // Fixes https://github.com/gitkraken/vscode-gitlens/issues/73 & https://github.com/gitkraken/vscode-gitlens/issues/161
662
+ // See https://stackoverflow.com/questions/4144417/how-to-handle-asian-characters-in-file-names-in-git-on-os-x
663
+ args.unshift('-c', 'core.quotepath=false', '-c', 'color.ui=false', ...(configs ?? emptyArray));
664
+
665
+ if (process.platform === 'win32') {
666
+ args.unshift('-c', 'core.longpaths=true');
667
+ }
668
+
669
+ if (cancellation != null) {
670
+ runOpts.cancellation = cancellation;
671
+ }
672
+
673
+ // Determine command priority:
674
+ // Priority resolution:
675
+ // 1. Explicit priority from options (highest precedence)
676
+ // 2. Inferred from command type (only downgrades expensive commands to Background)
677
+ const priority = options.priority ?? inferGitCommandPriority(args);
678
+
679
+ // Execute through the queue (interactive/normal run immediately, background is throttled)
680
+ const gitPath = await this.path();
681
+ void this._queue
682
+ .execute(priority, () => runSpawn<T>(gitPath, args, encoding ?? 'utf8', runOpts))
683
+ .then(deferred.fulfill, (e: unknown) => deferred.cancel(e instanceof Error ? e : new Error(String(e))))
684
+ .finally(() => {
685
+ this.pendingCommands.delete(cacheKey);
686
+ })
687
+ .catch(() => {});
688
+ } else {
689
+ waiting = true;
690
+ Logger.trace(`${formatLoggableScopeBlock('GIT')} ${gitCommand} \u00b7 awaiting existing call...`);
691
+ }
692
+
693
+ let exception: Error | undefined;
694
+ let result;
695
+ try {
696
+ result = await promise;
697
+ return {
698
+ stdout: result.stdout as T,
699
+ stderr: result.stderr as T | undefined,
700
+ exitCode: result.exitCode ?? 0,
701
+ };
702
+ } catch (ex) {
703
+ if (ex instanceof CancelledRunError) {
704
+ const duration = getDurationMilliseconds(start);
705
+ const timeout = runOpts.timeout ?? 0;
706
+ const reason =
707
+ timeout > 0 && duration >= timeout - 100
708
+ ? 'timeout'
709
+ : cancellation?.aborted
710
+ ? 'cancellation'
711
+ : 'unknown';
712
+ Logger.warn(
713
+ `${formatLoggableScopeBlock('GIT')} ${gitCommand} \u00b7 ABORTED after ${duration}ms (${reason})`,
714
+ );
715
+ this.options.hooks?.onAborted?.({
716
+ operation: gitCommand,
717
+ reason: reason,
718
+ duration: duration,
719
+ timeout: timeout,
720
+ });
721
+ }
722
+
723
+ if (errorHandling === 'ignore') {
724
+ if (ex instanceof RunError) {
725
+ return {
726
+ stdout: ex.stdout as T,
727
+ stderr: ex.stderr as T | undefined,
728
+ exitCode: ex.code != null ? (typeof ex.code === 'number' ? ex.code : parseInt(ex.code, 10)) : 0,
729
+ cancelled: ex instanceof CancelledRunError,
730
+ };
731
+ }
732
+
733
+ return {
734
+ stdout: '' as T,
735
+ stderr: undefined,
736
+ exitCode: 0,
737
+ cancelled: ex instanceof CancelledRunError,
738
+ };
739
+ }
740
+
741
+ if (ex instanceof CancelledRunError) {
742
+ exception = new CancellationError(ex);
743
+ } else {
744
+ exception = new GitError(ex);
745
+ }
746
+ if (errorHandling === 'throw') throw exception;
747
+
748
+ defaultExceptionHandler(exception, options.cwd, start);
749
+ exception = undefined;
750
+ return { stdout: '' as T, stderr: result?.stderr as T | undefined, exitCode: result?.exitCode ?? 0 };
751
+ } finally {
752
+ this.logGitCommandComplete(gitCommand, exception, getDurationMilliseconds(start), waiting);
753
+ }
754
+ }
755
+
756
+ async *stream(options: GitSpawnOptions, ...args: readonly (string | undefined)[]): AsyncGenerator<string> {
757
+ if (this.options.isTrusted?.() === false) throw new WorkspaceUntrustedError();
758
+
759
+ const start = hrtime();
760
+ const streamId = uniqueCounterForStream.next();
761
+
762
+ const { configs, stdin, stdinEncoding, cancellation, encoding, ...opts } = options;
763
+ const runArgs = args.filter(a => a != null);
764
+
765
+ const spawnOpts: SpawnOptions = {
766
+ // Unless provided, ignore stdin and leave default streams for stdout and stderr
767
+ stdio: [stdin ? 'pipe' : 'ignore', null, null],
768
+ ...opts,
769
+ signal: cancellation,
770
+ env: this.buildEnv(options.env),
771
+ };
772
+
773
+ const gitCommand = `(spawn) [${spawnOpts.cwd as string}] git ${runArgs.join(' ')}`;
774
+
775
+ // Fixes https://github.com/gitkraken/vscode-gitlens/issues/73 & https://github.com/gitkraken/vscode-gitlens/issues/161
776
+ // See https://stackoverflow.com/questions/4144417/how-to-handle-asian-characters-in-file-names-in-git-on-os-x
777
+ runArgs.unshift(
778
+ '-c',
779
+ 'core.quotepath=false',
780
+ '-c',
781
+ 'color.ui=false',
782
+ ...(configs !== undefined ? configs : emptyArray),
783
+ );
784
+
785
+ if (process.platform === 'win32') {
786
+ runArgs.unshift('-c', 'core.longpaths=true');
787
+ }
788
+
789
+ const command = await this.path();
790
+ const proc = spawn(command, runArgs, spawnOpts);
791
+
792
+ if (stdin) {
793
+ proc.stdin?.end(stdin, (stdinEncoding ?? 'utf8') as BufferEncoding);
794
+ }
795
+
796
+ let exception: Error | undefined;
797
+
798
+ const promise = new Promise<void>((resolve, reject) => {
799
+ const stderrChunks: string[] = [];
800
+ if (proc.stderr) {
801
+ proc.stderr?.setEncoding('utf8');
802
+ proc.stderr.on('data', chunk => stderrChunks.push(chunk));
803
+ }
804
+
805
+ proc.once('error', ex => {
806
+ if (ex?.name === 'AbortError') return;
807
+
808
+ exception = new GitError(ex);
809
+ });
810
+ proc.once('close', (code, signal) => {
811
+ if (code === 0) {
812
+ resolve();
813
+ return;
814
+ }
815
+
816
+ if (signal === 'SIGTERM') {
817
+ // If the caller aborted, just resolve
818
+ if (cancellation?.aborted) {
819
+ resolve();
820
+ } else {
821
+ reject(new CancelledRunError(proc.spawnargs.join(' '), true, code ?? undefined, signal));
822
+ }
823
+ return;
824
+ }
825
+
826
+ // If the caller didn't read the complete stream, just resolve
827
+ if (
828
+ signal === 'SIGPIPE' ||
829
+ code === 141 /* SIGPIPE */ ||
830
+ (code === 128 && stderrChunks.some(c => c.includes('Connection reset by peer')))
831
+ ) {
832
+ resolve();
833
+ return;
834
+ }
835
+
836
+ const stderr = stderrChunks.join('').trim();
837
+ reject(
838
+ new GitError(
839
+ new RunError(
840
+ {
841
+ message: `Error (${code}): ${stderr || 'Unknown'}`,
842
+ cmd: proc.spawnargs.join(' '),
843
+ killed: proc.killed,
844
+ code: proc.exitCode,
845
+ },
846
+ '',
847
+ stderr,
848
+ ),
849
+ ),
850
+ );
851
+ });
852
+ });
853
+
854
+ let cleanedUp = false;
855
+ const cleanup = () => {
856
+ if (cleanedUp) return;
857
+ cleanedUp = true;
858
+
859
+ try {
860
+ proc.removeAllListeners();
861
+ } catch {}
862
+ this.logGitCommandComplete(gitCommand, exception, getDurationMilliseconds(start), false, streamId);
863
+ };
864
+
865
+ try {
866
+ this.logGitCommandStart(gitCommand, streamId);
867
+
868
+ try {
869
+ if (proc.stdout) {
870
+ const enc = encoding ?? 'utf8';
871
+ if (enc === 'utf8' || enc === 'binary' || enc === 'buffer') {
872
+ proc.stdout.setEncoding(enc === 'buffer' ? 'utf8' : enc);
873
+ for await (const chunk of proc.stdout) {
874
+ yield chunk;
875
+ }
876
+ } else {
877
+ // Non-UTF-8 encoding: collect raw buffers and decode at the end.
878
+ // Streaming decode is unsafe because chunk boundaries can split
879
+ // multi-byte sequences in the source encoding.
880
+ const decode = this.options.decode;
881
+ if (decode == null) {
882
+ throw new Error(
883
+ `Non-UTF-8 encoding '${enc}' requested for stream but no decode function configured`,
884
+ );
885
+ }
886
+
887
+ const buffers: Buffer[] = [];
888
+ for await (const chunk of proc.stdout) {
889
+ buffers.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
890
+ }
891
+ yield await decode(Buffer.concat(buffers as ReadonlyArray<Uint8Array>), { encoding: enc });
892
+ }
893
+ }
894
+ } finally {
895
+ // This await MUST be in this inner finally block to ensure the child process close event completes
896
+ // before we call removeAllListeners() in the outer finally. When consumers break early from the
897
+ // async generator (e.g., reading only the first chunk), the git process receives SIGPIPE and triggers
898
+ // the close handler asynchronously. Without awaiting here, removeAllListeners() would execute before
899
+ // the close handler finishes, causing a race condition and potential resource leaks.
900
+ await promise;
901
+ }
902
+ } catch (ex) {
903
+ exception = ex;
904
+ throw ex;
905
+ } finally {
906
+ cleanup();
907
+ }
908
+
909
+ // Ensure cleanup happens immediately when the generator is explicitly closed (e.g., via break or return)
910
+ // This is called by JavaScript when the generator is abandoned, ensuring logGitCommand is called
911
+ // synchronously rather than waiting for garbage collection.
912
+ // eslint-disable-next-line @typescript-eslint/no-meaningless-void-operator
913
+ return void cleanup();
914
+ }
915
+
916
+ async rev_parse__git_dir(cwd: string): Promise<{ path: string; commonPath?: string } | undefined> {
917
+ const result = await this.exec({ cwd: cwd, errors: 'ignore' }, 'rev-parse', '--git-dir', '--git-common-dir');
918
+ if (!result.stdout) return undefined;
919
+
920
+ // Keep trailing spaces which are part of the directory name
921
+ let [dotGitPath, commonDotGitPath] = result.stdout.split('\n').map(r => r.trimStart());
922
+
923
+ // Make sure to normalize: https://github.com/git-for-windows/git/issues/2478
924
+
925
+ if (!isAbsolute(dotGitPath)) {
926
+ dotGitPath = joinPaths(cwd, dotGitPath);
927
+ }
928
+ dotGitPath = normalizePath(dotGitPath);
929
+
930
+ if (commonDotGitPath) {
931
+ if (!isAbsolute(commonDotGitPath)) {
932
+ commonDotGitPath = joinPaths(cwd, commonDotGitPath);
933
+ }
934
+ commonDotGitPath = normalizePath(commonDotGitPath);
935
+
936
+ return { path: dotGitPath, commonPath: commonDotGitPath !== dotGitPath ? commonDotGitPath : undefined };
937
+ }
938
+
939
+ return { path: dotGitPath };
940
+ }
941
+
942
+ async rev_parse__show_toplevel(cwd: string): Promise<[safe: true, repoPath: string] | [safe: false] | []> {
943
+ let result;
944
+
945
+ if (this.options.isTrusted?.() === false) {
946
+ // Check if the folder is a bare clone: if it has a file named HEAD && `rev-parse --show-cdup` is empty
947
+ if (await fsExists(joinPaths(cwd, 'HEAD'))) {
948
+ try {
949
+ result = await this.exec(
950
+ { cwd: cwd, errors: 'throw', configs: ['-C', cwd] },
951
+ 'rev-parse',
952
+ '--show-cdup',
953
+ );
954
+ if (!result.stdout.trim()) {
955
+ Logger.warn(`Skipping (untrusted workspace); bare clone repository detected in '${cwd}'`);
956
+ return emptyArray as [];
957
+ }
958
+ } catch {
959
+ // If this throws, we should be good to open the repo (e.g. HEAD doesn't exist)
960
+ }
961
+ }
962
+ }
963
+
964
+ try {
965
+ result = await this.exec({ cwd: cwd, errors: 'throw' }, 'rev-parse', '--show-toplevel');
966
+ // Make sure to normalize: https://github.com/git-for-windows/git/issues/2478
967
+ // Keep trailing spaces which are part of the directory name
968
+ return !result.stdout
969
+ ? (emptyArray as [])
970
+ : [true, normalizePath(result.stdout.trimStart().replace(trailingNewlineRegex, ''))];
971
+ } catch (ex) {
972
+ if (ex instanceof WorkspaceUntrustedError) return emptyArray as [];
973
+ if (!(ex instanceof GitError)) throw ex;
974
+
975
+ const unsafeMatch = GitErrors.unsafeRepository.exec(ex.stderr ?? '');
976
+ if (unsafeMatch != null) {
977
+ Logger.warn(
978
+ `Skipping; unsafe repository detected in '${unsafeMatch[1] || unsafeMatch[2]}'; run '${
979
+ unsafeMatch[3]
980
+ }' to allow it`,
981
+ );
982
+ return [false];
983
+ }
984
+
985
+ const inDotGit = GitWarnings.mustRunInWorkTree.test(ex.stderr ?? '');
986
+ // Check if we are in a bare clone
987
+ if (inDotGit && this.options.isTrusted?.() !== false) {
988
+ result = await this.exec({ cwd: cwd, errors: 'ignore' }, 'rev-parse', '--is-bare-repository');
989
+ if (result.stdout.trim() === 'true') {
990
+ const result = await this.rev_parse__git_dir(cwd);
991
+ const repoPath = result?.commonPath ?? result?.path;
992
+ if (repoPath?.length) return [true, repoPath];
993
+ }
994
+ }
995
+
996
+ if (inDotGit || (ex.original as NodeJS.ErrnoException)?.code === 'ENOENT') {
997
+ // If the `cwd` doesn't exist, walk backward to see if any parent folder exists
998
+ let exists = inDotGit ? false : await fsExists(cwd);
999
+ if (!exists) {
1000
+ do {
1001
+ const parent = dirname(cwd);
1002
+ if (parent === cwd || parent.length === 0) return emptyArray as [];
1003
+
1004
+ cwd = parent;
1005
+ exists = await fsExists(cwd);
1006
+ } while (!exists);
1007
+
1008
+ return this.rev_parse__show_toplevel(cwd);
1009
+ }
1010
+ }
1011
+ return emptyArray as [];
1012
+ }
1013
+ }
1014
+
1015
+ private logGitCommandStart(command: string, id: number): void {
1016
+ Logger.info(`${formatLoggableScopeBlock(`GIT:\u2192${id}`)} ${command} \u00b7 starting...`);
1017
+ this.options.logger?.info(`${formatLoggableScopeBlock(`\u2192${id}`, '')} ${command} \u2022 starting...`);
1018
+ }
1019
+
1020
+ private logGitCommandComplete(
1021
+ command: string,
1022
+ ex: Error | undefined,
1023
+ duration: number,
1024
+ waiting: boolean,
1025
+ id?: number,
1026
+ ): void {
1027
+ const slow = duration > slowCallWarningThreshold;
1028
+ const status = slow && waiting ? ' (slow, waiting)' : waiting ? ' (waiting)' : slow ? ' (slow)' : '';
1029
+
1030
+ if (ex != null) {
1031
+ Logger.error(
1032
+ undefined,
1033
+ `${formatLoggableScopeBlock(id ? `GIT:\u2190${id}` : 'GIT')} ${command} \u00b7 ${
1034
+ isCancellationError(ex)
1035
+ ? 'cancelled'
1036
+ : (ex.message || String(ex) || '')
1037
+ .trim()
1038
+ .replace(/fatal:\s*/g, '')
1039
+ .replace(/\r?\n|\r/g, ' \u00b7 ')
1040
+ } [${duration}ms]${status}`,
1041
+ );
1042
+ } else if (slow) {
1043
+ Logger.warn(
1044
+ `${formatLoggableScopeBlock(id ? `GIT:\u2190${id}` : 'GIT', `*${duration}ms`)} ${command} [*${duration}ms]${status}`,
1045
+ );
1046
+ } else {
1047
+ Logger.info(
1048
+ `${formatLoggableScopeBlock(id ? `GIT:\u2190${id}` : 'GIT', `${duration}ms`)} ${command} [${duration}ms]${status}`,
1049
+ );
1050
+ }
1051
+
1052
+ const logMessage = `${formatLoggableScopeBlock(
1053
+ `${id ? `\u2190${id}` : ''}${slow ? '*' : ''}`,
1054
+ `${duration}ms`,
1055
+ )} ${command}${status}`;
1056
+ if (ex != null) {
1057
+ this.options.logger?.error(`${logMessage} \u2022 FAILED\n${String(ex)}`);
1058
+ } else {
1059
+ this.options.logger?.info(`${logMessage} \u2022 completed`);
1060
+ }
1061
+ }
1062
+ }
1063
+
1064
+ export function defaultExceptionHandler(ex: Error, cwd: string | undefined, start?: [number, number]): void {
1065
+ if (isCancellationError(ex)) throw ex;
1066
+
1067
+ const msg = ex.message || ex.toString();
1068
+ if (msg) {
1069
+ for (const warning of Object.values(GitWarnings)) {
1070
+ if (warning.test(msg)) {
1071
+ const duration = start !== undefined ? ` [${getDurationMilliseconds(start)}ms]` : '';
1072
+ Logger.warn(
1073
+ `[${cwd}] Git ${msg
1074
+ .trim()
1075
+ .replace(/fatal:\s*/g, '')
1076
+ .replace(/\r?\n|\r/g, ' \u00b7 ')}${duration}`,
1077
+ );
1078
+ return;
1079
+ }
1080
+ }
1081
+
1082
+ const match = GitErrors.badRevision.exec(msg);
1083
+ if (match != null) {
1084
+ const [, ref] = match;
1085
+
1086
+ // 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
1087
+ if (ref?.endsWith('^3')) return;
1088
+ }
1089
+ }
1090
+
1091
+ throw ex;
1092
+ }