@gitkraken/core-gitlens 0.1.0 → 0.3.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 (451) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/dist/git/cache.d.ts +49 -9
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +174 -14
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +11 -2
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/models/branch.d.ts +1 -0
  10. package/dist/git/models/branch.d.ts.map +1 -1
  11. package/dist/git/models/branch.js.map +1 -1
  12. package/dist/git/models/commit.d.ts +1 -9
  13. package/dist/git/models/commit.d.ts.map +1 -1
  14. package/dist/git/models/commit.js +4 -9
  15. package/dist/git/models/commit.js.map +1 -1
  16. package/dist/git/models/graph.d.ts +2 -4
  17. package/dist/git/models/graph.d.ts.map +1 -1
  18. package/dist/git/models/reference.d.ts +31 -0
  19. package/dist/git/models/reference.d.ts.map +1 -1
  20. package/dist/git/models/remote.d.ts.map +1 -1
  21. package/dist/git/models/remote.js.map +1 -1
  22. package/dist/git/models/repository.d.ts +20 -3
  23. package/dist/git/models/repository.d.ts.map +1 -1
  24. package/dist/git/models/repository.js +42 -5
  25. package/dist/git/models/repository.js.map +1 -1
  26. package/dist/git/models/search.d.ts +2 -2
  27. package/dist/git/models/search.d.ts.map +1 -1
  28. package/dist/git/models/worktree.d.ts +4 -1
  29. package/dist/git/models/worktree.d.ts.map +1 -1
  30. package/dist/git/models/worktree.js +2 -2
  31. package/dist/git/models/worktree.js.map +1 -1
  32. package/dist/git/parsers/diffParser.d.ts +0 -1
  33. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  34. package/dist/git/parsers/diffParser.js +22 -61
  35. package/dist/git/parsers/diffParser.js.map +1 -1
  36. package/dist/git/providers/branches.d.ts +18 -4
  37. package/dist/git/providers/branches.d.ts.map +1 -1
  38. package/dist/git/providers/commits.d.ts +6 -0
  39. package/dist/git/providers/commits.d.ts.map +1 -1
  40. package/dist/git/providers/config.d.ts +6 -1
  41. package/dist/git/providers/config.d.ts.map +1 -1
  42. package/dist/git/providers/diff.d.ts +2 -0
  43. package/dist/git/providers/diff.d.ts.map +1 -1
  44. package/dist/git/providers/operations.d.ts +39 -10
  45. package/dist/git/providers/operations.d.ts.map +1 -1
  46. package/dist/git/providers/pausedOperations.d.ts +3 -1
  47. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  48. package/dist/git/providers/refs.d.ts +23 -2
  49. package/dist/git/providers/refs.d.ts.map +1 -1
  50. package/dist/git/providers/revision.d.ts +1 -1
  51. package/dist/git/providers/revision.d.ts.map +1 -1
  52. package/dist/git/providers/staging.d.ts +18 -0
  53. package/dist/git/providers/staging.d.ts.map +1 -1
  54. package/dist/git/providers/status.d.ts +4 -1
  55. package/dist/git/providers/status.d.ts.map +1 -1
  56. package/dist/git/remotes/azure-devops.d.ts.map +1 -1
  57. package/dist/git/remotes/azure-devops.js.map +1 -1
  58. package/dist/git/{exec.types.d.ts → run.types.d.ts} +22 -3
  59. package/dist/git/run.types.d.ts.map +1 -0
  60. package/dist/git/run.types.js +2 -0
  61. package/dist/git/run.types.js.map +1 -0
  62. package/dist/git/service.d.ts.map +1 -1
  63. package/dist/git/service.js.map +1 -1
  64. package/dist/git/utils/autolink.utils.d.ts.map +1 -1
  65. package/dist/git/utils/autolink.utils.js.map +1 -1
  66. package/dist/git/utils/blame.utils.d.ts.map +1 -1
  67. package/dist/git/utils/blame.utils.js.map +1 -1
  68. package/dist/git/utils/conflictResolution.utils.d.ts +6 -0
  69. package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -0
  70. package/dist/git/utils/conflictResolution.utils.js +25 -0
  71. package/dist/git/utils/conflictResolution.utils.js.map +1 -0
  72. package/dist/git/utils/fileStatus.utils.d.ts +2 -1
  73. package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
  74. package/dist/git/utils/fileStatus.utils.js +4 -0
  75. package/dist/git/utils/fileStatus.utils.js.map +1 -1
  76. package/dist/git/utils/search.utils.d.ts.map +1 -1
  77. package/dist/git/utils/search.utils.js +3 -0
  78. package/dist/git/utils/search.utils.js.map +1 -1
  79. package/dist/git/utils/sorting.d.ts +14 -0
  80. package/dist/git/utils/sorting.d.ts.map +1 -1
  81. package/dist/git/utils/sorting.js +34 -0
  82. package/dist/git/utils/sorting.js.map +1 -1
  83. package/dist/git/utils/status.utils.d.ts.map +1 -1
  84. package/dist/git/utils/status.utils.js.map +1 -1
  85. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  86. package/dist/git/watching/classifyChange.js +8 -0
  87. package/dist/git/watching/classifyChange.js.map +1 -1
  88. package/dist/git/watching/gitIgnoreFilter.js +1 -1
  89. package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
  90. package/dist/git/watching/initWatcher.d.ts.map +1 -1
  91. package/dist/git/watching/initWatcher.js.map +1 -1
  92. package/dist/git/watching/watchGroup.d.ts.map +1 -1
  93. package/dist/git/watching/watchGroup.js.map +1 -1
  94. package/dist/git/watching/watchService.d.ts.map +1 -1
  95. package/dist/git/watching/watchService.js +24 -4
  96. package/dist/git/watching/watchService.js.map +1 -1
  97. package/dist/git/watching/watchSession.d.ts.map +1 -1
  98. package/dist/git/watching/watchSession.js.map +1 -1
  99. package/dist/git-cli/cliGitProvider.js +1 -1
  100. package/dist/git-cli/cliGitProvider.js.map +1 -1
  101. package/dist/git-cli/exec/exec.types.d.ts +1 -1
  102. package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
  103. package/dist/git-cli/exec/git.d.ts +31 -6
  104. package/dist/git-cli/exec/git.d.ts.map +1 -1
  105. package/dist/git-cli/exec/git.js +70 -9
  106. package/dist/git-cli/exec/git.js.map +1 -1
  107. package/dist/git-cli/exec/gitQueue.d.ts +22 -6
  108. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  109. package/dist/git-cli/exec/gitQueue.js +88 -24
  110. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  111. package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
  112. package/dist/git-cli/parsers/blameParser.js.map +1 -1
  113. package/dist/git-cli/parsers/logParser.d.ts +1 -0
  114. package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
  115. package/dist/git-cli/parsers/logParser.js +4 -0
  116. package/dist/git-cli/parsers/logParser.js.map +1 -1
  117. package/dist/git-cli/parsers/refParser.d.ts +3 -30
  118. package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
  119. package/dist/git-cli/parsers/refParser.js +30 -30
  120. package/dist/git-cli/parsers/refParser.js.map +1 -1
  121. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  122. package/dist/git-cli/providers/blame.js +1 -1
  123. package/dist/git-cli/providers/blame.js.map +1 -1
  124. package/dist/git-cli/providers/branches.d.ts +17 -5
  125. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  126. package/dist/git-cli/providers/branches.js +245 -162
  127. package/dist/git-cli/providers/branches.js.map +1 -1
  128. package/dist/git-cli/providers/commits.d.ts +4 -0
  129. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  130. package/dist/git-cli/providers/commits.js +120 -35
  131. package/dist/git-cli/providers/commits.js.map +1 -1
  132. package/dist/git-cli/providers/config.d.ts +11 -2
  133. package/dist/git-cli/providers/config.d.ts.map +1 -1
  134. package/dist/git-cli/providers/config.js +36 -11
  135. package/dist/git-cli/providers/config.js.map +1 -1
  136. package/dist/git-cli/providers/contributors.d.ts.map +1 -1
  137. package/dist/git-cli/providers/contributors.js +7 -4
  138. package/dist/git-cli/providers/contributors.js.map +1 -1
  139. package/dist/git-cli/providers/diff.d.ts +2 -0
  140. package/dist/git-cli/providers/diff.d.ts.map +1 -1
  141. package/dist/git-cli/providers/diff.js +92 -20
  142. package/dist/git-cli/providers/diff.js.map +1 -1
  143. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  144. package/dist/git-cli/providers/graph.js +49 -28
  145. package/dist/git-cli/providers/graph.js.map +1 -1
  146. package/dist/git-cli/providers/operations.d.ts +30 -11
  147. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  148. package/dist/git-cli/providers/operations.js +146 -43
  149. package/dist/git-cli/providers/operations.js.map +1 -1
  150. package/dist/git-cli/providers/patch.d.ts.map +1 -1
  151. package/dist/git-cli/providers/patch.js +15 -30
  152. package/dist/git-cli/providers/patch.js.map +1 -1
  153. package/dist/git-cli/providers/pausedOperations.d.ts +3 -1
  154. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  155. package/dist/git-cli/providers/pausedOperations.js +13 -7
  156. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  157. package/dist/git-cli/providers/refs.d.ts +19 -2
  158. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  159. package/dist/git-cli/providers/refs.js +312 -9
  160. package/dist/git-cli/providers/refs.js.map +1 -1
  161. package/dist/git-cli/providers/remotes.js +4 -4
  162. package/dist/git-cli/providers/remotes.js.map +1 -1
  163. package/dist/git-cli/providers/revision.d.ts +1 -1
  164. package/dist/git-cli/providers/revision.d.ts.map +1 -1
  165. package/dist/git-cli/providers/revision.js +15 -11
  166. package/dist/git-cli/providers/revision.js.map +1 -1
  167. package/dist/git-cli/providers/staging.d.ts +8 -0
  168. package/dist/git-cli/providers/staging.d.ts.map +1 -1
  169. package/dist/git-cli/providers/staging.js +52 -8
  170. package/dist/git-cli/providers/staging.js.map +1 -1
  171. package/dist/git-cli/providers/stash.d.ts +0 -8
  172. package/dist/git-cli/providers/stash.d.ts.map +1 -1
  173. package/dist/git-cli/providers/stash.js +63 -119
  174. package/dist/git-cli/providers/stash.js.map +1 -1
  175. package/dist/git-cli/providers/status.d.ts +4 -1
  176. package/dist/git-cli/providers/status.d.ts.map +1 -1
  177. package/dist/git-cli/providers/status.js +10 -9
  178. package/dist/git-cli/providers/status.js.map +1 -1
  179. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  180. package/dist/git-cli/providers/tags.js +13 -9
  181. package/dist/git-cli/providers/tags.js.map +1 -1
  182. package/dist/git-cli/providers/worktrees.js +3 -3
  183. package/dist/git-cli/providers/worktrees.js.map +1 -1
  184. package/dist/ipc/discovery.d.ts +27 -0
  185. package/dist/ipc/discovery.d.ts.map +1 -0
  186. package/dist/ipc/discovery.js +38 -0
  187. package/dist/ipc/discovery.js.map +1 -0
  188. package/dist/ipc/ipcServer.d.ts +20 -0
  189. package/dist/ipc/ipcServer.d.ts.map +1 -0
  190. package/dist/ipc/ipcServer.js +162 -0
  191. package/dist/ipc/ipcServer.js.map +1 -0
  192. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +114 -0
  193. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -0
  194. package/dist/plus/agents/providers/claudeCodeProvider.js +1480 -0
  195. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -0
  196. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +36 -0
  197. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -0
  198. package/dist/plus/agents/providers/claudeCodeTranscript.js +171 -0
  199. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -0
  200. package/dist/plus/agents/sanitizePrompt.d.ts +15 -0
  201. package/dist/plus/agents/sanitizePrompt.d.ts.map +1 -0
  202. package/dist/plus/agents/sanitizePrompt.js +103 -0
  203. package/dist/plus/agents/sanitizePrompt.js.map +1 -0
  204. package/dist/plus/agents/stateMachine.d.ts +32 -0
  205. package/dist/plus/agents/stateMachine.d.ts.map +1 -0
  206. package/dist/plus/agents/stateMachine.js +180 -0
  207. package/dist/plus/agents/stateMachine.js.map +1 -0
  208. package/dist/plus/agents/types.d.ts +203 -0
  209. package/dist/plus/agents/types.d.ts.map +1 -0
  210. package/dist/plus/agents/types.js +49 -0
  211. package/dist/plus/agents/types.js.map +1 -0
  212. package/dist/plus/ai/constants.d.ts +2 -1
  213. package/dist/plus/ai/constants.d.ts.map +1 -1
  214. package/dist/plus/ai/constants.js +7 -0
  215. package/dist/plus/ai/constants.js.map +1 -1
  216. package/dist/plus/ai/errors.d.ts +4 -1
  217. package/dist/plus/ai/errors.d.ts.map +1 -1
  218. package/dist/plus/ai/errors.js +38 -0
  219. package/dist/plus/ai/errors.js.map +1 -1
  220. package/dist/plus/ai/models/model.d.ts +1 -1
  221. package/dist/plus/ai/models/model.d.ts.map +1 -1
  222. package/dist/plus/ai/models/model.js.map +1 -1
  223. package/dist/plus/ai/models/promptTemplates.d.ts +28 -2
  224. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  225. package/dist/plus/ai/models/results.d.ts +28 -0
  226. package/dist/plus/ai/models/results.d.ts.map +1 -1
  227. package/dist/plus/ai/prompts.d.ts +4 -0
  228. package/dist/plus/ai/prompts.d.ts.map +1 -1
  229. package/dist/plus/ai/prompts.js +167 -1
  230. package/dist/plus/ai/prompts.js.map +1 -1
  231. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  232. package/dist/plus/ai/utils/ai.utils.js +2 -0
  233. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  234. package/dist/plus/ai/utils/results.utils.d.ts +3 -0
  235. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  236. package/dist/plus/ai/utils/results.utils.js +75 -0
  237. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  238. package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
  239. package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
  240. package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
  241. package/dist/plus/git-github/api/github.d.ts +10 -1
  242. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  243. package/dist/plus/git-github/api/github.js +156 -49
  244. package/dist/plus/git-github/api/github.js.map +1 -1
  245. package/dist/plus/git-github/api/types.d.ts +8 -0
  246. package/dist/plus/git-github/api/types.d.ts.map +1 -1
  247. package/dist/plus/git-github/models.d.ts +1 -1
  248. package/dist/plus/git-github/models.d.ts.map +1 -1
  249. package/dist/plus/git-github/models.js.map +1 -1
  250. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  251. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  252. package/dist/plus/git-github/providers/github/branches.d.ts +5 -1
  253. package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
  254. package/dist/plus/git-github/providers/github/branches.js +60 -22
  255. package/dist/plus/git-github/providers/github/branches.js.map +1 -1
  256. package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
  257. package/dist/plus/git-github/providers/github/commits.js +144 -92
  258. package/dist/plus/git-github/providers/github/commits.js.map +1 -1
  259. package/dist/plus/git-github/providers/github/diff.d.ts +3 -1
  260. package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
  261. package/dist/plus/git-github/providers/github/diff.js +23 -9
  262. package/dist/plus/git-github/providers/github/diff.js.map +1 -1
  263. package/dist/plus/git-github/providers/github/refs.d.ts +9 -1
  264. package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
  265. package/dist/plus/git-github/providers/github/refs.js +38 -13
  266. package/dist/plus/git-github/providers/github/refs.js.map +1 -1
  267. package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
  268. package/dist/plus/git-github/providers/github/revision.js +1 -2
  269. package/dist/plus/git-github/providers/github/revision.js.map +1 -1
  270. package/dist/plus/git-github/providers/github/status.d.ts +4 -1
  271. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  272. package/dist/plus/git-github/providers/github/status.js +1 -1
  273. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  274. package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
  275. package/dist/plus/git-github/providers/github/tags.js +35 -36
  276. package/dist/plus/git-github/providers/github/tags.js.map +1 -1
  277. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
  278. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
  279. package/dist/utils/color.d.ts.map +1 -1
  280. package/dist/utils/color.js.map +1 -1
  281. package/dist/utils/decorators/log.js +1 -1
  282. package/dist/utils/decorators/log.js.map +1 -1
  283. package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
  284. package/dist/utils/decorators/sequentialize.js +4 -2
  285. package/dist/utils/decorators/sequentialize.js.map +1 -1
  286. package/dist/utils/decorators/serializable.d.ts.map +1 -1
  287. package/dist/utils/decorators/serializable.js.map +1 -1
  288. package/dist/utils/dedupedAsyncCache.d.ts +37 -0
  289. package/dist/utils/dedupedAsyncCache.d.ts.map +1 -0
  290. package/dist/utils/dedupedAsyncCache.js +68 -0
  291. package/dist/utils/dedupedAsyncCache.js.map +1 -0
  292. package/dist/utils/diff.d.ts +2 -0
  293. package/dist/utils/diff.d.ts.map +1 -0
  294. package/dist/utils/diff.js +53 -0
  295. package/dist/utils/diff.js.map +1 -0
  296. package/dist/utils/disposable.d.ts.map +1 -1
  297. package/dist/utils/disposable.js.map +1 -1
  298. package/dist/utils/env/node/base64.js.map +1 -1
  299. package/dist/utils/env/node/exec.d.ts.map +1 -1
  300. package/dist/utils/env/node/exec.js.map +1 -1
  301. package/dist/utils/error.d.ts.map +1 -1
  302. package/dist/utils/error.js.map +1 -1
  303. package/dist/utils/formatter.d.ts.map +1 -1
  304. package/dist/utils/formatter.js +4 -10
  305. package/dist/utils/formatter.js.map +1 -1
  306. package/dist/utils/iterable.d.ts.map +1 -1
  307. package/dist/utils/iterable.js.map +1 -1
  308. package/dist/utils/logger.d.ts.map +1 -1
  309. package/dist/utils/logger.js.map +1 -1
  310. package/dist/utils/lruMap.d.ts +49 -0
  311. package/dist/utils/lruMap.d.ts.map +1 -0
  312. package/dist/utils/lruMap.js +103 -0
  313. package/dist/utils/lruMap.js.map +1 -0
  314. package/dist/utils/markdown.d.ts.map +1 -1
  315. package/dist/utils/markdown.js.map +1 -1
  316. package/dist/utils/mru.d.ts.map +1 -1
  317. package/dist/utils/mru.js.map +1 -1
  318. package/dist/utils/path.d.ts.map +1 -1
  319. package/dist/utils/path.js.map +1 -1
  320. package/dist/utils/promise.d.ts +1 -0
  321. package/dist/utils/promise.d.ts.map +1 -1
  322. package/dist/utils/promise.js +17 -0
  323. package/dist/utils/promise.js.map +1 -1
  324. package/dist/utils/promiseCache.d.ts +10 -0
  325. package/dist/utils/promiseCache.d.ts.map +1 -1
  326. package/dist/utils/promiseCache.js +22 -0
  327. package/dist/utils/promiseCache.js.map +1 -1
  328. package/dist/utils/string.d.ts.map +1 -1
  329. package/dist/utils/string.js.map +1 -1
  330. package/dist/utils/uri.d.ts.map +1 -1
  331. package/dist/utils/uri.js.map +1 -1
  332. package/dist/utils/version.d.ts +14 -0
  333. package/dist/utils/version.d.ts.map +1 -1
  334. package/dist/utils/version.js +48 -0
  335. package/dist/utils/version.js.map +1 -1
  336. package/package.json +13 -1
  337. package/src/git/cache.ts +309 -29
  338. package/src/git/context.ts +11 -2
  339. package/src/git/models/branch.ts +1 -0
  340. package/src/git/models/commit.ts +2 -17
  341. package/src/git/models/graph.ts +2 -4
  342. package/src/git/models/reference.ts +33 -0
  343. package/src/git/models/remote.ts +1 -0
  344. package/src/git/models/repository.ts +44 -6
  345. package/src/git/models/search.ts +2 -2
  346. package/src/git/models/worktree.ts +10 -2
  347. package/src/git/parsers/diffParser.ts +9 -44
  348. package/src/git/providers/branches.ts +25 -4
  349. package/src/git/providers/commits.ts +7 -0
  350. package/src/git/providers/config.ts +4 -0
  351. package/src/git/providers/diff.ts +8 -2
  352. package/src/git/providers/operations.ts +54 -3
  353. package/src/git/providers/pausedOperations.ts +1 -0
  354. package/src/git/providers/refs.ts +32 -3
  355. package/src/git/providers/revision.ts +5 -1
  356. package/src/git/providers/staging.ts +14 -0
  357. package/src/git/providers/status.ts +6 -1
  358. package/src/git/remotes/azure-devops.ts +2 -0
  359. package/src/git/{exec.types.ts → run.types.ts} +22 -2
  360. package/src/git/service.ts +1 -0
  361. package/src/git/utils/autolink.utils.ts +1 -0
  362. package/src/git/utils/blame.utils.ts +2 -0
  363. package/src/git/utils/conflictResolution.utils.ts +31 -0
  364. package/src/git/utils/fileStatus.utils.ts +7 -1
  365. package/src/git/utils/search.utils.ts +2 -0
  366. package/src/git/utils/sorting.ts +38 -0
  367. package/src/git/utils/status.utils.ts +1 -0
  368. package/src/git/watching/classifyChange.ts +9 -0
  369. package/src/git/watching/gitIgnoreFilter.ts +2 -2
  370. package/src/git/watching/initWatcher.ts +2 -0
  371. package/src/git/watching/watchGroup.ts +3 -0
  372. package/src/git/watching/watchService.ts +38 -5
  373. package/src/git/watching/watchSession.ts +10 -0
  374. package/src/git-cli/cliGitProvider.ts +1 -1
  375. package/src/git-cli/exec/exec.types.ts +2 -2
  376. package/src/git-cli/exec/git.ts +76 -23
  377. package/src/git-cli/exec/gitQueue.ts +98 -25
  378. package/src/git-cli/parsers/blameParser.ts +1 -0
  379. package/src/git-cli/parsers/logParser.ts +6 -1
  380. package/src/git-cli/parsers/refParser.ts +33 -34
  381. package/src/git-cli/providers/blame.ts +2 -1
  382. package/src/git-cli/providers/branches.ts +341 -196
  383. package/src/git-cli/providers/commits.ts +145 -46
  384. package/src/git-cli/providers/config.ts +50 -16
  385. package/src/git-cli/providers/contributors.ts +7 -12
  386. package/src/git-cli/providers/diff.ts +107 -20
  387. package/src/git-cli/providers/graph.ts +58 -29
  388. package/src/git-cli/providers/operations.ts +253 -57
  389. package/src/git-cli/providers/patch.ts +16 -37
  390. package/src/git-cli/providers/pausedOperations.ts +14 -6
  391. package/src/git-cli/providers/refs.ts +274 -11
  392. package/src/git-cli/providers/remotes.ts +4 -4
  393. package/src/git-cli/providers/revision.ts +22 -15
  394. package/src/git-cli/providers/staging.ts +51 -8
  395. package/src/git-cli/providers/stash.ts +67 -134
  396. package/src/git-cli/providers/status.ts +21 -10
  397. package/src/git-cli/providers/tags.ts +18 -19
  398. package/src/git-cli/providers/worktrees.ts +3 -3
  399. package/src/ipc/discovery.ts +56 -0
  400. package/src/ipc/ipcServer.ts +171 -0
  401. package/src/plus/agents/providers/claudeCodeProvider.ts +1782 -0
  402. package/src/plus/agents/providers/claudeCodeTranscript.ts +214 -0
  403. package/src/plus/agents/sanitizePrompt.ts +109 -0
  404. package/src/plus/agents/stateMachine.ts +197 -0
  405. package/src/plus/agents/types.ts +277 -0
  406. package/src/plus/ai/constants.ts +8 -0
  407. package/src/plus/ai/errors.ts +40 -0
  408. package/src/plus/ai/models/model.ts +1 -0
  409. package/src/plus/ai/models/promptTemplates.ts +42 -0
  410. package/src/plus/ai/models/results.ts +30 -0
  411. package/src/plus/ai/prompts.ts +171 -1
  412. package/src/plus/ai/utils/ai.utils.ts +2 -0
  413. package/src/plus/ai/utils/results.utils.ts +101 -0
  414. package/src/plus/ai/utils/truncation.utils.ts +3 -1
  415. package/src/plus/git-github/api/github.ts +199 -53
  416. package/src/plus/git-github/api/types.ts +15 -0
  417. package/src/plus/git-github/models.ts +1 -1
  418. package/src/plus/git-github/providers/github/blame.ts +2 -0
  419. package/src/plus/git-github/providers/github/branches.ts +75 -33
  420. package/src/plus/git-github/providers/github/commits.ts +231 -160
  421. package/src/plus/git-github/providers/github/diff.ts +35 -21
  422. package/src/plus/git-github/providers/github/refs.ts +57 -22
  423. package/src/plus/git-github/providers/github/revision.ts +1 -2
  424. package/src/plus/git-github/providers/github/status.ts +6 -1
  425. package/src/plus/git-github/providers/github/tags.ts +61 -62
  426. package/src/plus/git-github/providers/githubGitProvider.ts +1 -0
  427. package/src/utils/color.ts +2 -0
  428. package/src/utils/decorators/log.ts +1 -1
  429. package/src/utils/decorators/sequentialize.ts +8 -6
  430. package/src/utils/decorators/serializable.ts +1 -0
  431. package/src/utils/dedupedAsyncCache.ts +74 -0
  432. package/src/utils/diff.ts +61 -0
  433. package/src/utils/disposable.ts +2 -0
  434. package/src/utils/env/node/base64.ts +1 -1
  435. package/src/utils/env/node/exec.ts +4 -2
  436. package/src/utils/error.ts +1 -0
  437. package/src/utils/formatter.ts +4 -11
  438. package/src/utils/iterable.ts +4 -1
  439. package/src/utils/logger.ts +1 -0
  440. package/src/utils/lruMap.ts +112 -0
  441. package/src/utils/markdown.ts +1 -0
  442. package/src/utils/mru.ts +2 -0
  443. package/src/utils/path.ts +1 -0
  444. package/src/utils/promise.ts +22 -0
  445. package/src/utils/promiseCache.ts +24 -0
  446. package/src/utils/string.ts +2 -0
  447. package/src/utils/uri.ts +1 -0
  448. package/src/utils/version.ts +49 -0
  449. package/dist/git/exec.types.d.ts.map +0 -1
  450. package/dist/git/exec.types.js +0 -2
  451. package/dist/git/exec.types.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -6,11 +6,35 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.0] - 2026-05-27
