@gitkraken/core-gitlens 0.5.109 → 0.5.111

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 (416) hide show
  1. package/CHANGELOG.md +48 -1
  2. package/dist/git/cache.d.ts +111 -6
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +312 -43
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +11 -0
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/models/fileStatus.d.ts +1 -0
  10. package/dist/git/models/fileStatus.d.ts.map +1 -1
  11. package/dist/git/models/fileStatus.js +1 -0
  12. package/dist/git/models/fileStatus.js.map +1 -1
  13. package/dist/git/models/issue.d.ts +4 -0
  14. package/dist/git/models/issue.d.ts.map +1 -1
  15. package/dist/git/models/mergeConflicts.d.ts +2 -0
  16. package/dist/git/models/mergeConflicts.d.ts.map +1 -1
  17. package/dist/git/models/pullRequest.d.ts +119 -2
  18. package/dist/git/models/pullRequest.d.ts.map +1 -1
  19. package/dist/git/models/pullRequest.js +27 -1
  20. package/dist/git/models/pullRequest.js.map +1 -1
  21. package/dist/git/models/repository.d.ts +32 -5
  22. package/dist/git/models/repository.d.ts.map +1 -1
  23. package/dist/git/models/repository.js +58 -12
  24. package/dist/git/models/repository.js.map +1 -1
  25. package/dist/git/models/statusFile.d.ts.map +1 -1
  26. package/dist/git/models/statusFile.js +3 -0
  27. package/dist/git/models/statusFile.js.map +1 -1
  28. package/dist/git/providers/branches.d.ts +2 -0
  29. package/dist/git/providers/branches.d.ts.map +1 -1
  30. package/dist/git/providers/commits.d.ts +8 -0
  31. package/dist/git/providers/commits.d.ts.map +1 -1
  32. package/dist/git/providers/config.d.ts +19 -1
  33. package/dist/git/providers/config.d.ts.map +1 -1
  34. package/dist/git/providers/operations.d.ts +1 -0
  35. package/dist/git/providers/operations.d.ts.map +1 -1
  36. package/dist/git/providers/pausedOperations.d.ts +2 -0
  37. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  38. package/dist/git/providers/status.d.ts +1 -0
  39. package/dist/git/providers/status.d.ts.map +1 -1
  40. package/dist/git/utils/config.utils.d.ts +3 -0
  41. package/dist/git/utils/config.utils.d.ts.map +1 -0
  42. package/dist/git/utils/config.utils.js +8 -0
  43. package/dist/git/utils/config.utils.js.map +1 -0
  44. package/dist/git/utils/issue.utils.d.ts.map +1 -1
  45. package/dist/git/utils/issue.utils.js +2 -0
  46. package/dist/git/utils/issue.utils.js.map +1 -1
  47. package/dist/git/utils/pausedOperationStatus.utils.d.ts +14 -0
  48. package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
  49. package/dist/git/utils/pausedOperationStatus.utils.js +23 -0
  50. package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
  51. package/dist/git/utils/pullRequest.utils.d.ts +24 -1
  52. package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
  53. package/dist/git/utils/pullRequest.utils.js +71 -0
  54. package/dist/git/utils/pullRequest.utils.js.map +1 -1
  55. package/dist/git/watching/changeEvent.d.ts +6 -1
  56. package/dist/git/watching/changeEvent.d.ts.map +1 -1
  57. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  58. package/dist/git/watching/classifyChange.js +14 -1
  59. package/dist/git/watching/classifyChange.js.map +1 -1
  60. package/dist/git/watching/watchService.d.ts.map +1 -1
  61. package/dist/git/watching/watchService.js +18 -3
  62. package/dist/git/watching/watchService.js.map +1 -1
  63. package/dist/git/watching/watchSession.d.ts +8 -1
  64. package/dist/git/watching/watchSession.d.ts.map +1 -1
  65. package/dist/git/watching/watchSession.js +38 -6
  66. package/dist/git/watching/watchSession.js.map +1 -1
  67. package/dist/git/watching/watcherPatterns.d.ts +2 -2
  68. package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
  69. package/dist/git/watching/watcherPatterns.js +1 -1
  70. package/dist/git/watching/watcherPatterns.js.map +1 -1
  71. package/dist/git-cli/exec/git.d.ts +1 -1
  72. package/dist/git-cli/exec/git.d.ts.map +1 -1
  73. package/dist/git-cli/exec/git.js +13 -3
  74. package/dist/git-cli/exec/git.js.map +1 -1
  75. package/dist/git-cli/providers/branches.d.ts +19 -0
  76. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  77. package/dist/git-cli/providers/branches.js +282 -78
  78. package/dist/git-cli/providers/branches.js.map +1 -1
  79. package/dist/git-cli/providers/commits.d.ts +4 -0
  80. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  81. package/dist/git-cli/providers/commits.js +84 -11
  82. package/dist/git-cli/providers/commits.js.map +1 -1
  83. package/dist/git-cli/providers/config.d.ts +42 -0
  84. package/dist/git-cli/providers/config.d.ts.map +1 -1
  85. package/dist/git-cli/providers/config.js +186 -5
  86. package/dist/git-cli/providers/config.js.map +1 -1
  87. package/dist/git-cli/providers/contributors.d.ts.map +1 -1
  88. package/dist/git-cli/providers/contributors.js +1 -1
  89. package/dist/git-cli/providers/contributors.js.map +1 -1
  90. package/dist/git-cli/providers/graph.d.ts +2 -2
  91. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  92. package/dist/git-cli/providers/graph.js +27 -9
  93. package/dist/git-cli/providers/graph.js.map +1 -1
  94. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  95. package/dist/git-cli/providers/operations.js +40 -12
  96. package/dist/git-cli/providers/operations.js.map +1 -1
  97. package/dist/git-cli/providers/pausedOperations.d.ts +5 -0
  98. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  99. package/dist/git-cli/providers/pausedOperations.js +87 -16
  100. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  101. package/dist/git-cli/providers/refs.d.ts +5 -3
  102. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  103. package/dist/git-cli/providers/refs.js +33 -4
  104. package/dist/git-cli/providers/refs.js.map +1 -1
  105. package/dist/git-cli/providers/status.d.ts +1 -0
  106. package/dist/git-cli/providers/status.d.ts.map +1 -1
  107. package/dist/git-cli/providers/status.js +18 -3
  108. package/dist/git-cli/providers/status.js.map +1 -1
  109. package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
  110. package/dist/git-cli/providers/worktrees.js +4 -0
  111. package/dist/git-cli/providers/worktrees.js.map +1 -1
  112. package/dist/git-cli/service.d.ts.map +1 -1
  113. package/dist/git-cli/service.js.map +1 -1
  114. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +39 -1
  115. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
  116. package/dist/plus/agents/providers/claudeCodeProvider.js +978 -71
  117. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
  118. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +24 -2
  119. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
  120. package/dist/plus/agents/providers/claudeCodeTranscript.js +84 -9
  121. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  122. package/dist/plus/agents/types.d.ts +37 -2
  123. package/dist/plus/agents/types.d.ts.map +1 -1
  124. package/dist/plus/agents/types.js +2 -0
  125. package/dist/plus/agents/types.js.map +1 -1
  126. package/dist/plus/ai/errors.d.ts +10 -0
  127. package/dist/plus/ai/errors.d.ts.map +1 -1
  128. package/dist/plus/ai/errors.js +29 -0
  129. package/dist/plus/ai/errors.js.map +1 -1
  130. package/dist/plus/ai/models/model.d.ts +4 -0
  131. package/dist/plus/ai/models/model.d.ts.map +1 -1
  132. package/dist/plus/ai/models/model.js +51 -6
  133. package/dist/plus/ai/models/model.js.map +1 -1
  134. package/dist/plus/ai/models/promptTemplates.d.ts +1 -1
  135. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  136. package/dist/plus/ai/models/provider.d.ts +60 -2
  137. package/dist/plus/ai/models/provider.d.ts.map +1 -1
  138. package/dist/plus/ai/prompts.d.ts +12 -0
  139. package/dist/plus/ai/prompts.d.ts.map +1 -1
  140. package/dist/plus/ai/prompts.js +177 -61
  141. package/dist/plus/ai/prompts.js.map +1 -1
  142. package/dist/plus/ai/providers/anthropicProvider.d.ts +10 -2
  143. package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
  144. package/dist/plus/ai/providers/anthropicProvider.js +139 -46
  145. package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
  146. package/dist/plus/ai/providers/deepSeekProvider.d.ts +2 -0
  147. package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
  148. package/dist/plus/ai/providers/deepSeekProvider.js +10 -21
  149. package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
  150. package/dist/plus/ai/providers/geminiProvider.d.ts +1 -0
  151. package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
  152. package/dist/plus/ai/providers/geminiProvider.js +19 -0
  153. package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
  154. package/dist/plus/ai/providers/gitkrakenProvider.d.ts +5 -1
  155. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
  156. package/dist/plus/ai/providers/gitkrakenProvider.js +118 -3
  157. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
  158. package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -0
  159. package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
  160. package/dist/plus/ai/providers/huggingFaceProvider.js +5 -0
  161. package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
  162. package/dist/plus/ai/providers/mistralProvider.d.ts +3 -1
  163. package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
  164. package/dist/plus/ai/providers/mistralProvider.js +99 -19
  165. package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
  166. package/dist/plus/ai/providers/ollamaProvider.d.ts +4 -3
  167. package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
  168. package/dist/plus/ai/providers/ollamaProvider.js +38 -3
  169. package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
  170. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts +1 -0
  171. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
  172. package/dist/plus/ai/providers/openAICompatibleProvider.js +4 -0
  173. package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
  174. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +154 -5
  175. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
  176. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +259 -10
  177. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  178. package/dist/plus/ai/providers/openRouterProvider.d.ts +4 -0
  179. package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
  180. package/dist/plus/ai/providers/openRouterProvider.js +9 -0
  181. package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
  182. package/dist/plus/ai/providers/openaiProvider.d.ts +1 -0
  183. package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
  184. package/dist/plus/ai/providers/openaiProvider.js +1 -0
  185. package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
  186. package/dist/plus/ai/providers/responseFormatCache.d.ts +8 -0
  187. package/dist/plus/ai/providers/responseFormatCache.d.ts.map +1 -0
  188. package/dist/plus/ai/providers/responseFormatCache.js +25 -0
  189. package/dist/plus/ai/providers/responseFormatCache.js.map +1 -0
  190. package/dist/plus/ai/providers/xaiProvider.d.ts +1 -0
  191. package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
  192. package/dist/plus/ai/providers/xaiProvider.js +10 -1
  193. package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
  194. package/dist/plus/ai/utils/ai.utils.d.ts +3 -0
  195. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  196. package/dist/plus/ai/utils/ai.utils.js +13 -0
  197. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  198. package/dist/plus/ai/utils/results.utils.d.ts +16 -2
  199. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  200. package/dist/plus/ai/utils/results.utils.js +204 -28
  201. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  202. package/dist/plus/git-github/api/github.d.ts +92 -4
  203. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  204. package/dist/plus/git-github/api/github.js +324 -20
  205. package/dist/plus/git-github/api/github.js.map +1 -1
  206. package/dist/plus/git-github/api/pullRequestSearchQuery.d.ts +27 -1
  207. package/dist/plus/git-github/api/pullRequestSearchQuery.d.ts.map +1 -1
  208. package/dist/plus/git-github/api/pullRequestSearchQuery.js +73 -6
  209. package/dist/plus/git-github/api/pullRequestSearchQuery.js.map +1 -1
  210. package/dist/plus/git-github/models.d.ts +33 -5
  211. package/dist/plus/git-github/models.d.ts.map +1 -1
  212. package/dist/plus/git-github/models.js +43 -4
  213. package/dist/plus/git-github/models.js.map +1 -1
  214. package/dist/plus/git-github/providers/github/status.d.ts +1 -0
  215. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  216. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  217. package/dist/plus/integrations/context.d.ts +4 -0
  218. package/dist/plus/integrations/context.d.ts.map +1 -1
  219. package/dist/plus/integrations/index.d.ts.map +1 -1
  220. package/dist/plus/integrations/index.js +2 -0
  221. package/dist/plus/integrations/index.js.map +1 -1
  222. package/dist/plus/integrations/integrationService.d.ts +16 -1
  223. package/dist/plus/integrations/integrationService.d.ts.map +1 -1
  224. package/dist/plus/integrations/integrationService.js +9 -1
  225. package/dist/plus/integrations/integrationService.js.map +1 -1
  226. package/dist/plus/integrations/manager.d.ts +45 -5
  227. package/dist/plus/integrations/manager.d.ts.map +1 -1
  228. package/dist/plus/integrations/models/gitHostIntegration.d.ts +18 -3
  229. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
  230. package/dist/plus/integrations/models/gitHostIntegration.js +30 -2
  231. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  232. package/dist/plus/integrations/models/integration.d.ts +4 -2
  233. package/dist/plus/integrations/models/integration.d.ts.map +1 -1
  234. package/dist/plus/integrations/models/integration.js +2 -2
  235. package/dist/plus/integrations/models/integration.js.map +1 -1
  236. package/dist/plus/integrations/providerFilters.d.ts +1 -1
  237. package/dist/plus/integrations/providerFilters.d.ts.map +1 -1
  238. package/dist/plus/integrations/providers/accounts.d.ts +6 -0
  239. package/dist/plus/integrations/providers/accounts.d.ts.map +1 -0
  240. package/dist/plus/integrations/providers/accounts.js +34 -0
  241. package/dist/plus/integrations/providers/accounts.js.map +1 -0
  242. package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
  243. package/dist/plus/integrations/providers/azure/models.js +3 -0
  244. package/dist/plus/integrations/providers/azure/models.js.map +1 -1
  245. package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
  246. package/dist/plus/integrations/providers/bitbucket/models.js +1 -0
  247. package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
  248. package/dist/plus/integrations/providers/github.d.ts +23 -2
  249. package/dist/plus/integrations/providers/github.d.ts.map +1 -1
  250. package/dist/plus/integrations/providers/github.js +169 -138
  251. package/dist/plus/integrations/providers/github.js.map +1 -1
  252. package/dist/plus/integrations/providers/gitlab.d.ts +9 -0
  253. package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
  254. package/dist/plus/integrations/providers/gitlab.js +23 -4
  255. package/dist/plus/integrations/providers/gitlab.js.map +1 -1
  256. package/dist/plus/integrations/providers/models.d.ts +14 -32
  257. package/dist/plus/integrations/providers/models.d.ts.map +1 -1
  258. package/dist/plus/integrations/providers/models.js +66 -109
  259. package/dist/plus/integrations/providers/models.js.map +1 -1
  260. package/dist/plus/integrations/providers/pullRequestReviews.d.ts +50 -0
  261. package/dist/plus/integrations/providers/pullRequestReviews.d.ts.map +1 -0
  262. package/dist/plus/integrations/providers/pullRequestReviews.js +99 -0
  263. package/dist/plus/integrations/providers/pullRequestReviews.js.map +1 -0
  264. package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
  265. package/dist/plus/integrations/reads/broaden.js +6 -1
  266. package/dist/plus/integrations/reads/broaden.js.map +1 -1
  267. package/dist/plus/integrations/reads/counts.d.ts +55 -0
  268. package/dist/plus/integrations/reads/counts.d.ts.map +1 -1
  269. package/dist/plus/integrations/reads/counts.js +146 -2
  270. package/dist/plus/integrations/reads/counts.js.map +1 -1
  271. package/dist/plus/integrations/reads/drains.d.ts +7 -1
  272. package/dist/plus/integrations/reads/drains.d.ts.map +1 -1
  273. package/dist/plus/integrations/reads/drains.js +20 -6
  274. package/dist/plus/integrations/reads/drains.js.map +1 -1
  275. package/dist/plus/integrations/reads/filters.d.ts.map +1 -1
  276. package/dist/plus/integrations/reads/filters.js +22 -0
  277. package/dist/plus/integrations/reads/filters.js.map +1 -1
  278. package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -1
  279. package/dist/plus/integrations/reads/hierarchy.js +3 -1
  280. package/dist/plus/integrations/reads/hierarchy.js.map +1 -1
  281. package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -1
  282. package/dist/plus/integrations/reads/issueTracker.js +8 -3
  283. package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
  284. package/dist/plus/integrations/reads/issues.d.ts.map +1 -1
  285. package/dist/plus/integrations/reads/issues.js +9 -4
  286. package/dist/plus/integrations/reads/issues.js.map +1 -1
  287. package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -1
  288. package/dist/plus/integrations/reads/pullRequests.js +9 -4
  289. package/dist/plus/integrations/reads/pullRequests.js.map +1 -1
  290. package/dist/plus/integrations/reads/searchPullRequests.d.ts +4 -3
  291. package/dist/plus/integrations/reads/searchPullRequests.d.ts.map +1 -1
  292. package/dist/plus/integrations/reads/searchPullRequests.js +6 -4
  293. package/dist/plus/integrations/reads/searchPullRequests.js.map +1 -1
  294. package/dist/plus/integrations/reads/sweeps.js +1 -1
  295. package/dist/plus/integrations/reads/sweeps.js.map +1 -1
  296. package/dist/plus/integrations/reads/warnings.d.ts +2 -2
  297. package/dist/plus/integrations/reads/warnings.d.ts.map +1 -1
  298. package/dist/plus/integrations/reads/warnings.js +11 -2
  299. package/dist/plus/integrations/reads/warnings.js.map +1 -1
  300. package/dist/plus/integrations/results.d.ts +6 -1
  301. package/dist/plus/integrations/results.d.ts.map +1 -1
  302. package/dist/plus/integrations/results.js.map +1 -1
  303. package/dist/utils/env/browser/base64.d.ts +1 -1
  304. package/dist/utils/env/browser/base64.d.ts.map +1 -1
  305. package/dist/utils/env/node/base64.d.ts +1 -1
  306. package/dist/utils/env/node/base64.d.ts.map +1 -1
  307. package/dist/utils/env/node/base64.js +2 -0
  308. package/dist/utils/env/node/base64.js.map +1 -1
  309. package/dist/utils/keys/chord.d.ts +52 -0
  310. package/dist/utils/keys/chord.d.ts.map +1 -0
  311. package/dist/utils/keys/chord.js +135 -0
  312. package/dist/utils/keys/chord.js.map +1 -0
  313. package/dist/utils/keys/keybinding.d.ts +53 -0
  314. package/dist/utils/keys/keybinding.d.ts.map +1 -0
  315. package/dist/utils/keys/keybinding.js +58 -0
  316. package/dist/utils/keys/keybinding.js.map +1 -0
  317. package/dist/utils/path.d.ts +11 -0
  318. package/dist/utils/path.d.ts.map +1 -1
  319. package/dist/utils/path.js +13 -0
  320. package/dist/utils/path.js.map +1 -1
  321. package/docs/integrations.md +76 -10
  322. package/docs/kepler-read-api-parity.md +9 -0
  323. package/package.json +13 -5
  324. package/src/git/cache.ts +383 -47
  325. package/src/git/context.ts +11 -0
  326. package/src/git/models/fileStatus.ts +1 -0
  327. package/src/git/models/issue.ts +4 -0
  328. package/src/git/models/mergeConflicts.ts +3 -2
  329. package/src/git/models/pullRequest.ts +117 -1
  330. package/src/git/models/repository.ts +58 -17
  331. package/src/git/models/statusFile.ts +3 -0
  332. package/src/git/providers/branches.ts +6 -0
  333. package/src/git/providers/commits.ts +11 -0
  334. package/src/git/providers/config.ts +18 -0
  335. package/src/git/providers/operations.ts +1 -0
  336. package/src/git/providers/pausedOperations.ts +2 -0
  337. package/src/git/providers/status.ts +1 -0
  338. package/src/git/utils/config.utils.ts +8 -0
  339. package/src/git/utils/issue.utils.ts +2 -0
  340. package/src/git/utils/pausedOperationStatus.utils.ts +28 -0
  341. package/src/git/utils/pullRequest.utils.ts +86 -0
  342. package/src/git/watching/changeEvent.ts +6 -1
  343. package/src/git/watching/classifyChange.ts +15 -1
  344. package/src/git/watching/watchService.ts +20 -3
  345. package/src/git/watching/watchSession.ts +41 -6
  346. package/src/git/watching/watcherPatterns.ts +1 -1
  347. package/src/git-cli/exec/git.ts +13 -3
  348. package/src/git-cli/providers/branches.ts +384 -132
  349. package/src/git-cli/providers/commits.ts +106 -15
  350. package/src/git-cli/providers/config.ts +229 -8
  351. package/src/git-cli/providers/contributors.ts +5 -1
  352. package/src/git-cli/providers/graph.ts +26 -13
  353. package/src/git-cli/providers/operations.ts +45 -20
  354. package/src/git-cli/providers/pausedOperations.ts +109 -17
  355. package/src/git-cli/providers/refs.ts +33 -3
  356. package/src/git-cli/providers/status.ts +25 -4
  357. package/src/git-cli/providers/worktrees.ts +5 -0
  358. package/src/git-cli/service.ts +0 -1
  359. package/src/plus/agents/providers/claudeCodeProvider.ts +1130 -87
  360. package/src/plus/agents/providers/claudeCodeTranscript.ts +95 -9
  361. package/src/plus/agents/types.ts +46 -2
  362. package/src/plus/ai/errors.ts +30 -0
  363. package/src/plus/ai/models/model.ts +56 -6
  364. package/src/plus/ai/models/promptTemplates.ts +1 -1
  365. package/src/plus/ai/models/provider.ts +69 -2
  366. package/src/plus/ai/prompts.ts +186 -61
  367. package/src/plus/ai/providers/anthropicProvider.ts +155 -47
  368. package/src/plus/ai/providers/deepSeekProvider.ts +11 -21
  369. package/src/plus/ai/providers/geminiProvider.ts +19 -0
  370. package/src/plus/ai/providers/gitkrakenProvider.ts +126 -3
  371. package/src/plus/ai/providers/huggingFaceProvider.ts +6 -0
  372. package/src/plus/ai/providers/mistralProvider.ts +102 -19
  373. package/src/plus/ai/providers/ollamaProvider.ts +55 -4
  374. package/src/plus/ai/providers/openAICompatibleProvider.ts +5 -0
  375. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +360 -17
  376. package/src/plus/ai/providers/openRouterProvider.ts +17 -0
  377. package/src/plus/ai/providers/openaiProvider.ts +1 -0
  378. package/src/plus/ai/providers/responseFormatCache.ts +39 -0
  379. package/src/plus/ai/providers/xaiProvider.ts +10 -1
  380. package/src/plus/ai/utils/ai.utils.ts +14 -0
  381. package/src/plus/ai/utils/results.utils.ts +255 -31
  382. package/src/plus/git-github/api/github.ts +467 -23
  383. package/src/plus/git-github/api/pullRequestSearchQuery.ts +81 -7
  384. package/src/plus/git-github/models.ts +77 -7
  385. package/src/plus/git-github/providers/github/status.ts +1 -0
  386. package/src/plus/integrations/context.ts +4 -0
  387. package/src/plus/integrations/index.ts +2 -0
  388. package/src/plus/integrations/integrationService.ts +25 -2
  389. package/src/plus/integrations/manager.ts +50 -5
  390. package/src/plus/integrations/models/gitHostIntegration.ts +54 -2
  391. package/src/plus/integrations/models/integration.ts +24 -13
  392. package/src/plus/integrations/providerFilters.ts +6 -1
  393. package/src/plus/integrations/providers/accounts.ts +38 -0
  394. package/src/plus/integrations/providers/azure/models.ts +3 -0
  395. package/src/plus/integrations/providers/bitbucket/models.ts +1 -0
  396. package/src/plus/integrations/providers/github.ts +218 -145
  397. package/src/plus/integrations/providers/gitlab.ts +30 -20
  398. package/src/plus/integrations/providers/models.ts +99 -127
  399. package/src/plus/integrations/providers/pullRequestReviews.ts +122 -0
  400. package/src/plus/integrations/reads/broaden.ts +6 -1
  401. package/src/plus/integrations/reads/counts.ts +273 -2
  402. package/src/plus/integrations/reads/drains.ts +19 -6
  403. package/src/plus/integrations/reads/filters.ts +22 -0
  404. package/src/plus/integrations/reads/hierarchy.ts +3 -1
  405. package/src/plus/integrations/reads/issueTracker.ts +9 -3
  406. package/src/plus/integrations/reads/issues.ts +9 -4
  407. package/src/plus/integrations/reads/pullRequests.ts +9 -4
  408. package/src/plus/integrations/reads/searchPullRequests.ts +12 -4
  409. package/src/plus/integrations/reads/sweeps.ts +1 -1
  410. package/src/plus/integrations/reads/warnings.ts +12 -1
  411. package/src/plus/integrations/results.ts +6 -1
  412. package/src/utils/env/browser/base64.ts +1 -1
  413. package/src/utils/env/node/base64.ts +3 -1
  414. package/src/utils/keys/chord.ts +184 -0
  415. package/src/utils/keys/keybinding.ts +116 -0
  416. package/src/utils/path.ts +14 -0
