@gitkraken/core-gitlens 0.2.0 → 0.3.1

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 (448) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/dist/git/cache.d.ts +38 -8
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +120 -55
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +19 -0
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/features.d.ts +1 -1
  10. package/dist/git/features.d.ts.map +1 -1
  11. package/dist/git/features.js +1 -0
  12. package/dist/git/features.js.map +1 -1
  13. package/dist/git/models/commit.d.ts.map +1 -1
  14. package/dist/git/models/commit.js.map +1 -1
  15. package/dist/git/models/graph.d.ts +96 -0
  16. package/dist/git/models/graph.d.ts.map +1 -1
  17. package/dist/git/models/graph.js +24 -1
  18. package/dist/git/models/graph.js.map +1 -1
  19. package/dist/git/models/reference.d.ts +31 -0
  20. package/dist/git/models/reference.d.ts.map +1 -1
  21. package/dist/git/models/remote.d.ts.map +1 -1
  22. package/dist/git/models/remote.js.map +1 -1
  23. package/dist/git/models/remoteProvider.d.ts +1 -0
  24. package/dist/git/models/remoteProvider.d.ts.map +1 -1
  25. package/dist/git/models/remoteProvider.js.map +1 -1
  26. package/dist/git/models/repository.d.ts +30 -13
  27. package/dist/git/models/repository.d.ts.map +1 -1
  28. package/dist/git/models/repository.js +89 -87
  29. package/dist/git/models/repository.js.map +1 -1
  30. package/dist/git/models/search.d.ts +2 -2
  31. package/dist/git/models/search.d.ts.map +1 -1
  32. package/dist/git/models/statusFile.d.ts +9 -0
  33. package/dist/git/models/statusFile.d.ts.map +1 -1
  34. package/dist/git/models/statusFile.js +11 -0
  35. package/dist/git/models/statusFile.js.map +1 -1
  36. package/dist/git/models/worktree.d.ts +4 -1
  37. package/dist/git/models/worktree.d.ts.map +1 -1
  38. package/dist/git/models/worktree.js +2 -2
  39. package/dist/git/models/worktree.js.map +1 -1
  40. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  41. package/dist/git/parsers/diffParser.js.map +1 -1
  42. package/dist/git/providers/branches.d.ts +15 -4
  43. package/dist/git/providers/branches.d.ts.map +1 -1
  44. package/dist/git/providers/commits.d.ts +4 -0
  45. package/dist/git/providers/commits.d.ts.map +1 -1
  46. package/dist/git/providers/config.d.ts +5 -4
  47. package/dist/git/providers/config.d.ts.map +1 -1
  48. package/dist/git/providers/operations.d.ts +61 -12
  49. package/dist/git/providers/operations.d.ts.map +1 -1
  50. package/dist/git/providers/pausedOperations.d.ts +3 -1
  51. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  52. package/dist/git/providers/refs.d.ts +23 -2
  53. package/dist/git/providers/refs.d.ts.map +1 -1
  54. package/dist/git/providers/staging.d.ts +16 -0
  55. package/dist/git/providers/staging.d.ts.map +1 -1
  56. package/dist/git/providers/status.d.ts +4 -1
  57. package/dist/git/providers/status.d.ts.map +1 -1
  58. package/dist/git/remotes/azure-devops.d.ts.map +1 -1
  59. package/dist/git/remotes/azure-devops.js.map +1 -1
  60. package/dist/git/remotes/custom.d.ts +2 -0
  61. package/dist/git/remotes/custom.d.ts.map +1 -1
  62. package/dist/git/remotes/custom.js +20 -0
  63. package/dist/git/remotes/custom.js.map +1 -1
  64. package/dist/git/{exec.types.d.ts → run.types.d.ts} +22 -3
  65. package/dist/git/run.types.d.ts.map +1 -0
  66. package/dist/git/run.types.js +2 -0
  67. package/dist/git/run.types.js.map +1 -0
  68. package/dist/git/service.d.ts.map +1 -1
  69. package/dist/git/service.js.map +1 -1
  70. package/dist/git/utils/autolink.utils.d.ts.map +1 -1
  71. package/dist/git/utils/autolink.utils.js.map +1 -1
  72. package/dist/git/utils/blame.utils.d.ts.map +1 -1
  73. package/dist/git/utils/blame.utils.js.map +1 -1
  74. package/dist/git/utils/conflictResolution.utils.d.ts +6 -0
  75. package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -0
  76. package/dist/git/utils/conflictResolution.utils.js +25 -0
  77. package/dist/git/utils/conflictResolution.utils.js.map +1 -0
  78. package/dist/git/utils/contributor.utils.d.ts +3 -0
  79. package/dist/git/utils/contributor.utils.d.ts.map +1 -1
  80. package/dist/git/utils/contributor.utils.js +22 -0
  81. package/dist/git/utils/contributor.utils.js.map +1 -1
  82. package/dist/git/utils/fileStatus.utils.d.ts +2 -1
  83. package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
  84. package/dist/git/utils/fileStatus.utils.js +4 -0
  85. package/dist/git/utils/fileStatus.utils.js.map +1 -1
  86. package/dist/git/utils/reachability.utils.d.ts +37 -0
  87. package/dist/git/utils/reachability.utils.d.ts.map +1 -0
  88. package/dist/git/utils/reachability.utils.js +96 -0
  89. package/dist/git/utils/reachability.utils.js.map +1 -0
  90. package/dist/git/utils/search.utils.d.ts.map +1 -1
  91. package/dist/git/utils/search.utils.js +3 -0
  92. package/dist/git/utils/search.utils.js.map +1 -1
  93. package/dist/git/utils/sorting.d.ts +8 -0
  94. package/dist/git/utils/sorting.d.ts.map +1 -1
  95. package/dist/git/utils/sorting.js +15 -0
  96. package/dist/git/utils/sorting.js.map +1 -1
  97. package/dist/git/utils/status.utils.d.ts.map +1 -1
  98. package/dist/git/utils/status.utils.js.map +1 -1
  99. package/dist/git/watching/classifyChange.d.ts.map +1 -1
  100. package/dist/git/watching/classifyChange.js +8 -0
  101. package/dist/git/watching/classifyChange.js.map +1 -1
  102. package/dist/git/watching/gitIgnoreFilter.js +1 -1
  103. package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
  104. package/dist/git/watching/initWatcher.d.ts.map +1 -1
  105. package/dist/git/watching/initWatcher.js.map +1 -1
  106. package/dist/git/watching/watchGroup.d.ts.map +1 -1
  107. package/dist/git/watching/watchGroup.js.map +1 -1
  108. package/dist/git/watching/watchService.d.ts +4 -2
  109. package/dist/git/watching/watchService.d.ts.map +1 -1
  110. package/dist/git/watching/watchService.js +31 -6
  111. package/dist/git/watching/watchService.js.map +1 -1
  112. package/dist/git/watching/watchSession.d.ts +14 -12
  113. package/dist/git/watching/watchSession.d.ts.map +1 -1
  114. package/dist/git/watching/watchSession.js +56 -55
  115. package/dist/git/watching/watchSession.js.map +1 -1
  116. package/dist/git-cli/exec/exec.types.d.ts +1 -1
  117. package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
  118. package/dist/git-cli/exec/git.d.ts +3 -3
  119. package/dist/git-cli/exec/git.d.ts.map +1 -1
  120. package/dist/git-cli/exec/git.js.map +1 -1
  121. package/dist/git-cli/exec/gitQueue.d.ts +10 -2
  122. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  123. package/dist/git-cli/exec/gitQueue.js +39 -12
  124. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  125. package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
  126. package/dist/git-cli/parsers/blameParser.js.map +1 -1
  127. package/dist/git-cli/parsers/logParser.js.map +1 -1
  128. package/dist/git-cli/parsers/refParser.d.ts +3 -30
  129. package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
  130. package/dist/git-cli/parsers/refParser.js +30 -30
  131. package/dist/git-cli/parsers/refParser.js.map +1 -1
  132. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  133. package/dist/git-cli/providers/blame.js.map +1 -1
  134. package/dist/git-cli/providers/branches.d.ts +15 -5
  135. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  136. package/dist/git-cli/providers/branches.js +99 -68
  137. package/dist/git-cli/providers/branches.js.map +1 -1
  138. package/dist/git-cli/providers/commits.d.ts +1 -0
  139. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  140. package/dist/git-cli/providers/commits.js +86 -30
  141. package/dist/git-cli/providers/commits.js.map +1 -1
  142. package/dist/git-cli/providers/config.d.ts +19 -6
  143. package/dist/git-cli/providers/config.d.ts.map +1 -1
  144. package/dist/git-cli/providers/config.js +86 -38
  145. package/dist/git-cli/providers/config.js.map +1 -1
  146. package/dist/git-cli/providers/diff.d.ts.map +1 -1
  147. package/dist/git-cli/providers/diff.js +5 -3
  148. package/dist/git-cli/providers/diff.js.map +1 -1
  149. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  150. package/dist/git-cli/providers/graph.js +139 -16
  151. package/dist/git-cli/providers/graph.js.map +1 -1
  152. package/dist/git-cli/providers/operations.d.ts +17 -14
  153. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  154. package/dist/git-cli/providers/operations.js +135 -63
  155. package/dist/git-cli/providers/operations.js.map +1 -1
  156. package/dist/git-cli/providers/patch.d.ts.map +1 -1
  157. package/dist/git-cli/providers/patch.js.map +1 -1
  158. package/dist/git-cli/providers/pausedOperations.d.ts +3 -1
  159. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  160. package/dist/git-cli/providers/pausedOperations.js +7 -1
  161. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  162. package/dist/git-cli/providers/refs.d.ts +19 -2
  163. package/dist/git-cli/providers/refs.d.ts.map +1 -1
  164. package/dist/git-cli/providers/refs.js +286 -2
  165. package/dist/git-cli/providers/refs.js.map +1 -1
  166. package/dist/git-cli/providers/revision.js.map +1 -1
  167. package/dist/git-cli/providers/staging.d.ts +6 -0
  168. package/dist/git-cli/providers/staging.d.ts.map +1 -1
  169. package/dist/git-cli/providers/staging.js +32 -0
  170. package/dist/git-cli/providers/staging.js.map +1 -1
  171. package/dist/git-cli/providers/stash.d.ts.map +1 -1
  172. package/dist/git-cli/providers/stash.js +20 -2
  173. package/dist/git-cli/providers/stash.js.map +1 -1
  174. package/dist/git-cli/providers/status.d.ts +4 -1
  175. package/dist/git-cli/providers/status.d.ts.map +1 -1
  176. package/dist/git-cli/providers/status.js +8 -4
  177. package/dist/git-cli/providers/status.js.map +1 -1
  178. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  179. package/dist/git-cli/providers/tags.js +10 -6
  180. package/dist/git-cli/providers/tags.js.map +1 -1
  181. package/dist/ipc/discovery.d.ts +49 -0
  182. package/dist/ipc/discovery.d.ts.map +1 -0
  183. package/dist/ipc/discovery.js +147 -0
  184. package/dist/ipc/discovery.js.map +1 -0
  185. package/dist/ipc/ipcServer.d.ts +20 -0
  186. package/dist/ipc/ipcServer.d.ts.map +1 -0
  187. package/dist/ipc/ipcServer.js +162 -0
  188. package/dist/ipc/ipcServer.js.map +1 -0
  189. package/dist/plus/agents/providers/claudeCodeProvider.d.ts +167 -0
  190. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -0
  191. package/dist/plus/agents/providers/claudeCodeProvider.js +1786 -0
  192. package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -0
  193. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +36 -0
  194. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -0
  195. package/dist/plus/agents/providers/claudeCodeTranscript.js +171 -0
  196. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -0
  197. package/dist/plus/agents/sanitizePrompt.d.ts +15 -0
  198. package/dist/plus/agents/sanitizePrompt.d.ts.map +1 -0
  199. package/dist/plus/agents/sanitizePrompt.js +103 -0
  200. package/dist/plus/agents/sanitizePrompt.js.map +1 -0
  201. package/dist/plus/agents/stateMachine.d.ts +32 -0
  202. package/dist/plus/agents/stateMachine.d.ts.map +1 -0
  203. package/dist/plus/agents/stateMachine.js +180 -0
  204. package/dist/plus/agents/stateMachine.js.map +1 -0
  205. package/dist/plus/agents/types.d.ts +254 -0
  206. package/dist/plus/agents/types.d.ts.map +1 -0
  207. package/dist/plus/agents/types.js +49 -0
  208. package/dist/plus/agents/types.js.map +1 -0
  209. package/dist/plus/ai/errors.d.ts +4 -1
  210. package/dist/plus/ai/errors.d.ts.map +1 -1
  211. package/dist/plus/ai/errors.js +38 -0
  212. package/dist/plus/ai/errors.js.map +1 -1
  213. package/dist/plus/ai/models/model.d.ts +1 -1
  214. package/dist/plus/ai/models/model.d.ts.map +1 -1
  215. package/dist/plus/ai/models/model.js.map +1 -1
  216. package/dist/plus/ai/models/promptTemplates.d.ts +11 -2
  217. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  218. package/dist/plus/ai/models/provider.d.ts +3 -0
  219. package/dist/plus/ai/models/provider.d.ts.map +1 -1
  220. package/dist/plus/ai/prompts.d.ts +1 -0
  221. package/dist/plus/ai/prompts.d.ts.map +1 -1
  222. package/dist/plus/ai/prompts.js +48 -8
  223. package/dist/plus/ai/prompts.js.map +1 -1
  224. package/dist/plus/ai/providers/gitkrakenProvider.d.ts +1 -1
  225. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
  226. package/dist/plus/ai/providers/gitkrakenProvider.js +4 -1
  227. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
  228. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +4 -3
  229. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
  230. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +9 -6
  231. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  232. package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
  233. package/dist/plus/ai/utils/ai.utils.js +2 -0
  234. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  235. package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
  236. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  237. package/dist/plus/git-github/api/github.d.ts +12 -1
  238. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  239. package/dist/plus/git-github/api/github.js +245 -51
  240. package/dist/plus/git-github/api/github.js.map +1 -1
  241. package/dist/plus/git-github/api/types.d.ts +8 -0
  242. package/dist/plus/git-github/api/types.d.ts.map +1 -1
  243. package/dist/plus/git-github/models.d.ts +1 -1
  244. package/dist/plus/git-github/models.d.ts.map +1 -1
  245. package/dist/plus/git-github/models.js.map +1 -1
  246. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  247. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  248. package/dist/plus/git-github/providers/github/branches.d.ts +5 -1
  249. package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
  250. package/dist/plus/git-github/providers/github/branches.js +47 -24
  251. package/dist/plus/git-github/providers/github/branches.js.map +1 -1
  252. package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
  253. package/dist/plus/git-github/providers/github/commits.js +144 -92
  254. package/dist/plus/git-github/providers/github/commits.js.map +1 -1
  255. package/dist/plus/git-github/providers/github/diff.d.ts +1 -1
  256. package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
  257. package/dist/plus/git-github/providers/github/diff.js +23 -9
  258. package/dist/plus/git-github/providers/github/diff.js.map +1 -1
  259. package/dist/plus/git-github/providers/github/refs.d.ts +9 -1
  260. package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
  261. package/dist/plus/git-github/providers/github/refs.js +39 -14
  262. package/dist/plus/git-github/providers/github/refs.js.map +1 -1
  263. package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
  264. package/dist/plus/git-github/providers/github/revision.js +1 -2
  265. package/dist/plus/git-github/providers/github/revision.js.map +1 -1
  266. package/dist/plus/git-github/providers/github/status.d.ts +4 -1
  267. package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
  268. package/dist/plus/git-github/providers/github/status.js +1 -1
  269. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  270. package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
  271. package/dist/plus/git-github/providers/github/tags.js +35 -36
  272. package/dist/plus/git-github/providers/github/tags.js.map +1 -1
  273. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
  274. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
  275. package/dist/utils/color.d.ts.map +1 -1
  276. package/dist/utils/color.js.map +1 -1
  277. package/dist/utils/date.d.ts.map +1 -1
  278. package/dist/utils/date.js +6 -0
  279. package/dist/utils/date.js.map +1 -1
  280. package/dist/utils/debounce.js +1 -1
  281. package/dist/utils/decorators/serializable.d.ts.map +1 -1
  282. package/dist/utils/decorators/serializable.js.map +1 -1
  283. package/dist/utils/dedupedAsyncCache.d.ts +37 -0
  284. package/dist/utils/dedupedAsyncCache.d.ts.map +1 -0
  285. package/dist/utils/dedupedAsyncCache.js +68 -0
  286. package/dist/utils/dedupedAsyncCache.js.map +1 -0
  287. package/dist/utils/diff.d.ts +2 -0
  288. package/dist/utils/diff.d.ts.map +1 -0
  289. package/dist/utils/diff.js +53 -0
  290. package/dist/utils/diff.js.map +1 -0
  291. package/dist/utils/disposable.d.ts.map +1 -1
  292. package/dist/utils/disposable.js.map +1 -1
  293. package/dist/utils/env/node/exec.d.ts.map +1 -1
  294. package/dist/utils/env/node/exec.js.map +1 -1
  295. package/dist/utils/error.d.ts.map +1 -1
  296. package/dist/utils/error.js.map +1 -1
  297. package/dist/utils/iterable.d.ts +7 -1
  298. package/dist/utils/iterable.d.ts.map +1 -1
  299. package/dist/utils/iterable.js +12 -4
  300. package/dist/utils/iterable.js.map +1 -1
  301. package/dist/utils/logger.d.ts.map +1 -1
  302. package/dist/utils/logger.js.map +1 -1
  303. package/dist/utils/lruMap.d.ts +9 -0
  304. package/dist/utils/lruMap.d.ts.map +1 -1
  305. package/dist/utils/lruMap.js +26 -4
  306. package/dist/utils/lruMap.js.map +1 -1
  307. package/dist/utils/markdown.d.ts.map +1 -1
  308. package/dist/utils/markdown.js.map +1 -1
  309. package/dist/utils/mru.d.ts.map +1 -1
  310. package/dist/utils/mru.js.map +1 -1
  311. package/dist/utils/object.d.ts +22 -1
  312. package/dist/utils/object.d.ts.map +1 -1
  313. package/dist/utils/object.js +56 -3
  314. package/dist/utils/object.js.map +1 -1
  315. package/dist/utils/paging.js +14 -15
  316. package/dist/utils/paging.js.map +1 -1
  317. package/dist/utils/path.d.ts.map +1 -1
  318. package/dist/utils/path.js.map +1 -1
  319. package/dist/utils/promise.d.ts +1 -0
  320. package/dist/utils/promise.d.ts.map +1 -1
  321. package/dist/utils/promise.js +17 -0
  322. package/dist/utils/promise.js.map +1 -1
  323. package/dist/utils/promiseCache.d.ts +10 -0
  324. package/dist/utils/promiseCache.d.ts.map +1 -1
  325. package/dist/utils/promiseCache.js +34 -4
  326. package/dist/utils/promiseCache.js.map +1 -1
  327. package/dist/utils/string.d.ts.map +1 -1
  328. package/dist/utils/string.js +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.map +1 -1
  333. package/dist/utils/version.js.map +1 -1
  334. package/package.json +13 -1
  335. package/src/git/cache.ts +192 -90
  336. package/src/git/context.ts +21 -0
  337. package/src/git/features.ts +2 -0
  338. package/src/git/models/commit.ts +1 -0
  339. package/src/git/models/graph.ts +97 -0
  340. package/src/git/models/reference.ts +33 -0
  341. package/src/git/models/remote.ts +1 -0
  342. package/src/git/models/remoteProvider.ts +1 -0
  343. package/src/git/models/repository.ts +105 -96
  344. package/src/git/models/search.ts +2 -2
  345. package/src/git/models/statusFile.ts +12 -0
  346. package/src/git/models/worktree.ts +10 -2
  347. package/src/git/parsers/diffParser.ts +2 -0
  348. package/src/git/providers/branches.ts +22 -4
  349. package/src/git/providers/commits.ts +4 -0
  350. package/src/git/providers/config.ts +3 -5
  351. package/src/git/providers/operations.ts +65 -1
  352. package/src/git/providers/pausedOperations.ts +1 -0
  353. package/src/git/providers/refs.ts +32 -3
  354. package/src/git/providers/staging.ts +12 -0
  355. package/src/git/providers/status.ts +6 -1
  356. package/src/git/remotes/azure-devops.ts +2 -0
  357. package/src/git/remotes/custom.ts +23 -0
  358. package/src/git/{exec.types.ts → run.types.ts} +22 -2
  359. package/src/git/service.ts +1 -0
  360. package/src/git/utils/autolink.utils.ts +1 -0
  361. package/src/git/utils/blame.utils.ts +2 -0
  362. package/src/git/utils/conflictResolution.utils.ts +31 -0
  363. package/src/git/utils/contributor.utils.ts +24 -0
  364. package/src/git/utils/fileStatus.utils.ts +7 -1
  365. package/src/git/utils/reachability.utils.ts +109 -0
  366. package/src/git/utils/search.utils.ts +2 -0
  367. package/src/git/utils/sorting.ts +17 -0
  368. package/src/git/utils/status.utils.ts +1 -0
  369. package/src/git/watching/classifyChange.ts +9 -0
  370. package/src/git/watching/gitIgnoreFilter.ts +2 -2
  371. package/src/git/watching/initWatcher.ts +2 -0
  372. package/src/git/watching/watchGroup.ts +3 -0
  373. package/src/git/watching/watchService.ts +45 -7
  374. package/src/git/watching/watchSession.ts +71 -55
  375. package/src/git-cli/exec/exec.types.ts +2 -2
  376. package/src/git-cli/exec/git.ts +6 -5
  377. package/src/git-cli/exec/gitQueue.ts +41 -12
  378. package/src/git-cli/parsers/blameParser.ts +1 -0
  379. package/src/git-cli/parsers/logParser.ts +1 -0
  380. package/src/git-cli/parsers/refParser.ts +33 -34
  381. package/src/git-cli/providers/blame.ts +1 -0
  382. package/src/git-cli/providers/branches.ts +165 -93
  383. package/src/git-cli/providers/commits.ts +107 -37
  384. package/src/git-cli/providers/config.ts +101 -48
  385. package/src/git-cli/providers/diff.ts +10 -3
  386. package/src/git-cli/providers/graph.ts +156 -16
  387. package/src/git-cli/providers/operations.ts +208 -83
  388. package/src/git-cli/providers/patch.ts +1 -0
  389. package/src/git-cli/providers/pausedOperations.ts +8 -0
  390. package/src/git-cli/providers/refs.ts +247 -3
  391. package/src/git-cli/providers/revision.ts +2 -2
  392. package/src/git-cli/providers/staging.ts +33 -0
  393. package/src/git-cli/providers/stash.ts +20 -2
  394. package/src/git-cli/providers/status.ts +24 -5
  395. package/src/git-cli/providers/tags.ts +15 -16
  396. package/src/ipc/discovery.ts +186 -0
  397. package/src/ipc/ipcServer.ts +171 -0
  398. package/src/plus/agents/providers/claudeCodeProvider.ts +2122 -0
  399. package/src/plus/agents/providers/claudeCodeTranscript.ts +214 -0
  400. package/src/plus/agents/sanitizePrompt.ts +109 -0
  401. package/src/plus/agents/stateMachine.ts +197 -0
  402. package/src/plus/agents/types.ts +325 -0
  403. package/src/plus/ai/errors.ts +40 -0
  404. package/src/plus/ai/models/model.ts +1 -0
  405. package/src/plus/ai/models/promptTemplates.ts +13 -0
  406. package/src/plus/ai/models/provider.ts +7 -1
  407. package/src/plus/ai/prompts.ts +49 -8
  408. package/src/plus/ai/providers/gitkrakenProvider.ts +4 -0
  409. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +21 -4
  410. package/src/plus/ai/utils/ai.utils.ts +2 -0
  411. package/src/plus/ai/utils/results.utils.ts +2 -0
  412. package/src/plus/git-github/api/github.ts +315 -57
  413. package/src/plus/git-github/api/types.ts +15 -0
  414. package/src/plus/git-github/models.ts +1 -1
  415. package/src/plus/git-github/providers/github/blame.ts +2 -0
  416. package/src/plus/git-github/providers/github/branches.ts +61 -31
  417. package/src/plus/git-github/providers/github/commits.ts +231 -160
  418. package/src/plus/git-github/providers/github/diff.ts +27 -19
  419. package/src/plus/git-github/providers/github/refs.ts +58 -23
  420. package/src/plus/git-github/providers/github/revision.ts +1 -2
  421. package/src/plus/git-github/providers/github/status.ts +6 -1
  422. package/src/plus/git-github/providers/github/tags.ts +61 -62
  423. package/src/plus/git-github/providers/githubGitProvider.ts +1 -0
  424. package/src/utils/color.ts +2 -0
  425. package/src/utils/date.ts +5 -0
  426. package/src/utils/debounce.ts +1 -1
  427. package/src/utils/decorators/serializable.ts +1 -0
  428. package/src/utils/dedupedAsyncCache.ts +74 -0
  429. package/src/utils/diff.ts +61 -0
  430. package/src/utils/disposable.ts +2 -0
  431. package/src/utils/env/node/exec.ts +2 -0
  432. package/src/utils/error.ts +1 -0
  433. package/src/utils/iterable.ts +17 -3
  434. package/src/utils/logger.ts +1 -0
  435. package/src/utils/lruMap.ts +29 -4
  436. package/src/utils/markdown.ts +1 -0
  437. package/src/utils/mru.ts +2 -0
  438. package/src/utils/object.ts +55 -4
  439. package/src/utils/paging.ts +14 -14
  440. package/src/utils/path.ts +1 -0
  441. package/src/utils/promise.ts +22 -0
  442. package/src/utils/promiseCache.ts +48 -16
  443. package/src/utils/string.ts +3 -1
  444. package/src/utils/uri.ts +1 -0
  445. package/src/utils/version.ts +1 -0
  446. package/dist/git/exec.types.d.ts.map +0 -1
  447. package/dist/git/exec.types.js +0 -2
  448. package/dist/git/exec.types.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.1] - 2026-06-19