10
+
11
+ ## [0.2.0] - 2026-05-01
12
+
13
+ ### Added
14
+
15
+ - Adds sub-provider methods: `commit`, `getParsedDiff`, `createStash`, `stageAll`, `unstageAll`, `validateRepo`; SHA + index-restore on `applyStash`; `untracked` option on existence and diff queries (git, plus/git-github)
16
+ - Adds a `'lastFetched'` change type, `onCurrentBranchAgentActivity`, `BranchMetadata.agentLastActivityAt`, and `branch.<name>.gk-agent-last-activity` config (git)
17
+ - Adds `LruMap`, `compareByVersion`/`compareByVersionDescending`, and a `quiet` option on `exec` (utils)
18
+ - Adds `AbortSignal` cancellation in the git-cli command queue and signing-error handling — `classifySigningError`, `SigningError`, `hooks.commits.onSigningFailed`, `source?` — on `commit`/`merge`/`pull`/`rebase`/`revert`/`cherryPick` (git, git-cli)
19
+
20
+ ### Changed
21
+
22
+ - `merge`/`rebase`/`cherryPick`/`revert` return structured results with affected files; diff queries parse `--numstat` + `--summary` via `parseDiffNumStatAndSummary` (git)
23
+ - Improves caching: tiered TTLs (~5 min SHAs / ~60 s refs), lazy stash parent-timestamp cache, tiered branch-overview cache, parallel merge-base / contributor fetches, soft-invalidation + aggregate `AbortSignal` in `PromiseCache` (git, git-cli, utils, plus/git-github)
24
+ - Coalesces working-tree change events on `Repository`; expands graph reachability to local + remote branches + tags (git)
25
+ - Tightens filtering: stash reachability via git's branch metadata, untracked excluded from non-HEAD diffs, merge-base skipped when local matches upstream SHA (git-cli)
26
+
27
+ ### Fixed
28
+
29
+ - Fixes corrupted output in async `Formatter` calls (utils)
30
+
9
31
  ## [0.1.0]