@@ -1,7 +1,7 @@
1
1
  import type { RepositoryChange } from '../models/repository.js';
2
2
 
3
3
  const classifyRegex =
4
- /(worktrees|index|HEAD|FETCH_HEAD|ORIG_HEAD|CHERRY_PICK_HEAD|MERGE_HEAD|REBASE_HEAD|rebase-merge|rebase-apply|sequencer|REVERT_HEAD|config|gk\/config|info\/exclude|refs\/(?:heads|remotes|stash|tags))/;
4
+ /(worktrees|index|HEAD|FETCH_HEAD|ORIG_HEAD|CHERRY_PICK_HEAD|MERGE_HEAD|REBASE_HEAD|rebase-merge|rebase-apply|sequencer|REVERT_HEAD|config|gk\/config|info\/exclude|refs\/(?:heads|remotes|stash|tags)|packed-refs)/;
5
5
 
6
6
  /**
7
7
  * Maps a path relative to a `.git` directory to the corresponding
@@ -69,6 +69,13 @@ export function classifyGitDirChange(relativePath: string): RepositoryChange[] |
69
69
  case 'sequencer':
70
70
  return ['pausedOp'];
71
71
 
72
+ // `'heads'` is deliberately the ONLY thing a `refs/heads/*` event yields, including a create. It is
73
+ // tempting to read a create as "a new branch exists under this name" and use it to drop anything
74
+ // derived from the old branch's identity (its base, its merge target). That signal does not mean
75
+ // what it looks like: git rewrites an EXISTING loose ref by writing `<name>.lock` and renaming it
76
+ // over the file, which watchers report as a create of the destination — so every ordinary commit
77
+ // would look like a new branch and discard a live branch's metadata. Nothing here can distinguish
78
+ // the two; identity changes are handled where GitLens performs the operation itself.
72
79
  case 'refs/heads':
73
80
  return ['heads'];
74
81
 
@@ -81,6 +88,13 @@ export function classifyGitDirChange(relativePath: string): RepositoryChange[] |
81
88
  case 'refs/tags':
82
89
  return ['tags'];
83
90
 
91
+ // A `packed-refs` rewrite (after `git pack-refs` or `git gc`) changes ref state
92
+ // WITHOUT any `refs/**` file event — deleting a packed branch, for example, only
93
+ // rewrites this file. The file content is not inspected here, so classification
94
+ // is deliberately broad: it can add, remove, or move refs of any of these types.
95
+ case 'packed-refs':
96
+ return ['heads', 'remotes', 'tags'];
97
+
84
98
  case 'worktrees':
85
99
  return ['worktrees'];
86
100
 
@@ -11,6 +11,13 @@ import type { WatchGroupHooks } from './watchGroup.js';
11
11
  import { WatchGroup } from './watchGroup.js';
12
12
  import { RepositoryWatchSession } from './watchSession.js';
13
13
 
14
+ /**
15
+ * Cap on paths held while the gitignore filter loads. Higher than the session's own cap because these are
16
+ * pre-filter — most of a build's output is typically gitignored and would be discarded on replay, so a
17
+ * tighter bound here would mark batches incomplete when they filter down to almost nothing.
18
+ */
19
+ const maxBufferedWorkingTreePaths = 5000;
20
+
14
21
  export interface WatchServiceOptions {
15
22
  readonly watchingProvider: FileWatchingProvider;
16
23
  /** Default debounce for repo changes when subscriber doesn't specify. Default: 250ms */
@@ -308,6 +315,7 @@ export class RepositoryWatchService implements UnifiedDisposable {
308
315
  // Buffer events while the gitignore filter loads, then replay
309
316
  let filterReady = filter == null;
310
317
  let buffered: string[] | undefined = filter != null ? [] : undefined;
318
+ let bufferIncomplete = false;
311
319
 
312
320
  if (filter != null) {
313
321
  void filter
@@ -316,11 +324,12 @@ export class RepositoryWatchService implements UnifiedDisposable {
316
324
  filterReady = true;
317
325
  if (buffered?.length) {
318
326
  const paths = filterWorkingTreePaths(buffered, repoPath, filter);
319
- if (paths.length > 0) {
320
- session.pushWorkingTreeChanges(paths);
327
+ if (paths.length > 0 || bufferIncomplete) {
328
+ session.pushWorkingTreeChanges(paths, bufferIncomplete);
321
329
  }
322
330
  }
323
331
  buffered = undefined;
332
+ bufferIncomplete = false;
324
333
  })
325
334
  .catch(() => {
326
335
  filterReady = true;
@@ -351,7 +360,15 @@ export class RepositoryWatchService implements UnifiedDisposable {
351
360
  }
352
361
 
353
362
  if (!filterReady) {
354
- // Buffer until gitignore filter is ready
363
+ // Buffer until the gitignore filter is ready. Capped: `ready()` awaits a `core.excludesFile`
364
+ // read, which queues behind every other git command, so this window can stay open for a long
365
+ // time — and these paths haven't been gitignore-filtered yet, so a build's output all lands
366
+ // here. Past the cap, stop retaining and mark the batch partial rather than growing.
367
+ if (buffered != null && buffered.length >= maxBufferedWorkingTreePaths) {
368
+ bufferIncomplete = true;
369
+ return;
370
+ }
371
+
355
372
  buffered?.push(event.path);
356
373
  return;
357
374
  }
@@ -56,6 +56,15 @@ export interface WatchSessionOptions {
56
56
  const defaultRepoDelay = 250;
57
57
  const defaultWorkingTreeDelay = 2500;
58
58
 
59
+ /**
60
+ * Cap on retained working-tree paths per flush. The set otherwise grows without bound — while the window
61
+ * is unfocused the session is suspended, so a branch switch or build accumulates every touched path until
62
+ * refocus. Set low deliberately: ordinary edits are a handful of paths, anything past this was a
63
+ * refresh-everything event anyway, and dropping past it only costs the matching consumers a
64
+ * conservative refresh.
65
+ */
66
+ const maxWorkingTreePaths = 1000;
67
+
59
68
  /**
60
69
  * Per-repository session that owns the debounce/coalesce/suspend
61
70
  * pipeline for both repo (.git) and working-tree changes.
@@ -78,6 +87,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
78
87
  private readonly workingTreeDelays = new Map<number, number>();
79
88
  private workingTreeNextId = 0;
80
89
  private pendingWorkingTreePaths = new Set<string>();
90
+ private pendingWorkingTreeIncomplete = false;
81
91
  private workingTreeTimer: ReturnType<typeof setTimeout> | undefined;
82
92
  private effectiveWorkingTreeMs: number;
83
93
  private readonly defaultWorkingTreeMs: number;
@@ -116,6 +126,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
116
126
 
117
127
  this.pendingRepoEvent = undefined;
118
128
  this.pendingWorkingTreePaths.clear();
129
+ this.pendingWorkingTreeIncomplete = false;
119
130
  this.repoDelays.clear();
120
131
  this.workingTreeDelays.clear();
121
132
 
@@ -128,7 +139,15 @@ export class RepositoryWatchSession implements UnifiedDisposable {
128
139
  }
129
140
 
130
141
  get hasPendingChanges(): boolean {
131
- return this.pendingRepoEvent != null || this.pendingWorkingTreePaths.size > 0;
142
+ return this.pendingRepoEvent != null || this.hasPendingWorkingTreeChanges;
143
+ }
144
+
145
+ /**
146
+ * An incomplete batch with no surviving paths still has to fire: the caller dropped paths we never saw, so
147
+ * gating the pipeline on the retained set alone would swallow the change entirely.
148
+ */
149
+ private get hasPendingWorkingTreeChanges(): boolean {
150
+ return this.pendingWorkingTreePaths.size > 0 || this.pendingWorkingTreeIncomplete;
132
151
  }
133
152
 
134
153
  get repoSubscriberCount(): number {
@@ -243,6 +262,9 @@ export class RepositoryWatchSession implements UnifiedDisposable {
243
262
  if (this.workingTreeDelays.size === 0) {
244
263
  this.cancelWorkingTreeTimer();
245
264
  this.pendingWorkingTreePaths.clear();
265
+ // Dropped with the paths it describes — a stale flag would make the next subscriber's
266
+ // first ordinary flush claim a partial set and force needless full refreshes.
267
+ this.pendingWorkingTreeIncomplete = false;
246
268
  this.lifecycle?.onLastWorkingTreeSubscriber?.();
247
269
  }
248
270
  }),
@@ -266,7 +288,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
266
288
  if (this.pendingRepoEvent != null) {
267
289
  this.scheduleRepoFlush(delayMs);
268
290
  }
269
- if (this.pendingWorkingTreePaths.size > 0) {
291
+ if (this.hasPendingWorkingTreeChanges) {
270
292
  this.scheduleWorkingTreeFlush(delayMs);
271
293
  }
272
294
  }
@@ -298,10 +320,14 @@ export class RepositoryWatchSession implements UnifiedDisposable {
298
320
  }
299
321
 
300
322
  /** Push working tree file changes into the pipeline */
301
- pushWorkingTreeChanges(paths: Iterable<string>): void {
323
+ /** `incomplete` marks the batch as partial when the caller already dropped paths of its own. */
324
+ pushWorkingTreeChanges(paths: Iterable<string>, incomplete?: boolean): void {
302
325
  if (this._disposed) return;
303
326
 
304
327
  this._etagWorkingTree++;
328
+ if (incomplete) {
329
+ this.pendingWorkingTreeIncomplete = true;
330
+ }
305
331
  this.coalesceWorkingTrees(paths);
306
332
  }
307
333
 
@@ -362,18 +388,20 @@ export class RepositoryWatchSession implements UnifiedDisposable {
362
388
 
363
389
  private flushWorkingTree(): void {
364
390
  this.workingTreeTimer = undefined;
365
- if (this.pendingWorkingTreePaths.size === 0) return;
391
+ if (!this.hasPendingWorkingTreeChanges) return;
366
392
 
367
393
  const paths = this.pendingWorkingTreePaths;
394
+ const incomplete = this.pendingWorkingTreeIncomplete;
368
395
  this.pendingWorkingTreePaths = new Set();
396
+ this.pendingWorkingTreeIncomplete = false;
369
397
  // Advance the cache's status clock (via WatchService's global forwarding) BEFORE notifying subscribers,
370
398
  // so a subscriber that synchronously reads status sees the post-change generation, not a joinable pre-change run.
371
399
  this.onDidFireWorkingTreeChangeCallback?.(this.repoPath);
372
- this.workingTreeEmitter.fire({ repoPath: this.repoPath, paths: paths });
400
+ this.workingTreeEmitter.fire({ repoPath: this.repoPath, paths: paths, incomplete: incomplete });
373
401
  }
374
402
 
375
403
  private scheduleWorkingTreeFlush(delayOverride?: number): void {
376
- if (this._suspended || this.pendingWorkingTreePaths.size === 0) return;
404
+ if (this._suspended || !this.hasPendingWorkingTreeChanges) return;
377
405
 
378
406
  if (this.workingTreeTimer != null) {
379
407
  clearTimeout(this.workingTreeTimer);
@@ -383,6 +411,13 @@ export class RepositoryWatchSession implements UnifiedDisposable {
383
411
 
384
412
  private coalesceWorkingTrees(paths: Iterable<string>): void {
385
413
  for (const p of paths) {
414
+ // Stop retaining paths past the cap, but keep draining the iterable — the flag is what makes the
415
+ // partial set safe to consume, and dropping out early would leave later paths for the next window.
416
+ if (this.pendingWorkingTreePaths.size >= maxWorkingTreePaths && !this.pendingWorkingTreePaths.has(p)) {
417
+ this.pendingWorkingTreeIncomplete = true;
418
+ continue;
419
+ }
420
+
386
421
  this.pendingWorkingTreePaths.add(p);
387
422
  }
388
423
  this.scheduleWorkingTreeFlush();
@@ -8,7 +8,7 @@ const dotGitFiles =
8
8
  const dotGitWorktreeFiles =
9
9
  'worktrees/*,worktrees/**/index,worktrees/**/HEAD,worktrees/**/*_HEAD,worktrees/**/MERGE_*,worktrees/**/rebase-merge,worktrees/**/rebase-merge/**,worktrees/**/rebase-apply,worktrees/**/rebase-apply/**,worktrees/**/sequencer,worktrees/**/sequencer/**';
10
10
 
11
- const dotGitCommonFiles = `config,gk/config,refs/**,info/exclude,FETCH_HEAD,${dotGitWorktreeFiles}`;
11
+ const dotGitCommonFiles = `config,gk/config,refs/**,packed-refs,info/exclude,FETCH_HEAD,${dotGitWorktreeFiles}`;
12
12
 
13
13
  /** For standard repos (no worktrees): single watcher covering all .git files */
14
14
  export const dotGitGlobCombined = `{${dotGitFiles},${dotGitCommonFiles}}`;
@@ -71,7 +71,6 @@ export const GitErrors = {
71
71
  changesWouldBeOverwritten:
72
72
  /Your local changes to the following files would be overwritten|Your local changes would be overwritten|overwritten by checkout/i,
73
73
  cherryPickAborted: /cherry-pick.*aborted/i,
74
- cherryPickEmptyPrevious: /The previous cherry-pick is now empty/i,
75
74
  cherryPickInProgress: /cherry-pick is already in progress|You have not concluded your cherry-pick/i,
76
75
  commitChangesFirst: /Please, commit your changes before you can/i,
77
76
  conflict: /^CONFLICT \([^)]+\): \b/m,
@@ -100,6 +99,7 @@ export const GitErrors = {
100
99
  noPausedOperation:
101
100
  /no merge (?:in progress|to abort)|no cherry-pick(?: or revert)? in progress|no rebase in progress/i,
102
101
  permissionDenied: /Permission.*denied/i,
102
+ previousOperationEmpty: /The previous (?:cherry-pick|revert) is now empty/i,
103
103
  pushRejected: /^error:\s*failed to push some refs to\b/m,
104
104
  pushRejectedRefDoesNotExists: /error:\s*unable to delete '(.*?)': remote ref does not exist/m,
105
105
  rebaseAborted: /Nothing to do|rebase.*aborted/i,
@@ -242,7 +242,7 @@ const errorToReasonMap = new Map<GitCommand, [RegExp, GitCommandToReasonMap[GitC
242
242
  [GitErrors.cherryPickAborted, 'aborted'],
243
243
  [GitErrors.cherryPickInProgress, 'alreadyInProgress'],
244
244
  [GitErrors.conflict, 'conflicts'],
245
- [GitErrors.cherryPickEmptyPrevious, 'emptyCommit'],
245
+ [GitErrors.previousOperationEmpty, 'emptyCommit'],
246
246
  [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
247
247
  ],
248
248
  ],
@@ -277,13 +277,23 @@ const errorToReasonMap = new Map<GitCommand, [RegExp, GitCommandToReasonMap[GitC
277
277
  [
278
278
  'paused-operation-continue',
279
279
  [
280
- [GitErrors.cherryPickEmptyPrevious, 'emptyCommit'],
280
+ [GitErrors.previousOperationEmpty, 'emptyCommit'],
281
281
  [GitErrors.noPausedOperation, 'nothingToContinue'],
282
282
  [GitErrors.uncommittedChanges, 'uncommittedChanges'],
283
283
  [GitErrors.unmergedFiles, 'unmergedFiles'],
284
284
  [GitErrors.unresolvedConflicts, 'conflicts'],
285
285
  [GitErrors.unstagedChanges, 'unstagedChanges'],
286
286
  [GitErrors.changesWouldBeOverwritten, 'wouldOverwriteChanges'],
287
+ // A single (non-sequencer) revert resolved to a no-op never gets git's "previous revert is now
288
+ // empty" message — its `--continue` falls through to the commit, which reports having nothing to
289
+ // commit. Mid-paused-op that means the step became empty, so it earns the same choice.
290
+ //
291
+ // Kept LAST because the pattern is deliberately broad: it also matches "no changes added to
292
+ // commit" and "nothing added to commit", which appear alongside the more specific unmerged /
293
+ // conflict / unstaged messages. Matching first would shadow those. It isn't narrowed to the
294
+ // "working tree clean" variant because an empty step with untracked files present instead reports
295
+ // "nothing added to commit but untracked files present".
296
+ [GitErrors.nothingToCommit, 'emptyCommit'],
287
297
  ],
288
298
  ],
289
299
  [