10
+
11
+ ### Fixed
12
+
13
+ - Fixes `push`, `fetch`, `pull`, `reset`, `checkout`, and `restore` resolving as success when the git command actually failed with output matching a `GitWarnings` pattern (e.g. a non-fast-forward `tipBehind` push rejection, an unreachable remote, or an invalid ref/revision) — the rejection was swallowed by the default handler and the typed-error mapping was unreachable; these now reject with the correct error (`PushError`/`FetchError`/`PullError`/`ResetError`/`CheckoutError`) (git-cli)
14
+
15
+ ## [0.3.0] - 2026-05-27
16
+
9
17
  ## [0.2.0] - 2026-05-01
10
18
 
11
19
  ### Added
@@ -32,6 +40,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
32
40
 
33
41
  - 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.
34
42
 
35
- [unreleased]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.2.0...HEAD
43
+ [unreleased]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.3.1...HEAD
44
+ [0.3.1]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.3.0...gitkraken:releases/core/v0.3.1
45
+ [0.3.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.2.0...gitkraken:releases/core/v0.3.0
36
46
  [0.2.0]: https://github.com/gitkraken/vscode-gitlens/compare/releases/core/v0.1.0...gitkraken:releases/core/v0.2.0
37
47
  [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
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';
@@ -23,6 +23,7 @@ import type { BranchContributionsOverview, GitBranchMergedStatus } from './provi
23
23
  import type { GitCommitReachability, LeftRightCommitCountResult } from './providers/commits.js';
24
24
  import type { GitContributorsResult } from './providers/contributors.js';
25
25
  import type { ResolvedRevision } from './providers/revision.js';
26
+ import type { GitResult } from './run.types.js';
26
27
  import type { GitIgnoreFilter } from './watching/gitIgnoreFilter.js';
27
28
  type RepoPath = string;
28
29
  /** Cache types that are keyed by file path within a repo — support per-file clearing */
@@ -30,6 +31,13 @@ export type UriScopedCachedGitTypes = 'blame' | 'diff' | 'fileLog';
30
31
  export declare function areUriScopedCachedGitTypes(types: string[]): types is UriScopedCachedGitTypes[];
31
32
  export type CachedGitTypes = UriScopedCachedGitTypes | 'branch' | 'branches' | 'config' | 'contributors' | 'gitignore' | 'gkConfig' | 'lastFetched' | 'providers' | 'remotes' | 'stashes' | 'status' | 'tags' | 'tracking' | 'worktrees';
32
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';
33
41
  export declare class Cache implements Disposable {
34
42
  private _caches;
35
43
  private _commonPathRegistry;
@@ -54,8 +62,7 @@ export declare class Cache implements Disposable {
54
62
  private get sharedBranches();
55
63
  private get configKeys();
56
64
  private get configPatterns();
57
- private get gkConfigKeys();
58
- private get gkConfigPatterns();
65
+ private get gkConfigMap();
59
66
  get currentBranchReference(): PromiseCache<RepoPath, GitBranchReference | undefined>;
60
67
  setCurrentBranchReferenceIfAbsent(worktreePath: string, reference: GitBranchReference | undefined): void;
61
68
  get conflictDetection(): RepoPromiseCacheMap<ConflictDetectionCacheKey, ConflictDetectionResult>;
@@ -70,10 +77,14 @@ export declare class Cache implements Disposable {
70
77
  get initialCommitSha(): PromiseMap<RepoPath, string | undefined>;
71
78
  get lastFetched(): PromiseCache<RepoPath, number | undefined>;
72
79
  get leftRightCommitCount(): RepoPromiseCacheMap<string, LeftRightCommitCountResult | undefined>;
73
- getLeftRightCommitCount(repoPath: string, key: string, factory: () => PromiseOrValue<LeftRightCommitCountResult | undefined>): Promise<LeftRightCommitCountResult | undefined>;
80
+ get commit(): RepoPromiseCacheMap<string, GitCommit | undefined>;
81
+ get commitCount(): RepoPromiseCacheMap<string, number | undefined>;
82
+ get mergeBase(): RepoPromiseCacheMap<string, string | undefined>;
74
83
  get logShas(): RepoPromiseCacheMap<string, string[]>;
75
84
  get pausedOperationStatus(): PromiseMap<RepoPath, GitPausedOperationStatus | undefined>;
76
85
  get resolvedRevisions(): RepoPromiseCacheMap<string, ResolvedRevision>;
86
+ get refs(): PromiseMap<RepoPath, RefRecord[]>;
87
+ get refTips(): PromiseMap<RepoPath, GitRefTip[]>;
77
88
  get reachability(): RepoPromiseCacheMap<string, GitCommitReachability | undefined>;
78
89
  get remotes(): PromiseMap<RepoPath, GitRemote[]>;
79
90
  get stashes(): RepoPromiseCacheMap<string, GitStash>;
@@ -115,9 +126,26 @@ export declare class Cache implements Disposable {
115
126
  getConfig(repoPath: string | undefined, key: string, factory: () => PromiseOrValue<string | undefined>): Promise<string | undefined>;
116
127
  getConfigRegex(repoPath: string | undefined, pattern: string, factory: () => PromiseOrValue<Map<string, string>>): Promise<Map<string, string>>;
117
128
  deleteConfig(repoPath: string | undefined, key: string): void;
118
- getGkConfig(repoPath: string, key: string, factory: () => PromiseOrValue<string | undefined>): Promise<string | undefined>;
119
- getGkConfigRegex(repoPath: string, pattern: string, factory: () => PromiseOrValue<Map<string, string>>): Promise<Map<string, string>>;
120
- deleteGkConfig(repoPath: string, key: string): void;
129
+ /**
130
+ * The whole `.git/gk/config` is read once and cached as a single map per commonPath; per-key and
131
+ * per-namespace gk lookups are served from it in-memory (see `getGkConfigMap` in the CLI config
132
+ * sub-provider). Invalidated by `deleteGkConfig` (write) and the coarse `'gkConfig'` clear (watcher).
133
+ */
134
+ getGkConfigMap(repoPath: string, factory: () => PromiseOrValue<Map<string, string>>): Promise<Map<string, string>>;
135
+ /**
136
+ * Clears the cached `.git/gk/config` map and invalidates the derived caches
137
+ * (`baseBranchName`/`branchOverviews`) for the written key's ref.
138
+ *
139
+ * @param options.skipInvalidation Downstream caches the caller wants preserved despite this
140
+ * write. Use when the value being written is exactly what was just resolved — e.g. the Tier 2
141
+ * `storeMergeTargetBranchName` self-write inside `getBranchContributionsOverview` (skip
142
+ * `'branchOverviews'`) or the Tier 3 `storeBaseBranchName` self-write inside `getBaseBranchName`
143
+ * (skip both `'baseBranchName'` and `'branchOverviews'`). The bulk `gkConfigMap` map always
144
+ * invalidates so subsequent reads see the new value.
145
+ */
146
+ deleteGkConfig(repoPath: string, key: string, options?: {
147
+ skipInvalidation?: readonly GkConfigInvalidationTarget[];
148
+ }): void;
121
149
  getBranchOverview(repoPath: string, cacheKey: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<BranchContributionsOverview | undefined>, options?: {
122
150
  accessTTL?: number;
123
151
  cancellation?: AbortSignal;
@@ -140,6 +168,8 @@ export declare class Cache implements Disposable {
140
168
  getDefaultBranchName(repoPath: string, remote: string, factory: (commonPath: string) => PromiseOrValue<string | undefined>): Promise<string | undefined>;
141
169
  getInitialCommitSha(repoPath: string, factory: (commonPath: string) => PromiseOrValue<string | undefined>): Promise<string | undefined>;
142
170
  getLastFetchedTimestamp(repoPath: string, factory: (commonPath: string) => PromiseOrValue<number | undefined>): Promise<number | undefined>;
171
+ getRefs(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<RefRecord[]>, cancellation?: AbortSignal): Promise<RefRecord[]>;
172
+ getRefTips(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitRefTip[]>, cancellation?: AbortSignal): Promise<GitRefTip[]>;
143
173
  getRemotes(repoPath: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitRemote[]>, cancellation?: AbortSignal): Promise<GitRemote[]>;
144
174
  getStash(repoPath: string, cacheKey: string, factory: (commonPath: string, cacheable: CacheController, cancellation?: AbortSignal) => PromiseOrValue<GitStash>, options?: {
145
175
  accessTTL?: number;
@@ -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
@@ -21,7 +21,7 @@ export function areUriScopedCachedGitTypes(types) {
21
21
  * gkConfig keys that participate in the `branchOverviews` cache's mergeTarget/mergeBase lineage.
22
22
  * Capture group 1 is the ref name (which may itself contain `.`/`/`).
23
23
  */
24
- const branchOverviewGkConfigKeyPattern = /^branch\.(.+)\.(?:gk-merge-(?:base|target(?:-user)?)|gk-target-base)$/;
24
+ const branchOverviewGkConfigKeysRegex = /^branch\.(.+)\.(?:gk-merge-(?:base|target(?:-user)?)|gk-target-base)$/;
25
25
  /** Compile-time enforced: adding a key to SharedCaches without listing it here is a type error */
26
26
  const sharedCacheKeys = new Set(exhaustiveArray()([
27
27
  'baseBranchName',
@@ -36,10 +36,12 @@ const sharedCacheKeys = new Set(exhaustiveArray()([
36
36
  'contributorsStats',
37
37
  'defaultBranchName',
38
38
  'gitResults',
39
- 'gkConfigKeys',
40
- 'gkConfigPatterns',
39
+ 'gkConfigMap',
41
40
  'initialCommitSha',
41
+ 'lastFetched',
42
42
  'logShas',
43
+ 'refs',
44
+ 'refTips',
43
45
  'remotes',
44
46
  'sharedBranches',
45
47
  'stashes',
@@ -56,9 +58,12 @@ function createEmptyCaches() {
56
58
  branchMetadataMap: undefined,
57
59
  branchOverviews: undefined,
58
60
  branches: undefined,
61
+ commit: undefined,
62
+ commitCount: undefined,
59
63
  fileExistence: undefined,
60
64
  ignoreRevsFile: undefined,
61
65
  leftRightCommitCount: undefined,
66
+ mergeBase: undefined,
62
67
  configKeys: undefined,
63
68
  configPatterns: undefined,
64
69
  conflictDetection: undefined,
@@ -73,14 +78,15 @@ function createEmptyCaches() {
73
78
  gitDir: undefined,
74
79
  gitIgnore: undefined,
75
80
  gitResults: undefined,
76
- gkConfigKeys: undefined,
77
- gkConfigPatterns: undefined,
81
+ gkConfigMap: undefined,
78
82
  initialCommitSha: undefined,
79
83
  lastFetched: undefined,
80
84
  logShas: undefined,
81
85
  pausedOperationStatus: undefined,
82
86
  resolvedRevisions: undefined,
83
87
  reachability: undefined,
88
+ refs: undefined,
89
+ refTips: undefined,
84
90
  remotes: undefined,
85
91
  sharedBranches: undefined,
86
92
  stashes: undefined,
@@ -158,11 +164,8 @@ export class Cache {
158
164
  createTTL: 1000 * 30, // 30 seconds - ensures global config changes are picked up
159
165
  }));
160
166
  }
161
- get gkConfigKeys() {
162
- return (this._caches.gkConfigKeys ??= new RepoPromiseCacheMap());
163
- }
164
- get gkConfigPatterns() {
165
- return (this._caches.gkConfigPatterns ??= new RepoPromiseCacheMap());
167
+ get gkConfigMap() {
168
+ return (this._caches.gkConfigMap ??= new PromiseMap());
166
169
  }
167
170
  get currentBranchReference() {
168
171
  return (this._caches.currentBranchReference ??= new PromiseCache());
@@ -221,13 +224,23 @@ export class Cache {
221
224
  capacity: 50, // Limit to 50 ref-pairs per repo
222
225
  }));
223
226
  }
224
- getLeftRightCommitCount(repoPath, key, factory) {
225
- const cached = this.leftRightCommitCount.get(repoPath, key);
226
- if (cached != null)
227
- return cached;
228
- const factoryPromise = Promise.resolve(factory());
229
- this.leftRightCommitCount.set(repoPath, key, factoryPromise);
230
- return factoryPromise;
227
+ get commit() {
228
+ return (this._caches.commit ??= new RepoPromiseCacheMap({
229
+ accessTTL: 1000 * 60 * 60, // 60 minutes
230
+ capacity: 100, // Limit to 100 commits per repo
231
+ }));
232
+ }
233
+ get commitCount() {
234
+ return (this._caches.commitCount ??= new RepoPromiseCacheMap({
235
+ accessTTL: 1000 * 60 * 60, // 60 minutes
236
+ capacity: 50,
237
+ }));
238
+ }
239
+ get mergeBase() {
240
+ return (this._caches.mergeBase ??= new RepoPromiseCacheMap({
241
+ accessTTL: 1000 * 60 * 60, // 60 minutes
242
+ capacity: 50,
243
+ }));
231
244
  }
232
245
  get logShas() {
233
246
  return (this._caches.logShas ??= new RepoPromiseCacheMap({
@@ -244,6 +257,12 @@ export class Cache {
244
257
  capacity: 100,
245
258
  }));
246
259
  }
260
+ get refs() {
261
+ return (this._caches.refs ??= new PromiseMap());
262
+ }
263
+ get refTips() {
264
+ return (this._caches.refTips ??= new PromiseMap());
265
+ }
247
266
  get reachability() {
248
267
  return (this._caches.reachability ??= new RepoPromiseCacheMap({
249
268
  accessTTL: 1000 * 60 * 60, // 60 minutes
@@ -314,9 +333,15 @@ export class Cache {
314
333
  keysToClear.add('branch');
315
334
  keysToClear.add('branchMergedStatus');
316
335
  keysToClear.add('branchOverviews');
336
+ // `commit`/`commitCount` are keyed by symbolic ref or SHA — symbolic-ref entries
337
+ // can drift when branches move; cascade-clear conservatively.
338
+ keysToClear.add('commit');
339
+ keysToClear.add('commitCount');
317
340
  keysToClear.add('conflictDetection');
318
341
  keysToClear.add('currentBranchReference');
319
342
  keysToClear.add('leftRightCommitCount');
343
+ // `mergeBase` keyed by ref-pairs — symbolic refs can move; cascade-clear.
344
+ keysToClear.add('mergeBase');
320
345
  keysToClear.add('reachability');
321
346
  keysToClear.add('resolvedRevisions');
322
347
  }
@@ -329,13 +354,18 @@ export class Cache {
329
354
  keysToClear.add('defaultBranchName');
330
355
  keysToClear.add('initialCommitSha');
331
356
  keysToClear.add('logShas');
357
+ keysToClear.add('refs');
358
+ keysToClear.add('refTips');
332
359
  }
333
360
  if (types.includes('config')) {
334
361
  keysToClear.add('configKeys');
335
362
  keysToClear.add('configPatterns');
336
363
  keysToClear.add('currentBranchReference');
337
364
  keysToClear.add('currentUser');
338
- keysToClear.add('gitDir');
365
+ // `gitDir` is immutable repo topology (toplevel/git-dir/common-dir/superproject) — a
366
+ // `.git/config` content change never relocates it, and it's owned by the repo lifecycle
367
+ // (registerRepoPath/unregisterRepoPath). Clearing it here forced a redundant `git rev-parse`
368
+ // re-spawn (gitDir is read by getGkConfigPath→getGitDir on every gk op), so leave it warm.
339
369
  }
340
370
  if (types.includes('contributors')) {
341
371
  keysToClear.add('branchOverviews');
@@ -347,13 +377,12 @@ export class Cache {
347
377
  keysToClear.add('gitIgnore');
348
378
  }
349
379
  if (types.includes('gkConfig')) {
350
- keysToClear.add('gkConfigKeys');
351
- keysToClear.add('gkConfigPatterns');
380
+ keysToClear.add('gkConfigMap');
352
381
  // Derived from `branch.<ref>.gk-merge-base`/`vscode-merge-base`; clear so external
353
382
  // gkConfig mutations don't leave stale base-branch resolutions cached.
354
383
  keysToClear.add('baseBranchName');
355
- // Cached overviews use Tier 1's stored merge target as their key-stability anchor;
356
- // stored-target changes must invalidate or readers see stale `mergeTarget`/stats.
384
+ // Cached overviews are keyed by `${ref}|${mergeTarget}`; bulk gkConfig changes can
385
+ // affect any of the merge-target sources (stored, base, default), so clear all.
357
386
  keysToClear.add('branchOverviews');
358
387
  }
359
388
  if (types.includes('lastFetched')) {
@@ -377,6 +406,8 @@ export class Cache {
377
406
  }
378
407
  if (types.includes('tags')) {
379
408
  keysToClear.add('tags');
409
+ keysToClear.add('refs');
410
+ keysToClear.add('refTips');
380
411
  }
381
412
  if (types.includes('tracking')) {
382
413
  keysToClear.add('fileExistence');
@@ -600,14 +631,18 @@ export class Cache {
600
631
  // On factory invalidation, propagate to the derived per-worktree mapper entries
601
632
  // via soft-invalidate — existing waiters on the mapper complete, and the entry
602
633
  // self-evicts on mapper settle so the next callers build fresh derived entries.
603
- void p.finally(() => {
634
+ void p
635
+ .finally(() => {
604
636
  if (cacheable.invalidated) {
605
637
  this.branches.invalidate(commonPath);
606
638
  for (const worktreePath of this.getWorktreePaths(commonPath)) {
607
639
  this.branches.invalidate(worktreePath);
608
640
  }
609
641
  }
610
- });
642
+ })
643
+ // Swallow the cleanup chain's rejection so a rejected factory (e.g. cancellation)
644
+ // doesn't surface as an unhandled rejection; the caller-facing promise handles it.
645
+ .catch(() => { });
611
646
  return p;
612
647
  }, cancellation);
613
648
  void registration.catch(() => { });
@@ -647,36 +682,48 @@ export class Cache {
647
682
  this._caches.configKeys?.delete(cacheKey, key);
648
683
  this._caches.configPatterns?.delete(cacheKey);
649
684
  }
650
- getGkConfig(repoPath, key, factory) {
651
- const cacheKey = this.getCommonPath(repoPath);
652
- const result = this.gkConfigKeys.get(cacheKey, key);
653
- if (result != null)
654
- return result;
655
- const factoryPromise = Promise.resolve(factory());
656
- this.gkConfigKeys.set(cacheKey, key, factoryPromise);
657
- return factoryPromise;
658
- }
659
- getGkConfigRegex(repoPath, pattern, factory) {
660
- const cacheKey = this.getCommonPath(repoPath);
661
- const result = this.gkConfigPatterns.get(cacheKey, pattern);
662
- if (result != null)
663
- return result;
664
- const factoryPromise = Promise.resolve(factory());
665
- this.gkConfigPatterns.set(cacheKey, pattern, factoryPromise);
666
- return factoryPromise;
685
+ /**
686
+ * The whole `.git/gk/config` is read once and cached as a single map per commonPath; per-key and
687
+ * per-namespace gk lookups are served from it in-memory (see `getGkConfigMap` in the CLI config
688
+ * sub-provider). Invalidated by `deleteGkConfig` (write) and the coarse `'gkConfig'` clear (watcher).
689
+ */
690
+ getGkConfigMap(repoPath, factory) {
691
+ return this.getSharedSimple(this.gkConfigMap, repoPath, factory);
667
692
  }
668
- deleteGkConfig(repoPath, key) {
693
+ /**
694
+ * Clears the cached `.git/gk/config` map and invalidates the derived caches
695
+ * (`baseBranchName`/`branchOverviews`) for the written key's ref.
696
+ *
697
+ * @param options.skipInvalidation Downstream caches the caller wants preserved despite this
698
+ * write. Use when the value being written is exactly what was just resolved — e.g. the Tier 2
699
+ * `storeMergeTargetBranchName` self-write inside `getBranchContributionsOverview` (skip
700
+ * `'branchOverviews'`) or the Tier 3 `storeBaseBranchName` self-write inside `getBaseBranchName`
701
+ * (skip both `'baseBranchName'` and `'branchOverviews'`). The bulk `gkConfigMap` map always
702
+ * invalidates so subsequent reads see the new value.
703
+ */
704
+ deleteGkConfig(repoPath, key, options) {
669
705
  const cacheKey = this.getCommonPath(repoPath);
670
- this._caches.gkConfigKeys?.delete(cacheKey, key);
671
- this._caches.gkConfigPatterns?.delete(cacheKey);
672
- // When the change affects a branch's merge-target/base lineage, invalidate that branch's
673
- // cached overview so subsequent reads pick up the new stored value rather than stale data.
674
- // `getBranchContributionsOverview` keys `branchOverviews` by ref, with Tier 1's stored
675
- // target as the key-stability anchor — so any write to those keys must invalidate.
676
- const refMatch = key.match(branchOverviewGkConfigKeyPattern);
677
- if (refMatch != null) {
678
- this._caches.branchOverviews?.delete(cacheKey, refMatch[1]);
706
+ this._caches.gkConfigMap?.delete(cacheKey);
707
+ const refMatch = key.match(branchOverviewGkConfigKeysRegex);
708
+ if (refMatch == null)
709
+ return;
710
+ const ref = refMatch[1];
711
+ const skip = options?.skipInvalidation;
712
+ // `getBaseBranchName` reads `branch.<ref>.gk-merge-base` and caches the resolved value
713
+ // per-ref. A write to that key must invalidate the cached base or Tier 3 of
714
+ // `getBranchContributionsOverview` will resolve `mergeTarget` against the pre-write value.
715
+ if (key.endsWith('.gk-merge-base') && !skip?.includes('baseBranchName')) {
716
+ this._caches.baseBranchName?.delete(cacheKey, ref);
679
717
  }
718
+ if (skip?.includes('branchOverviews'))
719
+ return;
720
+ // When the change affects a branch's merge-target/base lineage, invalidate that branch's
721
+ // cached overviews so subsequent reads pick up the new stored value rather than stale data.
722
+ // `getBranchContributionsOverview` keys `branchOverviews` by `${ref}|${mergeTarget}`, so
723
+ // invalidate every entry for the affected ref regardless of which target it resolved to.
724
+ // Uses `invalidateByKeyPrefix` (not `deleteByKeyPrefix`) so an in-flight factory is still
725
+ // shared with new callers instead of triggering a duplicate fetch.
726
+ this._caches.branchOverviews?.invalidateByKeyPrefix(cacheKey, `${ref}|`);
680
727
  }
681
728
  async getBranchOverview(repoPath, cacheKey, factory, options) {
682
729
  return this.getSharedOrCreateWithKey(this.branchOverviews, repoPath, cacheKey, factory, (data, newRepoPath) => data == null
@@ -736,6 +783,16 @@ export class Cache {
736
783
  getLastFetchedTimestamp(repoPath, factory) {
737
784
  return this.getSharedSimple(this.lastFetched, repoPath, factory);
738
785
  }
786
+ getRefs(repoPath, factory, cancellation) {
787
+ // Raw ref records are repoPath-agnostic (no per-worktree binding to remap), so we key only
788
+ // by commonPath and skip the per-worktree mapper that `getBranches`/`getTags` need.
789
+ const commonPath = this.getCommonPath(repoPath);
790
+ return this.refs.getOrCreate(commonPath, (cacheable, signal) => Promise.resolve(factory(commonPath, cacheable, signal)), cancellation);
791
+ }
792
+ getRefTips(repoPath, factory, cancellation) {
793
+ const commonPath = this.getCommonPath(repoPath);
794
+ return this.refTips.getOrCreate(commonPath, (cacheable, signal) => Promise.resolve(factory(commonPath, cacheable, signal)), cancellation);
795
+ }
739
796
  async getRemotes(repoPath, factory, cancellation) {
740
797
  return this.getSharedOrCreate(this.remotes, repoPath, factory, (data, newRepoPath) => data.map(r => r.withRepoPath(newRepoPath)), cancellation);
741
798
  }
@@ -765,7 +822,8 @@ export class Cache {
765
822
  // On factory invalidation (without rejection), propagate to the derived per-worktree
766
823
  // mapper entries so they don't persist past the shared factory's settle. Mapper
767
824
  // entries cached via `cache.set()` have no controller, so `invalidate` hard-deletes.
768
- void p.finally(() => {
825
+ void p
826
+ .finally(() => {
769
827
  if (cacheable.invalidated) {
770
828
  for (const worktreePath of this.getWorktreePaths(commonPath)) {
771
829
  if (worktreePath === commonPath)
@@ -773,7 +831,10 @@ export class Cache {
773
831
  cache.invalidate(worktreePath);
774
832
  }
775
833
  }
776
- });
834
+ })
835
+ // Swallow the cleanup chain's rejection so a rejected factory (e.g. cancellation)
836
+ // doesn't surface as an unhandled rejection; the caller-facing promise handles it.
837
+ .catch(() => { });
777
838
  return p;
778
839
  }, cancellation);
779
840
  // Swallow any rejection on the registration wrapper so it isn't surfaced as an unhandled
@@ -805,7 +866,8 @@ export class Cache {
805
866
  // mapper entries for this `cacheKey` so they don't persist past the shared factory's
806
867
  // settle. Mapper entries cached via `cache.set()` have no controller, so `invalidate`
807
868
  // hard-deletes.
808
- void p.finally(() => {
869
+ void p
870
+ .finally(() => {
809
871
  if (cacheable.invalidated) {
810
872
  for (const worktreePath of this.getWorktreePaths(commonPath)) {
811
873
  if (worktreePath === commonPath)
@@ -813,7 +875,10 @@ export class Cache {
813
875
  cache.invalidate(worktreePath, cacheKey);
814
876
  }
815
877
  }
816
- });
878
+ })
879
+ // Swallow the cleanup chain's rejection so a rejected factory (e.g. cancellation)
880
+ // doesn't surface as an unhandled rejection; the caller-facing promise handles it.
881
+ .catch(() => { });
817
882
  return p;
818
883
  }, options);
819
884
  // Swallow any rejection on the registration wrapper so it isn't surfaced as an unhandled