10
32
 
11
33
  ### Added
12
34
 
13
35
  - Initial release. Bundles `@gitlens/utils`, `@gitlens/git`, `@gitlens/git-cli`, `@gitlens/ai`, and `@gitlens/git-github` into a single core npm package with subpath exports.
14
36
 
15
- [unreleased]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.1.0...HEAD
37
+ [unreleased]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.3.0...HEAD
38
+ [0.3.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.2.0...gitkraken:releases/core/v0.3.0
39
+ [0.2.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.1.0...gitkraken:releases/core/v0.2.0
16
40
  [0.1.0]: https://github.com/gitkraken/vscode-gitlens/releases/tag/releases/core/v0.1.0
@@ -3,15 +3,15 @@ import type { PromiseOrValue } from '../utils/promise.js';
3
3
  import type { CacheController } from '../utils/promiseCache.js';
4
4
  import { PromiseCache, PromiseMap, RepoPromiseCacheMap } from '../utils/promiseCache.js';
5
5
  import type { Uri } from '../utils/uri.js';
6
- import type { GitResult } from './exec.types.js';
7
6
  import type { ProgressiveGitBlame } from './models/blame.js';
8
- import type { GitBranch } from './models/branch.js';
7
+ import type { BranchMetadata, GitBranch } from './models/branch.js';
8
+ import type { GitCommit } from './models/commit.js';
9
9
  import type { GitContributor, GitContributorsStats } from './models/contributor.js';
10
10
  import type { ParsedGitDiffHunks } from './models/diff.js';
11
11
  import type { GitLog } from './models/log.js';
12
12
  import type { ConflictDetectionResult } from './models/mergeConflicts.js';
13
13
  import type { GitPausedOperationStatus } from './models/pausedOperationStatus.js';
14
- import type { GitBranchReference } from './models/reference.js';
14
+ import type { GitBranchReference, GitRefTip, RefRecord } from './models/reference.js';
15
15
  import type { GitRemote } from './models/remote.js';
16
16
  import type { RemoteProvider } from './models/remoteProvider.js';
17
17
  import type { GitDir, RepositoryChange } from './models/repository.js';
@@ -19,16 +19,25 @@ import type { GitStash } from './models/stash.js';
19
19
  import type { GitTag } from './models/tag.js';
20
20
  import type { GitUser } from './models/user.js';
21
21
  import type { GitWorktree } from './models/worktree.js';
22
+ import type { BranchContributionsOverview, GitBranchMergedStatus } from './providers/branches.js';
22
23
  import type { GitCommitReachability, LeftRightCommitCountResult } from './providers/commits.js';
23
24
  import type { GitContributorsResult } from './providers/contributors.js';
24
25
  import type { ResolvedRevision } from './providers/revision.js';
26
+ import type { GitResult } from './run.types.js';
25
27
  import type { GitIgnoreFilter } from './watching/gitIgnoreFilter.js';
26
28
  type RepoPath = string;
27
29
  /** Cache types that are keyed by file path within a repo — support per-file clearing */
28
30
  export type UriScopedCachedGitTypes = 'blame' | 'diff' | 'fileLog';
29
31
  export declare function areUriScopedCachedGitTypes(types: string[]): types is UriScopedCachedGitTypes[];
30
- export type CachedGitTypes = UriScopedCachedGitTypes | 'branch' | 'branches' | 'config' | 'contributors' | 'gitignore' | 'gkConfig' | 'providers' | 'remotes' | 'stashes' | 'status' | 'tags' | 'tracking' | 'worktrees';
32
+ export type CachedGitTypes = UriScopedCachedGitTypes | 'branch' | 'branches' | 'config' | 'contributors' | 'gitignore' | 'gkConfig' | 'lastFetched' | 'providers' | 'remotes' | 'stashes' | 'status' | 'tags' | 'tracking' | 'worktrees';
31
33
  export type ConflictDetectionCacheKey = `apply:${string}:${string}:${string}` | `merge:${string}:${string}`;
34
+ /**
35
+ * Downstream caches that `deleteGkConfig` may invalidate when a `branch.<ref>.gk-...` key changes.
36
+ * Callers performing a "self-write" (where the value being written matches what they just resolved,
37
+ * so the about-to-be-evicted entry is exactly the entry they want to preserve) can opt out by
38
+ * naming the targets to skip via `skipInvalidation`.
39
+ */
40
+ export type GkConfigInvalidationTarget = 'branchOverviews' | 'baseBranchName';
32
41
  export declare class Cache implements Disposable {
33
42
  private _caches;
34
43
  private _commonPathRegistry;
@@ -40,7 +49,11 @@ export declare class Cache implements Disposable {
40
49
  get blame(): RepoPromiseCacheMap<string, ProgressiveGitBlame | undefined>;
41
50
  get diff(): RepoPromiseCacheMap<string, ParsedGitDiffHunks | undefined>;
42
51
  get fileLog(): RepoPromiseCacheMap<string, GitLog | undefined>;
52
+ private get baseBranchName();
43
53
  get branch(): PromiseMap<RepoPath, GitBranch | undefined>;
54
+ get branchMergedStatus(): RepoPromiseCacheMap<string, GitBranchMergedStatus>;
55
+ private get branchMetadataMap();
56
+ private get branchOverviews();
44
57
  get branches(): PromiseMap<RepoPath, PagedResult<GitBranch>>;
45
58
  /**
46
59
  * Internal cache for raw shared branch data (keyed by commonPath)
@@ -65,13 +78,17 @@ export declare class Cache implements Disposable {
65
78
  get initialCommitSha(): PromiseMap<RepoPath, string | undefined>;
66
79
  get lastFetched(): PromiseCache<RepoPath, number | undefined>;
67
80
  get leftRightCommitCount(): RepoPromiseCacheMap<string, LeftRightCommitCountResult | undefined>;
68
- getLeftRightCommitCount(repoPath: string, key: string, factory: () => PromiseOrValue<LeftRightCommitCountResult | undefined>): Promise<LeftRightCommitCountResult | undefined>;
81
+ get commit(): RepoPromiseCacheMap<string, GitCommit | undefined>;
82
+ get commitCount(): RepoPromiseCacheMap<string, number | undefined>;
83
+ get mergeBase(): RepoPromiseCacheMap<string, string | undefined>;
69
84
  get logShas(): RepoPromiseCacheMap<string, string[]>;
70
85
  get pausedOperationStatus(): PromiseMap<RepoPath, GitPausedOperationStatus | undefined>;
71
86
  get resolvedRevisions(): RepoPromiseCacheMap<string, ResolvedRevision>;
87
+ get refs(): PromiseMap<RepoPath, RefRecord[]>;
88
+ get refTips(): PromiseMap<RepoPath, GitRefTip[]>;
72
89
  get reachability(): RepoPromiseCacheMap<string, GitCommitReachability | undefined>;
73
90
  get remotes(): PromiseMap<RepoPath, GitRemote[]>;
74
- get stashes(): PromiseMap<RepoPath, GitStash>;
91
+ get stashes(): RepoPromiseCacheMap<string, GitStash>;
75
92
  get tags(): PromiseMap<RepoPath, PagedResult<GitTag>>;
76
93
  get fileExistence(): RepoPromiseCacheMap<string, boolean>;
77
94
  get ignoreRevsFile(): PromiseCache<string, boolean>;
@@ -112,7 +129,21 @@ export declare class Cache implements Disposable {
112
129
  deleteConfig(repoPath: string | undefined, key: string): void;
113
130
  getGkConfig(repoPath: string, key: string, factory: () => PromiseOrValue<string | undefined>): Promise<string | undefined>;
114
131
  getGkConfigRegex(repoPath: string, pattern: string, factory: () => PromiseOrValue<Map<string, string>>): Promise<Map<string, string>>;
115
- deleteGkConfig(repoPath: string, key: string): void;
132
+ /**
133
+ * @param options.skipInvalidation Downstream caches the caller wants preserved despite this
134
+ * write. Use when the value being written is exactly what was just resolved — e.g. the Tier 2
135
+ * `storeMergeTargetBranchName` self-write inside `getBranchContributionsOverview` (skip
136
+ * `'branchOverviews'`) or the Tier 3 `storeBaseBranchName` self-write inside `getBaseBranchName`
137
+ * (skip both `'baseBranchName'` and `'branchOverviews'`). The upstream caches (`gkConfigKeys`,
138
+ * `gkConfigPatterns`) always invalidate so subsequent reads of this key see the new value.
139
+ */
140
+ deleteGkConfig(repoPath: string, key: string, options?: {
141
+ skipInvalidation?: readonly GkConfigInvalidationTarget[];
142
+ }): void;
143
+ getBranchOverview(repoPath: string, cacheKey: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<BranchContributionsOverview | undefined>, options?: {
144
+ accessTTL?: number;
145
+ cancellation?: AbortSignal;
146
+ }): Promise<BranchContributionsOverview | undefined>;
116
147
  getContributors(repoPath: string, cacheKey: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitContributorsResult>, options?: {
117
148
  accessTTL?: number;
118
149
  cancellation?: AbortSignal;
@@ -121,14 +152,23 @@ export declare class Cache implements Disposable {
121
152
  accessTTL?: number;
122
153
  cancellation?: AbortSignal;
123
154
  }): Promise<GitContributor[]>;
124
- getContributorsStats(repoPath: string, cacheKey: string, factory: (commonPath: string) => PromiseOrValue<GitContributorsStats | undefined>, options?: {
155
+ getContributorsStats(repoPath: string, cacheKey: string, factory: (commonPath: string, cancellation?: AbortSignal) => PromiseOrValue<GitContributorsStats | undefined>, options?: {
125
156
  accessTTL?: number;
157
+ cancellation?: AbortSignal;
126
158
  }): Promise<GitContributorsStats | undefined>;
159
+ getBaseBranchName(repoPath: string, ref: string, factory: (commonPath: string, cancellation?: AbortSignal) => PromiseOrValue<string | undefined>, cancellation?: AbortSignal): Promise<string | undefined>;
160
+ getBranchMergedStatus(repoPath: string, cacheKey: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitBranchMergedStatus>, cancellation?: AbortSignal): Promise<GitBranchMergedStatus>;
161
+ getBranchMetadataMap(repoPath: string, factory: (commonPath: string) => PromiseOrValue<Map<string, BranchMetadata>>): Promise<Map<string, BranchMetadata>>;
127
162
  getDefaultBranchName(repoPath: string, remote: string, factory: (commonPath: string) => PromiseOrValue<string | undefined>): Promise<string | undefined>;
128
163
  getInitialCommitSha(repoPath: string, factory: (commonPath: string) => PromiseOrValue<string | undefined>): Promise<string | undefined>;
129
164
  getLastFetchedTimestamp(repoPath: string, factory: (commonPath: string) => PromiseOrValue<number | undefined>): Promise<number | undefined>;
165
+ getRefs(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<RefRecord[]>, cancellation?: AbortSignal): Promise<RefRecord[]>;
166
+ getRefTips(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitRefTip[]>, cancellation?: AbortSignal): Promise<GitRefTip[]>;
130
167
  getRemotes(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitRemote[]>, cancellation?: AbortSignal): Promise<GitRemote[]>;
131
- getStash(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitStash>, cancellation?: AbortSignal): Promise<GitStash>;
168
+ getStash(repoPath: string, cacheKey: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitStash>, options?: {
169
+ accessTTL?: number;
170
+ cancellation?: AbortSignal;
171
+ }): Promise<GitStash>;
132
172
  getTags(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<PagedResult<GitTag>>, cancellation?: AbortSignal): Promise<PagedResult<GitTag>>;
133
173
  getWorktrees(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitWorktree[]>, cancellation?: AbortSignal): Promise<GitWorktree[]>;
134
174
  private getSharedOrCreate;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/git/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/git/cache.ts"],"names":[],"mappings":"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"}
package/dist/git/cache.js CHANGED
@@ -10,13 +10,24 @@ import { debug } from '../utils/decorators/log.js';
10
10
  import { invalidateMemoized } from '../utils/decorators/memoize.js';
11
11
  import { normalizePath } from '../utils/path.js';
12
12
  import { PromiseCache, PromiseMap, RepoPromiseCacheMap } from '../utils/promiseCache.js';
13
+ import { getBranchId } from './utils/branch.utils.js';
14
+ import { createReference } from './utils/reference.utils.js';
13
15
  import { getCommonRepositoryPath, getRepositoryOrWorktreePath } from './utils/repository.utils.js';
14
16
  const uriScopedCachedGitTypes = ['blame', 'diff', 'fileLog'];
15
17
  export function areUriScopedCachedGitTypes(types) {
16
18
  return types.every(t => uriScopedCachedGitTypes.includes(t));
17
19
  }
20
+ /**
21
+ * gkConfig keys that participate in the `branchOverviews` cache's mergeTarget/mergeBase lineage.
22
+ * Capture group 1 is the ref name (which may itself contain `.`/`/`).
23
+ */
24
+ const branchOverviewGkConfigKeysRegex = /^branch\.(.+)\.(?:gk-merge-(?:base|target(?:-user)?)|gk-target-base)$/;
18
25
  /** Compile-time enforced: adding a key to SharedCaches without listing it here is a type error */
19
26
  const sharedCacheKeys = new Set(exhaustiveArray()([
27
+ 'baseBranchName',
28
+ 'branchMergedStatus',
29
+ 'branchMetadataMap',
30
+ 'branchOverviews',
20
31
  'branches',
21
32
  'configKeys',
22
33
  'configPatterns',
@@ -28,7 +39,10 @@ const sharedCacheKeys = new Set(exhaustiveArray()([
28
39
  'gkConfigKeys',
29
40
  'gkConfigPatterns',
30
41
  'initialCommitSha',
42
+ 'lastFetched',
31
43
  'logShas',
44
+ 'refs',
45
+ 'refTips',
32
46
  'remotes',
33
47
  'sharedBranches',
34
48
  'stashes',
@@ -37,13 +51,20 @@ const sharedCacheKeys = new Set(exhaustiveArray()([
37
51
  ]));
38
52
  function createEmptyCaches() {
39
53
  return {
54
+ baseBranchName: undefined,
40
55
  bestRemotes: undefined,
41
56
  blame: undefined,
42
57
  branch: undefined,
58
+ branchMergedStatus: undefined,
59
+ branchMetadataMap: undefined,
60
+ branchOverviews: undefined,
43
61
  branches: undefined,
62
+ commit: undefined,
63
+ commitCount: undefined,
44
64
  fileExistence: undefined,
45
65
  ignoreRevsFile: undefined,
46
66
  leftRightCommitCount: undefined,
67
+ mergeBase: undefined,
47
68
  configKeys: undefined,
48
69
  configPatterns: undefined,
49
70
  conflictDetection: undefined,
@@ -66,6 +87,8 @@ function createEmptyCaches() {
66
87
  pausedOperationStatus: undefined,
67
88
  resolvedRevisions: undefined,
68
89
  reachability: undefined,
90
+ refs: undefined,
91
+ refTips: undefined,
69
92
  remotes: undefined,
70
93
  sharedBranches: undefined,
71
94
  stashes: undefined,
@@ -106,9 +129,23 @@ export class Cache {
106
129
  capacity: 50,
107
130
  }));
108
131
  }
132
+ get baseBranchName() {
133
+ return (this._caches.baseBranchName ??= new RepoPromiseCacheMap());
134
+ }
109
135
  get branch() {
110
136
  return (this._caches.branch ??= new PromiseMap());
111
137
  }
138
+ get branchMergedStatus() {
139
+ return (this._caches.branchMergedStatus ??= new RepoPromiseCacheMap({
140
+ createTTL: 1000 * 60 * 5, // 5 minutes
141
+ }));
142
+ }
143
+ get branchMetadataMap() {
144
+ return (this._caches.branchMetadataMap ??= new PromiseMap());
145
+ }
146
+ get branchOverviews() {
147
+ return (this._caches.branchOverviews ??= new RepoPromiseCacheMap({ accessTTL: 1000 * 60 * 60 }));
148
+ }
112
149
  get branches() {
113
150
  return (this._caches.branches ??= new PromiseMap());
114
151
  }
@@ -192,13 +229,23 @@ export class Cache {
192
229
  capacity: 50, // Limit to 50 ref-pairs per repo
193
230
  }));
194
231
  }
195
- getLeftRightCommitCount(repoPath, key, factory) {
196
- const cached = this.leftRightCommitCount.get(repoPath, key);
197
- if (cached != null)
198
- return cached;
199
- const factoryPromise = Promise.resolve(factory());
200
- this.leftRightCommitCount.set(repoPath, key, factoryPromise);
201
- return factoryPromise;
232
+ get commit() {
233
+ return (this._caches.commit ??= new RepoPromiseCacheMap({
234
+ accessTTL: 1000 * 60 * 60, // 60 minutes
235
+ capacity: 100, // Limit to 100 commits per repo
236
+ }));
237
+ }
238
+ get commitCount() {
239
+ return (this._caches.commitCount ??= new RepoPromiseCacheMap({
240
+ accessTTL: 1000 * 60 * 60, // 60 minutes
241
+ capacity: 50,
242
+ }));
243
+ }
244
+ get mergeBase() {
245
+ return (this._caches.mergeBase ??= new RepoPromiseCacheMap({
246
+ accessTTL: 1000 * 60 * 60, // 60 minutes
247
+ capacity: 50,
248
+ }));
202
249
  }
203
250
  get logShas() {
204
251
  return (this._caches.logShas ??= new RepoPromiseCacheMap({
@@ -215,6 +262,12 @@ export class Cache {
215
262
  capacity: 100,
216
263
  }));
217
264
  }
265
+ get refs() {
266
+ return (this._caches.refs ??= new PromiseMap());
267
+ }
268
+ get refTips() {
269
+ return (this._caches.refTips ??= new PromiseMap());
270
+ }
218
271
  get reachability() {
219
272
  return (this._caches.reachability ??= new RepoPromiseCacheMap({
220
273
  accessTTL: 1000 * 60 * 60, // 60 minutes
@@ -225,7 +278,9 @@ export class Cache {
225
278
  return (this._caches.remotes ??= new PromiseMap());
226
279
  }
227
280
  get stashes() {
228
- return (this._caches.stashes ??= new PromiseMap());
281
+ return (this._caches.stashes ??= new RepoPromiseCacheMap({
282
+ accessTTL: 1000 * 60 * 60, // 60 minutes
283
+ }));
229
284
  }
230
285
  get tags() {
231
286
  return (this._caches.tags ??= new PromiseMap());
@@ -275,22 +330,37 @@ export class Cache {
275
330
  if (types.includes('fileLog')) {
276
331
  keysToClear.add('fileLog');
277
332
  }
278
- // Per-worktree branch caches (current branch / HEAD sensitive)
333
+ // Branch caches affected by HEAD/heads changes — `branchMergedStatus` is shared
334
+ // (the answer is invariant across worktrees of the same common repo) but is invalidated
335
+ // here because branch-tip movement in any worktree can change the merge status; the
336
+ // shared-clear logic below routes shared keys via commonPath.
279
337
  if (types.includes('branch') || types.includes('branches')) {
280
338
  keysToClear.add('branch');
339
+ keysToClear.add('branchMergedStatus');
340
+ keysToClear.add('branchOverviews');
341
+ // `commit`/`commitCount` are keyed by symbolic ref or SHA — symbolic-ref entries
342
+ // can drift when branches move; cascade-clear conservatively.
343
+ keysToClear.add('commit');
344
+ keysToClear.add('commitCount');
281
345
  keysToClear.add('conflictDetection');
282
346
  keysToClear.add('currentBranchReference');
283
347
  keysToClear.add('leftRightCommitCount');
348
+ // `mergeBase` keyed by ref-pairs — symbolic refs can move; cascade-clear.
349
+ keysToClear.add('mergeBase');
284
350
  keysToClear.add('reachability');
285
351
  keysToClear.add('resolvedRevisions');
286
352
  }
287
353
  // Shared branch caches (branch list, metadata)
288
354
  if (types.includes('branches')) {
355
+ keysToClear.add('baseBranchName');
356
+ keysToClear.add('branchMetadataMap');
289
357
  keysToClear.add('branches');
290
358
  keysToClear.add('sharedBranches');
291
359
  keysToClear.add('defaultBranchName');
292
360
  keysToClear.add('initialCommitSha');
293
361
  keysToClear.add('logShas');
362
+ keysToClear.add('refs');
363
+ keysToClear.add('refTips');
294
364
  }
295
365
  if (types.includes('config')) {
296
366
  keysToClear.add('configKeys');
@@ -300,6 +370,7 @@ export class Cache {
300
370
  keysToClear.add('gitDir');
301
371
  }
302
372
  if (types.includes('contributors')) {
373
+ keysToClear.add('branchOverviews');
303
374
  keysToClear.add('contributors');
304
375
  keysToClear.add('contributorsLite');
305
376
  keysToClear.add('contributorsStats');
@@ -310,6 +381,15 @@ export class Cache {
310
381
  if (types.includes('gkConfig')) {
311
382
  keysToClear.add('gkConfigKeys');
312
383
  keysToClear.add('gkConfigPatterns');
384
+ // Derived from `branch.<ref>.gk-merge-base`/`vscode-merge-base`; clear so external
385
+ // gkConfig mutations don't leave stale base-branch resolutions cached.
386
+ keysToClear.add('baseBranchName');
387
+ // Cached overviews are keyed by `${ref}|${mergeTarget}`; bulk gkConfig changes can
388
+ // affect any of the merge-target sources (stored, base, default), so clear all.
389
+ keysToClear.add('branchOverviews');
390
+ }
391
+ if (types.includes('lastFetched')) {
392
+ keysToClear.add('lastFetched');
313
393
  }
314
394
  if (types.includes('providers')) {
315
395
  keysToClear.add('remotes');
@@ -329,6 +409,8 @@ export class Cache {
329
409
  }
330
410
  if (types.includes('tags')) {
331
411
  keysToClear.add('tags');
412
+ keysToClear.add('refs');
413
+ keysToClear.add('refTips');
332
414
  }
333
415
  if (types.includes('tracking')) {
334
416
  keysToClear.add('fileExistence');
@@ -516,6 +598,9 @@ export class Cache {
516
598
  if (hasAny('gkConfig')) {
517
599
  types.add('gkConfig');
518
600
  }
601
+ if (hasAny('lastFetched')) {
602
+ types.add('lastFetched');
603
+ }
519
604
  if (hasAny('remoteProviders')) {
520
605
  types.add('providers');
521
606
  }
@@ -614,10 +699,47 @@ export class Cache {
614
699
  this.gkConfigPatterns.set(cacheKey, pattern, factoryPromise);
615
700
  return factoryPromise;
616
701
  }
617
- deleteGkConfig(repoPath, key) {
702
+ /**
703
+ * @param options.skipInvalidation Downstream caches the caller wants preserved despite this
704
+ * write. Use when the value being written is exactly what was just resolved — e.g. the Tier 2
705
+ * `storeMergeTargetBranchName` self-write inside `getBranchContributionsOverview` (skip
706
+ * `'branchOverviews'`) or the Tier 3 `storeBaseBranchName` self-write inside `getBaseBranchName`
707
+ * (skip both `'baseBranchName'` and `'branchOverviews'`). The upstream caches (`gkConfigKeys`,
708
+ * `gkConfigPatterns`) always invalidate so subsequent reads of this key see the new value.
709
+ */
710
+ deleteGkConfig(repoPath, key, options) {
618
711
  const cacheKey = this.getCommonPath(repoPath);
619
712
  this._caches.gkConfigKeys?.delete(cacheKey, key);
620
713
  this._caches.gkConfigPatterns?.delete(cacheKey);
714
+ const refMatch = key.match(branchOverviewGkConfigKeysRegex);
715
+ if (refMatch == null)
716
+ return;
717
+ const ref = refMatch[1];
718
+ const skip = options?.skipInvalidation;
719
+ // `getBaseBranchName` reads `branch.<ref>.gk-merge-base` and caches the resolved value
720
+ // per-ref. A write to that key must invalidate the cached base or Tier 3 of
721
+ // `getBranchContributionsOverview` will resolve `mergeTarget` against the pre-write value.
722
+ if (key.endsWith('.gk-merge-base') && !skip?.includes('baseBranchName')) {
723
+ this._caches.baseBranchName?.delete(cacheKey, ref);
724
+ }
725
+ if (skip?.includes('branchOverviews'))
726
+ return;
727
+ // When the change affects a branch's merge-target/base lineage, invalidate that branch's
728
+ // cached overviews so subsequent reads pick up the new stored value rather than stale data.
729
+ // `getBranchContributionsOverview` keys `branchOverviews` by `${ref}|${mergeTarget}`, so
730
+ // invalidate every entry for the affected ref regardless of which target it resolved to.
731
+ // Uses `invalidateByKeyPrefix` (not `deleteByKeyPrefix`) so an in-flight factory is still
732
+ // shared with new callers instead of triggering a duplicate fetch.
733
+ this._caches.branchOverviews?.invalidateByKeyPrefix(cacheKey, `${ref}|`);
734
+ }
735
+ async getBranchOverview(repoPath, cacheKey, factory, options) {
736
+ return this.getSharedOrCreateWithKey(this.branchOverviews, repoPath, cacheKey, factory, (data, newRepoPath) => data == null
737
+ ? data
738
+ : {
739
+ ...data,
740
+ repoPath: newRepoPath,
741
+ contributors: data.contributors.map(c => c.withRepoPath(newRepoPath)),
742
+ }, options);
621
743
  }
622
744
  async getContributors(repoPath, cacheKey, factory, options) {
623
745
  return this.getSharedOrCreateWithKey(this.contributors, repoPath, cacheKey, factory, (data, newRepoPath) => ({
@@ -631,6 +753,34 @@ export class Cache {
631
753
  getContributorsStats(repoPath, cacheKey, factory, options) {
632
754
  return this.getSharedSimpleWithKey(this.contributorsStats, repoPath, cacheKey, factory, options);
633
755
  }
756
+ getBaseBranchName(repoPath, ref, factory, cancellation) {
757
+ return this.getSharedSimpleWithKey(this.baseBranchName, repoPath, ref, factory, {
758
+ cancellation: cancellation,
759
+ });
760
+ }
761
+ getBranchMergedStatus(repoPath, cacheKey, factory, cancellation) {
762
+ return this.getSharedOrCreateWithKey(this.branchMergedStatus, repoPath, cacheKey, factory, (data, newRepoPath) => {
763
+ if (!data.merged)
764
+ return data;
765
+ if (data.localBranchOnly == null)
766
+ return data;
767
+ const lbo = data.localBranchOnly;
768
+ return {
769
+ ...data,
770
+ localBranchOnly: createReference(lbo.ref, newRepoPath, {
771
+ id: getBranchId(newRepoPath, lbo.remote, lbo.name),
772
+ refType: 'branch',
773
+ name: lbo.name,
774
+ remote: lbo.remote,
775
+ upstream: lbo.upstream,
776
+ sha: lbo.sha,
777
+ }),
778
+ };
779
+ }, { cancellation: cancellation });
780
+ }
781
+ getBranchMetadataMap(repoPath, factory) {
782
+ return this.getSharedSimple(this.branchMetadataMap, repoPath, factory);
783
+ }
634
784
  getDefaultBranchName(repoPath, remote, factory) {
635
785
  return this.getSharedSimpleWithKey(this.defaultBranchName, repoPath, remote, factory);
636
786
  }
@@ -640,17 +790,27 @@ export class Cache {
640
790
  getLastFetchedTimestamp(repoPath, factory) {
641
791
  return this.getSharedSimple(this.lastFetched, repoPath, factory);
642
792
  }
793
+ getRefs(repoPath, factory, cancellation) {
794
+ // Raw ref records are repoPath-agnostic (no per-worktree binding to remap), so we key only
795
+ // by commonPath and skip the per-worktree mapper that `getBranches`/`getTags` need.
796
+ const commonPath = this.getCommonPath(repoPath);
797
+ return this.refs.getOrCreate(commonPath, (cacheable, signal) => Promise.resolve(factory(commonPath, cacheable, signal)), cancellation);
798
+ }
799
+ getRefTips(repoPath, factory, cancellation) {
800
+ const commonPath = this.getCommonPath(repoPath);
801
+ return this.refTips.getOrCreate(commonPath, (cacheable, signal) => Promise.resolve(factory(commonPath, cacheable, signal)), cancellation);
802
+ }
643
803
  async getRemotes(repoPath, factory, cancellation) {
644
804
  return this.getSharedOrCreate(this.remotes, repoPath, factory, (data, newRepoPath) => data.map(r => r.withRepoPath(newRepoPath)), cancellation);
645
805
  }
646
- async getStash(repoPath, factory, cancellation) {
647
- return this.getSharedOrCreate(this.stashes, repoPath, factory, (data, newRepoPath) => ({
806
+ async getStash(repoPath, cacheKey, factory, options) {
807
+ return this.getSharedOrCreateWithKey(this.stashes, repoPath, cacheKey, factory, (data, newRepoPath) => ({
648
808
  repoPath: newRepoPath,
649
809
  stashes: new Map(Array.from(data.stashes.entries(), ([sha, s]) => [
650
810
  sha,
651
811
  s.withRepoPath(newRepoPath),
652
812
  ])),
653
- }), cancellation);
813
+ }), options);
654
814
  }
655
815
  async getTags(repoPath, factory, cancellation) {
656
816
  return this.getSharedOrCreate(this.tags, repoPath, factory, (data, newRepoPath) => ({ ...data, values: data.values.map(t => t.withRepoPath(newRepoPath)) }), cancellation);
@@ -747,7 +907,7 @@ export class Cache {
747
907
  }
748
908
  async getSharedSimpleWithKey(cache, repoPath, cacheKey, factory, options) {
749
909
  const commonPath = this.getCommonPath(repoPath);
750
- return cache.getOrCreate(commonPath, cacheKey, () => Promise.resolve(factory(commonPath)), options);
910
+ return cache.getOrCreate(commonPath, cacheKey, (_cacheable, signal) => Promise.resolve(factory(commonPath, signal)), options);
751
911
  }
752
912
  }
753
913
  __decorate([