@gitkraken/core-gitlens 0.5.113 → 0.5.115

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 (349) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/dist/git/cache.d.ts +4 -0
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +33 -0
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +10 -0
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/errors.d.ts +6 -3
  10. package/dist/git/errors.d.ts.map +1 -1
  11. package/dist/git/errors.js +9 -1
  12. package/dist/git/errors.js.map +1 -1
  13. package/dist/git/features.d.ts +1 -1
  14. package/dist/git/features.d.ts.map +1 -1
  15. package/dist/git/features.js +38 -0
  16. package/dist/git/features.js.map +1 -1
  17. package/dist/git/gitHealth.d.ts +153 -0
  18. package/dist/git/gitHealth.d.ts.map +1 -0
  19. package/dist/git/gitHealth.js +353 -0
  20. package/dist/git/gitHealth.js.map +1 -0
  21. package/dist/git/models/search.d.ts +6 -3
  22. package/dist/git/models/search.d.ts.map +1 -1
  23. package/dist/git/models/search.js +5 -1
  24. package/dist/git/models/search.js.map +1 -1
  25. package/dist/git/parsers/diffParser.d.ts +8 -2
  26. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  27. package/dist/git/parsers/diffParser.js +27 -4
  28. package/dist/git/parsers/diffParser.js.map +1 -1
  29. package/dist/git/providers/config.d.ts +36 -3
  30. package/dist/git/providers/config.d.ts.map +1 -1
  31. package/dist/git/providers/graph.d.ts +9 -0
  32. package/dist/git/providers/graph.d.ts.map +1 -1
  33. package/dist/git/providers/maintenance.d.ts +222 -0
  34. package/dist/git/providers/maintenance.d.ts.map +1 -0
  35. package/dist/git/providers/maintenance.js +20 -0
  36. package/dist/git/providers/maintenance.js.map +1 -0
  37. package/dist/git/providers/operations.d.ts +10 -0
  38. package/dist/git/providers/operations.d.ts.map +1 -1
  39. package/dist/git/providers/pausedOperations.d.ts +3 -0
  40. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  41. package/dist/git/providers/provider.d.ts +2 -0
  42. package/dist/git/providers/provider.d.ts.map +1 -1
  43. package/dist/git/providers/tags.d.ts +3 -0
  44. package/dist/git/providers/tags.d.ts.map +1 -1
  45. package/dist/git/repositoryService.d.ts +1 -0
  46. package/dist/git/repositoryService.d.ts.map +1 -1
  47. package/dist/git/repositoryService.js.map +1 -1
  48. package/dist/git/run.types.d.ts +8 -0
  49. package/dist/git/run.types.d.ts.map +1 -1
  50. package/dist/git/service.js +3 -0
  51. package/dist/git/service.js.map +1 -1
  52. package/dist/git/utils/search.utils.d.ts.map +1 -1
  53. package/dist/git/utils/search.utils.js +112 -5
  54. package/dist/git/utils/search.utils.js.map +1 -1
  55. package/dist/git/watching/watchService.d.ts +3 -0
  56. package/dist/git/watching/watchService.d.ts.map +1 -1
  57. package/dist/git/watching/watchService.js +8 -0
  58. package/dist/git/watching/watchService.js.map +1 -1
  59. package/dist/git-cli/cliGitProvider.d.ts +11 -0
  60. package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
  61. package/dist/git-cli/cliGitProvider.js +12 -0
  62. package/dist/git-cli/cliGitProvider.js.map +1 -1
  63. package/dist/git-cli/exec/git.d.ts +23 -1
  64. package/dist/git-cli/exec/git.d.ts.map +1 -1
  65. package/dist/git-cli/exec/git.js +83 -8
  66. package/dist/git-cli/exec/git.js.map +1 -1
  67. package/dist/git-cli/exec/gitQueue.d.ts +2 -0
  68. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  69. package/dist/git-cli/exec/gitQueue.js +19 -17
  70. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  71. package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
  72. package/dist/git-cli/parsers/logParser.js +4 -1
  73. package/dist/git-cli/parsers/logParser.js.map +1 -1
  74. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  75. package/dist/git-cli/providers/blame.js +4 -7
  76. package/dist/git-cli/providers/blame.js.map +1 -1
  77. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  78. package/dist/git-cli/providers/branches.js +13 -3
  79. package/dist/git-cli/providers/branches.js.map +1 -1
  80. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  81. package/dist/git-cli/providers/commits.js +34 -3
  82. package/dist/git-cli/providers/commits.js.map +1 -1
  83. package/dist/git-cli/providers/config.d.ts +27 -0
  84. package/dist/git-cli/providers/config.d.ts.map +1 -1
  85. package/dist/git-cli/providers/config.js +31 -6
  86. package/dist/git-cli/providers/config.js.map +1 -1
  87. package/dist/git-cli/providers/graph.d.ts +8 -0
  88. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  89. package/dist/git-cli/providers/graph.js +85 -6
  90. package/dist/git-cli/providers/graph.js.map +1 -1
  91. package/dist/git-cli/providers/maintenance.d.ts +306 -0
  92. package/dist/git-cli/providers/maintenance.d.ts.map +1 -0
  93. package/dist/git-cli/providers/maintenance.js +2129 -0
  94. package/dist/git-cli/providers/maintenance.js.map +1 -0
  95. package/dist/git-cli/providers/operations.d.ts +1 -0
  96. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  97. package/dist/git-cli/providers/operations.js +8 -0
  98. package/dist/git-cli/providers/operations.js.map +1 -1
  99. package/dist/git-cli/providers/pausedOperations.d.ts +1 -0
  100. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  101. package/dist/git-cli/providers/pausedOperations.js +1 -1
  102. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  103. package/dist/git-cli/providers/tags.d.ts +3 -0
  104. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  105. package/dist/git-cli/providers/tags.js +23 -1
  106. package/dist/git-cli/providers/tags.js.map +1 -1
  107. package/dist/plus/agents/agentCapabilities.d.ts +77 -0
  108. package/dist/plus/agents/agentCapabilities.d.ts.map +1 -0
  109. package/dist/plus/agents/agentCapabilities.js +197 -0
  110. package/dist/plus/agents/agentCapabilities.js.map +1 -0
  111. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +77 -13
  112. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
  113. package/dist/plus/agents/providers/claudeCodeTranscript.js +263 -55
  114. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  115. package/dist/plus/agents/providers/{claudeCodeProvider.d.ts → gkAgentProvider.d.ts} +52 -19
  116. package/dist/plus/agents/providers/gkAgentProvider.d.ts.map +1 -0
  117. package/dist/plus/agents/providers/{claudeCodeProvider.js → gkAgentProvider.js} +935 -262
  118. package/dist/plus/agents/providers/gkAgentProvider.js.map +1 -0
  119. package/dist/plus/agents/types.d.ts +113 -35
  120. package/dist/plus/agents/types.d.ts.map +1 -1
  121. package/dist/plus/agents/types.js +7 -4
  122. package/dist/plus/agents/types.js.map +1 -1
  123. package/dist/plus/ai/models/promptTemplates.d.ts +1 -1
  124. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  125. package/dist/plus/ai/prompts.d.ts +4 -0
  126. package/dist/plus/ai/prompts.d.ts.map +1 -1
  127. package/dist/plus/ai/prompts.js +59 -4
  128. package/dist/plus/ai/prompts.js.map +1 -1
  129. package/dist/plus/git-github/api/github.d.ts +44 -1
  130. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  131. package/dist/plus/git-github/api/github.js +355 -62
  132. package/dist/plus/git-github/api/github.js.map +1 -1
  133. package/dist/plus/git-github/api/issueSearchQuery.d.ts +13 -0
  134. package/dist/plus/git-github/api/issueSearchQuery.d.ts.map +1 -1
  135. package/dist/plus/git-github/api/issueSearchQuery.js +41 -0
  136. package/dist/plus/git-github/api/issueSearchQuery.js.map +1 -1
  137. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  138. package/dist/plus/git-github/providers/github/blame.js +2 -1
  139. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  140. package/dist/plus/integrations/collectionMetadata.d.ts +2 -0
  141. package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -1
  142. package/dist/plus/integrations/collectionMetadata.js +17 -1
  143. package/dist/plus/integrations/collectionMetadata.js.map +1 -1
  144. package/dist/plus/integrations/context.d.ts +4 -1
  145. package/dist/plus/integrations/context.d.ts.map +1 -1
  146. package/dist/plus/integrations/index.d.ts +1 -0
  147. package/dist/plus/integrations/index.d.ts.map +1 -1
  148. package/dist/plus/integrations/integrationService.d.ts +20 -1
  149. package/dist/plus/integrations/integrationService.d.ts.map +1 -1
  150. package/dist/plus/integrations/integrationService.js +12 -4
  151. package/dist/plus/integrations/integrationService.js.map +1 -1
  152. package/dist/plus/integrations/manager.d.ts +48 -0
  153. package/dist/plus/integrations/manager.d.ts.map +1 -1
  154. package/dist/plus/integrations/models/gitHostIntegration.d.ts +53 -26
  155. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
  156. package/dist/plus/integrations/models/gitHostIntegration.js +123 -47
  157. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  158. package/dist/plus/integrations/models/integration.d.ts +10 -1
  159. package/dist/plus/integrations/models/integration.d.ts.map +1 -1
  160. package/dist/plus/integrations/models/integration.js +52 -19
  161. package/dist/plus/integrations/models/integration.js.map +1 -1
  162. package/dist/plus/integrations/models/issueCache.d.ts +16 -0
  163. package/dist/plus/integrations/models/issueCache.d.ts.map +1 -0
  164. package/dist/plus/integrations/models/issueCache.js +9 -0
  165. package/dist/plus/integrations/models/issueCache.js.map +1 -0
  166. package/dist/plus/integrations/models/issueReads.d.ts +13 -0
  167. package/dist/plus/integrations/models/issueReads.d.ts.map +1 -1
  168. package/dist/plus/integrations/models/issuesIntegration.d.ts +11 -13
  169. package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
  170. package/dist/plus/integrations/models/issuesIntegration.js +15 -1
  171. package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
  172. package/dist/plus/integrations/providers/azureDevOps.d.ts +3 -5
  173. package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -1
  174. package/dist/plus/integrations/providers/azureDevOps.js +9 -8
  175. package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
  176. package/dist/plus/integrations/providers/bitbucket-server.d.ts +3 -5
  177. package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -1
  178. package/dist/plus/integrations/providers/bitbucket-server.js +2 -2
  179. package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
  180. package/dist/plus/integrations/providers/bitbucket.d.ts +3 -5
  181. package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -1
  182. package/dist/plus/integrations/providers/bitbucket.js +2 -1
  183. package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
  184. package/dist/plus/integrations/providers/github.d.ts +12 -5
  185. package/dist/plus/integrations/providers/github.d.ts.map +1 -1
  186. package/dist/plus/integrations/providers/github.js +10 -3
  187. package/dist/plus/integrations/providers/github.js.map +1 -1
  188. package/dist/plus/integrations/providers/gitlab.d.ts +3 -5
  189. package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
  190. package/dist/plus/integrations/providers/gitlab.js +2 -2
  191. package/dist/plus/integrations/providers/gitlab.js.map +1 -1
  192. package/dist/plus/integrations/providers/jira.d.ts +3 -7
  193. package/dist/plus/integrations/providers/jira.d.ts.map +1 -1
  194. package/dist/plus/integrations/providers/jira.js +35 -22
  195. package/dist/plus/integrations/providers/jira.js.map +1 -1
  196. package/dist/plus/integrations/providers/jiraIssueByKey.d.ts +7 -0
  197. package/dist/plus/integrations/providers/jiraIssueByKey.d.ts.map +1 -0
  198. package/dist/plus/integrations/providers/jiraIssueByKey.js +102 -0
  199. package/dist/plus/integrations/providers/jiraIssueByKey.js.map +1 -0
  200. package/dist/plus/integrations/providers/linear.d.ts +3 -7
  201. package/dist/plus/integrations/providers/linear.d.ts.map +1 -1
  202. package/dist/plus/integrations/providers/linear.js +23 -22
  203. package/dist/plus/integrations/providers/linear.js.map +1 -1
  204. package/dist/plus/integrations/providers/models.d.ts +3 -1
  205. package/dist/plus/integrations/providers/models.d.ts.map +1 -1
  206. package/dist/plus/integrations/providers/models.js +10 -4
  207. package/dist/plus/integrations/providers/models.js.map +1 -1
  208. package/dist/plus/integrations/providers/providerErrors.d.ts +7 -0
  209. package/dist/plus/integrations/providers/providerErrors.d.ts.map +1 -0
  210. package/dist/plus/integrations/providers/providerErrors.js +91 -0
  211. package/dist/plus/integrations/providers/providerErrors.js.map +1 -0
  212. package/dist/plus/integrations/providers/providersApi.d.ts +3 -2
  213. package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -1
  214. package/dist/plus/integrations/providers/providersApi.js +18 -52
  215. package/dist/plus/integrations/providers/providersApi.js.map +1 -1
  216. package/dist/plus/integrations/providers/trello.d.ts +2 -7
  217. package/dist/plus/integrations/providers/trello.d.ts.map +1 -1
  218. package/dist/plus/integrations/providers/trello.js +3 -1
  219. package/dist/plus/integrations/providers/trello.js.map +1 -1
  220. package/dist/plus/integrations/providers/utils/providerPaging.d.ts +2 -0
  221. package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -1
  222. package/dist/plus/integrations/providers/utils/providerPaging.js +12 -7
  223. package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -1
  224. package/dist/plus/integrations/reads/broaden.d.ts +47 -10
  225. package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
  226. package/dist/plus/integrations/reads/broaden.js +144 -33
  227. package/dist/plus/integrations/reads/broaden.js.map +1 -1
  228. package/dist/plus/integrations/reads/filters.d.ts +18 -0
  229. package/dist/plus/integrations/reads/filters.d.ts.map +1 -1
  230. package/dist/plus/integrations/reads/filters.js +37 -1
  231. package/dist/plus/integrations/reads/filters.js.map +1 -1
  232. package/dist/plus/integrations/reads/issueBatch.d.ts +51 -0
  233. package/dist/plus/integrations/reads/issueBatch.d.ts.map +1 -0
  234. package/dist/plus/integrations/reads/issueBatch.js +91 -0
  235. package/dist/plus/integrations/reads/issueBatch.js.map +1 -0
  236. package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -1
  237. package/dist/plus/integrations/reads/issueTracker.js +23 -17
  238. package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
  239. package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -1
  240. package/dist/plus/integrations/reads/sweeps.js +5 -3
  241. package/dist/plus/integrations/reads/sweeps.js.map +1 -1
  242. package/dist/plus/integrations/reads/trackerIssue.d.ts +21 -0
  243. package/dist/plus/integrations/reads/trackerIssue.d.ts.map +1 -0
  244. package/dist/plus/integrations/reads/trackerIssue.js +51 -0
  245. package/dist/plus/integrations/reads/trackerIssue.js.map +1 -0
  246. package/dist/plus/integrations/reads/warnings.d.ts +2 -15
  247. package/dist/plus/integrations/reads/warnings.d.ts.map +1 -1
  248. package/dist/plus/integrations/reads/warnings.js +19 -1
  249. package/dist/plus/integrations/reads/warnings.js.map +1 -1
  250. package/dist/plus/integrations/results.d.ts +4 -20
  251. package/dist/plus/integrations/results.d.ts.map +1 -1
  252. package/dist/plus/integrations/results.js.map +1 -1
  253. package/dist/utils/promise.d.ts +2 -0
  254. package/dist/utils/promise.d.ts.map +1 -1
  255. package/dist/utils/promise.js +11 -0
  256. package/dist/utils/promise.js.map +1 -1
  257. package/dist/utils/promiseCache.d.ts +19 -0
  258. package/dist/utils/promiseCache.d.ts.map +1 -1
  259. package/dist/utils/promiseCache.js +30 -0
  260. package/dist/utils/promiseCache.js.map +1 -1
  261. package/dist/utils/resourceUsage.d.ts +5 -0
  262. package/dist/utils/resourceUsage.d.ts.map +1 -0
  263. package/dist/utils/resourceUsage.js +2 -0
  264. package/dist/utils/resourceUsage.js.map +1 -0
  265. package/dist/utils/string.d.ts +12 -0
  266. package/dist/utils/string.d.ts.map +1 -1
  267. package/dist/utils/string.js +36 -1
  268. package/dist/utils/string.js.map +1 -1
  269. package/docs/integrations.md +48 -33
  270. package/docs/kepler-read-api-parity.md +25 -4
  271. package/package.json +12 -4
  272. package/src/git/cache.ts +36 -0
  273. package/src/git/context.ts +11 -0
  274. package/src/git/errors.ts +13 -1
  275. package/src/git/features.ts +51 -0
  276. package/src/git/gitHealth.ts +522 -0
  277. package/src/git/models/search.ts +19 -4
  278. package/src/git/parsers/diffParser.ts +27 -4
  279. package/src/git/providers/config.ts +42 -1
  280. package/src/git/providers/graph.ts +12 -0
  281. package/src/git/providers/maintenance.ts +224 -0
  282. package/src/git/providers/operations.ts +10 -0
  283. package/src/git/providers/pausedOperations.ts +3 -0
  284. package/src/git/providers/provider.ts +2 -0
  285. package/src/git/providers/tags.ts +1 -0
  286. package/src/git/repositoryService.ts +1 -0
  287. package/src/git/run.types.ts +8 -0
  288. package/src/git/service.ts +3 -0
  289. package/src/git/utils/search.utils.ts +129 -5
  290. package/src/git/watching/watchService.ts +10 -0
  291. package/src/git-cli/cliGitProvider.ts +25 -0
  292. package/src/git-cli/exec/git.ts +120 -6
  293. package/src/git-cli/exec/gitQueue.ts +19 -17
  294. package/src/git-cli/parsers/logParser.ts +4 -1
  295. package/src/git-cli/providers/blame.ts +3 -8
  296. package/src/git-cli/providers/branches.ts +28 -8
  297. package/src/git-cli/providers/commits.ts +34 -2
  298. package/src/git-cli/providers/config.ts +38 -6
  299. package/src/git-cli/providers/graph.ts +107 -7
  300. package/src/git-cli/providers/maintenance.ts +2599 -0
  301. package/src/git-cli/providers/operations.ts +11 -0
  302. package/src/git-cli/providers/pausedOperations.ts +7 -2
  303. package/src/git-cli/providers/tags.ts +36 -1
  304. package/src/plus/agents/agentCapabilities.ts +286 -0
  305. package/src/plus/agents/providers/claudeCodeTranscript.ts +313 -58
  306. package/src/plus/agents/providers/{claudeCodeProvider.ts → gkAgentProvider.ts} +1123 -277
  307. package/src/plus/agents/types.ts +137 -40
  308. package/src/plus/ai/models/promptTemplates.ts +1 -1
  309. package/src/plus/ai/prompts.ts +62 -4
  310. package/src/plus/git-github/api/github.ts +404 -82
  311. package/src/plus/git-github/api/issueSearchQuery.ts +49 -1
  312. package/src/plus/git-github/providers/github/blame.ts +2 -1
  313. package/src/plus/integrations/collectionMetadata.ts +23 -1
  314. package/src/plus/integrations/context.ts +1 -1
  315. package/src/plus/integrations/index.ts +1 -0
  316. package/src/plus/integrations/integrationService.ts +29 -4
  317. package/src/plus/integrations/manager.ts +48 -0
  318. package/src/plus/integrations/models/gitHostIntegration.ts +165 -129
  319. package/src/plus/integrations/models/integration.ts +57 -22
  320. package/src/plus/integrations/models/issueCache.ts +29 -0
  321. package/src/plus/integrations/models/issueReads.ts +15 -0
  322. package/src/plus/integrations/models/issuesIntegration.ts +38 -8
  323. package/src/plus/integrations/providers/azureDevOps.ts +16 -13
  324. package/src/plus/integrations/providers/bitbucket-server.ts +4 -6
  325. package/src/plus/integrations/providers/bitbucket.ts +3 -4
  326. package/src/plus/integrations/providers/github.ts +23 -7
  327. package/src/plus/integrations/providers/gitlab.ts +4 -6
  328. package/src/plus/integrations/providers/jira.ts +52 -26
  329. package/src/plus/integrations/providers/jiraIssueByKey.ts +155 -0
  330. package/src/plus/integrations/providers/linear.ts +38 -25
  331. package/src/plus/integrations/providers/models.ts +17 -5
  332. package/src/plus/integrations/providers/providerErrors.ts +115 -0
  333. package/src/plus/integrations/providers/providersApi.ts +26 -68
  334. package/src/plus/integrations/providers/trello.ts +5 -4
  335. package/src/plus/integrations/providers/utils/providerPaging.ts +14 -7
  336. package/src/plus/integrations/reads/broaden.ts +282 -70
  337. package/src/plus/integrations/reads/filters.ts +39 -1
  338. package/src/plus/integrations/reads/issueBatch.ts +197 -0
  339. package/src/plus/integrations/reads/issueTracker.ts +26 -24
  340. package/src/plus/integrations/reads/sweeps.ts +19 -12
  341. package/src/plus/integrations/reads/trackerIssue.ts +105 -0
  342. package/src/plus/integrations/reads/warnings.ts +23 -17
  343. package/src/plus/integrations/results.ts +4 -20
  344. package/src/utils/promise.ts +15 -0
  345. package/src/utils/promiseCache.ts +43 -0
  346. package/src/utils/resourceUsage.ts +5 -0
  347. package/src/utils/string.ts +38 -1
  348. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +0 -1
  349. package/dist/plus/agents/providers/claudeCodeProvider.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ import type { AgentHookEvent } from './types.js';
2
+ /** `gk ai hook` client id — the id the GitKraken CLI stamps onto every relayed hook event. NOT
3
+ * the same namespace as {@link AgentProviderId}. */
4
+ export type AgentHookClientId = 'claude-code' | 'codex' | 'copilot' | 'opencode';
5
+ /** GitLens session provider id — what lands on `AgentSession.providerId` and in telemetry. NOT
6
+ * the same namespace as {@link AgentHookClientId}. */
7
+ export type AgentProviderId = 'claudeCode' | 'codex' | 'copilot' | 'opencode';
8
+ /** Icon-font glyph name used to badge the agent in the UI. Every member must name a `ThemeIcon` id
9
+ * that actually exists: either a codicon glyph name (`codicons-map.ts` is generated from VS Code's
10
+ * own font, so it isn't ours to extend) or a GitLens-contributed `gitlens-*` id from the `glicons`
11
+ * font, built from SVGs in `images/icons/`. An agent with no mark of its own uses `robot` — a name
12
+ * with no glyph renders as tofu, it does not fall back. */
13
+ export type AgentIconName = 'claude' | 'openai' | 'copilot' | 'gitlens-provider-opencode' | 'robot';
14
+ /**
15
+ * Flat, data-only description of one supported `gk ai hook` client. Mirrors how the GitKraken CLI
16
+ * models its own clients (`internal/actions/aihook/events.json` + `registry.go`) so the two stay
17
+ * comparable: the CLI relays each agent's native event and tool names verbatim, and this table is
18
+ * what translates them into the canonical (Claude Code) vocabulary.
19
+ */
20
+ export interface AgentCapabilities {
21
+ /** The `gk ai hook` client id events arrive stamped with. */
22
+ readonly hookClientId: AgentHookClientId;
23
+ /** The GitLens session provider id — see {@link AgentProviderId}. */
24
+ readonly providerId: AgentProviderId;
25
+ readonly displayName: string;
26
+ readonly icon: AgentIconName;
27
+ /** Native event name → canonical event. Omitted when the agent's native names are already
28
+ * canonical. */
29
+ readonly eventMap?: Readonly<Record<string, AgentHookEvent>>;
30
+ /** Escape hatch for the cases where the native event name alone can't determine the canonical
31
+ * event and the payload has to be consulted. Tried BEFORE {@link eventMap}; returning
32
+ * `undefined` falls through to it. `hookInput` is the ROOT of the JSON the agent piped to
33
+ * `gk ai hook run` (what the CLI relays verbatim as `hookInput`), not a pre-unwrapped payload —
34
+ * navigate the agent's own nesting from there. */
35
+ readonly resolveEvent?: (nativeEvent: string, hookInput: Record<string, unknown> | undefined) => AgentHookEvent | undefined;
36
+ /** Native tool name → canonical (Claude Code) tool name. Omitted when already canonical. */
37
+ readonly toolNameMap?: Readonly<Record<string, string>>;
38
+ /** Native event names to register as non-blocking hooks at install time. `undefined` means
39
+ * "pass no event flags and let `gk` apply its own per-client defaults". */
40
+ readonly installEvents?: readonly string[];
41
+ /** Native event names to register as blocking hooks at install time. `undefined` means
42
+ * "pass no event flags and let `gk` apply its own per-client defaults". */
43
+ readonly installBlockingEvents?: readonly string[];
44
+ /** The agent can be installed with blocking hooks, so GitLens can answer a permission ask. */
45
+ readonly supportsBlockingPermissions: boolean;
46
+ /** The agent writes an on-disk transcript GitLens can tail for titles/prompts. */
47
+ readonly supportsTranscripts: boolean;
48
+ /** A past session can be resumed from its cwd. */
49
+ readonly supportsResume: boolean;
50
+ /** The agent multiplexes concurrent sessions in one process, so a pid does not identify a
51
+ * session (matches the CLI's `pidSharingClients`). */
52
+ readonly sharesPids: boolean;
53
+ /** Extra step the agent's own host requires before installed hooks will actually fire. Undefined
54
+ * when installing is sufficient. Not a computed state — we cannot detect whether the step has been
55
+ * done, so consumers surface this unconditionally whenever hooks are installed. */
56
+ readonly manualActivation?: string;
57
+ }
58
+ /** Exported because Claude Code is the wire default: an event with no `providerId` comes from a CLI
59
+ * too old to stamp one, which predates every other client. */
60
+ export declare const claudeCodeCapabilities: AgentCapabilities;
61
+ /** Every supported hook client, in registry order. */
62
+ export declare const agentCapabilities: readonly AgentCapabilities[];
63
+ /** Looks up capabilities by `gk ai hook` client id. Returns `undefined` for clients GitLens has no
64
+ * descriptor for (the CLI supports more than this table does). */
65
+ export declare function getAgentCapabilities(hookClientId: string): AgentCapabilities | undefined;
66
+ /** Looks up capabilities by GitLens session provider id. */
67
+ export declare function getAgentCapabilitiesByProviderId(providerId: string): AgentCapabilities | undefined;
68
+ /**
69
+ * Translates an agent's native hook event name into the canonical vocabulary: `resolveEvent` first,
70
+ * then `eventMap`, then an identity pass-through for names that are already canonical. Returns
71
+ * `undefined` for anything else — unknown strings are never assumed to be canonical events.
72
+ */
73
+ export declare function resolveCanonicalHookEvent(capabilities: AgentCapabilities, nativeEvent: string, hookInput?: Record<string, unknown>): AgentHookEvent | undefined;
74
+ /** Translates an agent's native tool name into the canonical (Claude Code) tool name, falling back
75
+ * to the input unchanged when the agent has no alias for it. */
76
+ export declare function resolveCanonicalToolName(capabilities: AgentCapabilities, nativeToolName: string): string;
77
+ //# sourceMappingURL=agentCapabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentCapabilities.d.ts","sourceRoot":"","sources":["../../../src/plus/agents/agentCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD;qDACqD;AACrD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjF;uDACuD;AACvD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9E;;;;4DAI4D;AAC5D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,2BAA2B,GAAG,OAAO,CAAC;AAEpG;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B;qBACiB;IACjB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D;;;;uDAImD;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAC1C,cAAc,GAAG,SAAS,CAAC;IAChC,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAExD;gFAC4E;IAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;gFAC4E;IAC5E,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnD,8FAA8F;IAC9F,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;2DACuD;IACvD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;wFAEoF;IACpF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACnC;AAkBD;+DAC+D;AAC/D,eAAO,MAAM,sBAAsB,EAAE,iBAYpC,CAAC;AA+IF,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,iBAAiB,EAKzD,CAAC;AAEF;mEACmE;AACnE,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAExF;AAED,4DAA4D;AAC5D,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAElG;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,cAAc,GAAG,SAAS,CAQ5B;AAED;iEACiE;AACjE,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAExG"}
@@ -0,0 +1,197 @@
1
+ import { canonicalBlockingHookEvents, canonicalNonBlockingHookEvents } from './types.js';
2
+ const canonicalHookEvents = new Set([...canonicalNonBlockingHookEvents, ...canonicalBlockingHookEvents]);
3
+ function asRecord(value) {
4
+ return typeof value === 'object' && value != null ? value : undefined;
5
+ }
6
+ function isCanonicalHookEvent(event) {
7
+ return canonicalHookEvents.has(event);
8
+ }
9
+ /** Claude Code's install set: its full native vocabulary minus the worktree events, which the CLI
10
+ * also skips by default (`skippedDefaultEvents` in its `events.json`) and GitLens has no use for. */
11
+ const claudeCodeInstallEvents = canonicalNonBlockingHookEvents.filter(e => e !== 'WorktreeCreate' && e !== 'WorktreeRemove');
12
+ /** Exported because Claude Code is the wire default: an event with no `providerId` comes from a CLI
13
+ * too old to stamp one, which predates every other client. */
14
+ export const claudeCodeCapabilities = {
15
+ hookClientId: 'claude-code',
16
+ providerId: 'claudeCode',
17
+ displayName: 'Claude Code',
18
+ icon: 'claude',
19
+ // No `eventMap`/`toolNameMap` — Claude Code's vocabulary IS the canonical one.
20
+ installEvents: claudeCodeInstallEvents,
21
+ installBlockingEvents: canonicalBlockingHookEvents,
22
+ supportsBlockingPermissions: true,
23
+ supportsTranscripts: true,
24
+ supportsResume: true,
25
+ sharesPids: false,
26
+ };
27
+ const codexCapabilities = {
28
+ hookClientId: 'codex',
29
+ providerId: 'codex',
30
+ displayName: 'Codex',
31
+ icon: 'openai',
32
+ // No `eventMap` — Codex emits canonical event names already.
33
+ toolNameMap: {
34
+ apply_patch: 'Edit',
35
+ // `update_plan` is deliberately NOT mapped to `ExitPlanMode`: it's a todo-list update, not a
36
+ // plan-approval ask, and mapping it would classify routine progress as a permission prompt.
37
+ // Left unmapped so it falls through to the generic tool path.
38
+ },
39
+ // `undefined` install sets: let `gk` apply its per-client defaults for now. Blocking permissions
40
+ // are supported by the client but not requested until a later phase.
41
+ supportsBlockingPermissions: true,
42
+ supportsTranscripts: false,
43
+ supportsResume: false,
44
+ // The CLI lists codex in `pidSharingClients` — it multiplexes sessions in one process.
45
+ sharesPids: true,
46
+ // Verified empirically, not speculative: running an identical Codex session with
47
+ // `--dangerously-bypass-hook-trust` fires the installed hooks immediately (a session record
48
+ // appears); without that flag, zero records — Codex silently refuses to run command hooks it
49
+ // hasn't trusted yet, with no log line or warning of any kind. Trust is granted via `/hooks`
50
+ // inside interactive Codex and is bound to the hook's hash, so a reinstall invalidates it. There
51
+ // is no known way to detect trust state from outside Codex, so this hint is unconditional.
52
+ manualActivation: "Codex won't run these hooks until you trust them — run `/hooks` in Codex. You'll need to trust them again if the hooks are reinstalled.",
53
+ };
54
+ const copilotCapabilities = {
55
+ hookClientId: 'copilot',
56
+ providerId: 'copilot',
57
+ displayName: 'GitHub Copilot CLI',
58
+ icon: 'copilot',
59
+ eventMap: {
60
+ // Copilot's event names are otherwise canonical; `ErrorOccurred` is the one with no canonical
61
+ // equivalent, so it maps onto Claude's turn-ended-in-error event (which derives to `idle`).
62
+ ErrorOccurred: 'StopFailure',
63
+ },
64
+ // Copilot's own documented tool alias table.
65
+ toolNameMap: {
66
+ bash: 'Bash',
67
+ // `powershell` is deliberately absent. Aliasing it to `Bash` would only be worth the lost
68
+ // label fidelity (a PowerShell call rendering as `Bash(...)`) if it bought the command detail
69
+ // `describeToolInput` extracts for shells — and it can't: Copilot relays its args as
70
+ // `hookInput.toolInput` (camelCase), a key nothing here reads, so no tool input reaches us at
71
+ // all. Pure label loss today; revisit if Copilot's tool inputs ever become readable.
72
+ view: 'Read',
73
+ create: 'Write',
74
+ edit: 'Edit',
75
+ str_replace_editor: 'Edit',
76
+ apply_patch: 'Edit',
77
+ grep: 'Grep',
78
+ rg: 'Grep',
79
+ glob: 'Glob',
80
+ web_fetch: 'WebFetch',
81
+ web_search: 'WebSearch',
82
+ ask_user: 'AskUserQuestion',
83
+ },
84
+ supportsBlockingPermissions: true,
85
+ supportsTranscripts: false,
86
+ supportsResume: false,
87
+ sharesPids: false,
88
+ };
89
+ /** Reads the status type out of an OpenCode `session.status` hook input. The CLI's generated
90
+ * OpenCode plugin nests the raw SDK event under `hook_payload.event` (`buildHookInput` sets
91
+ * `hook_payload: payload`, and the generic event hook passes `{ event }`), so the full path from
92
+ * the hook-input root is `hook_payload.event.properties.status.type`. The payload is untyped JSON,
93
+ * so every hop is checked rather than cast. */
94
+ function getOpenCodeSessionStatusType(hookInput) {
95
+ const hookPayload = asRecord(hookInput?.hook_payload);
96
+ const event = asRecord(hookPayload?.event);
97
+ const properties = asRecord(event?.properties);
98
+ const status = asRecord(properties?.status);
99
+ const type = status?.type;
100
+ return typeof type === 'string' ? type : undefined;
101
+ }
102
+ const openCodeCapabilities = {
103
+ hookClientId: 'opencode',
104
+ providerId: 'opencode',
105
+ displayName: 'OpenCode',
106
+ icon: 'gitlens-provider-opencode',
107
+ eventMap: {
108
+ 'session.created': 'SessionStart',
109
+ 'session.deleted': 'SessionEnd',
110
+ // `session.idle` is deprecated in OpenCode's own source in favor of `session.status`, which is
111
+ // why both are handled — older builds still emit it.
112
+ 'session.idle': 'Stop',
113
+ 'session.error': 'StopFailure',
114
+ 'session.compacted': 'PostCompact',
115
+ 'permission.asked': 'PermissionRequest',
116
+ 'permission.replied': 'ElicitationResult',
117
+ 'tool.execute.before': 'PreToolUse',
118
+ 'tool.execute.after': 'PostToolUse',
119
+ // `session.updated` is intentionally absent — it has no canonical analogue.
120
+ // `session.status` is resolved by `resolveEvent` below, since its meaning is in the payload.
121
+ },
122
+ // Only `idle` resolves. `busy` is deliberately unmapped, and so is everything else (`retry`
123
+ // included): the canonical event this returns doesn't just pick a status, it selects a branch of
124
+ // the provider's state-machine switch, so a mapping inherits that event's ENTIRE handler. Naming
125
+ // `PostToolUse` here would also clear a pending permission ask, decrement the parallel-tool
126
+ // refcount, and schedule file decorations away — all wrong for a tick OpenCode emits
127
+ // independently of any tool lifecycle, and the ask-clearing is visibly wrong (the agent is still
128
+ // blocked on it). There is no tool-free canonical event meaning "resumed working", and `busy`
129
+ // carries no tool semantics to justify inventing one.
130
+ resolveEvent: (nativeEvent, hookInput) => {
131
+ if (nativeEvent !== 'session.status')
132
+ return undefined;
133
+ return getOpenCodeSessionStatusType(hookInput) === 'idle' ? 'Stop' : undefined;
134
+ },
135
+ toolNameMap: {
136
+ bash: 'Bash',
137
+ read: 'Read',
138
+ write: 'Write',
139
+ edit: 'Edit',
140
+ grep: 'Grep',
141
+ glob: 'Glob',
142
+ webfetch: 'WebFetch',
143
+ websearch: 'WebSearch',
144
+ apply_patch: 'Edit',
145
+ },
146
+ // The CLI hard-errors when asked to install blocking events for opencode.
147
+ supportsBlockingPermissions: false,
148
+ supportsTranscripts: false,
149
+ supportsResume: false,
150
+ sharesPids: false,
151
+ // OpenCode's tool hooks carry no per-call cwd: the CLI's generated plugin supplies the
152
+ // plugin-init directory once, so a session's reported cwd is frozen at that value and never
153
+ // reflects later movement. Deliberately prose and NOT a capability flag — it was one, and
154
+ // nothing could be built on it. Every cwd-driven path in `gkAgentProvider` (the
155
+ // visited-worktree unions, `cwdTimeline` resolution, the `cliSeatedWorktree` unexplained-move
156
+ // clear) reacts only to an OBSERVED difference between successive cwds, so a frozen cwd
157
+ // degrades each one to its already-correct single-value no-op. A flag hands that code no fact
158
+ // it can act on: it explains why the diff never fires, it does not supply the directory the
159
+ // hooks never sent. Promote it back to a field if a surface ever needs to caveat the
160
+ // attribution to the user — that would be its first real consumer.
161
+ };
162
+ /** Every supported hook client, in registry order. */
163
+ export const agentCapabilities = [
164
+ claudeCodeCapabilities,
165
+ codexCapabilities,
166
+ copilotCapabilities,
167
+ openCodeCapabilities,
168
+ ];
169
+ /** Looks up capabilities by `gk ai hook` client id. Returns `undefined` for clients GitLens has no
170
+ * descriptor for (the CLI supports more than this table does). */
171
+ export function getAgentCapabilities(hookClientId) {
172
+ return agentCapabilities.find(c => c.hookClientId === hookClientId);
173
+ }
174
+ /** Looks up capabilities by GitLens session provider id. */
175
+ export function getAgentCapabilitiesByProviderId(providerId) {
176
+ return agentCapabilities.find(c => c.providerId === providerId);
177
+ }
178
+ /**
179
+ * Translates an agent's native hook event name into the canonical vocabulary: `resolveEvent` first,
180
+ * then `eventMap`, then an identity pass-through for names that are already canonical. Returns
181
+ * `undefined` for anything else — unknown strings are never assumed to be canonical events.
182
+ */
183
+ export function resolveCanonicalHookEvent(capabilities, nativeEvent, hookInput) {
184
+ const resolved = capabilities.resolveEvent?.(nativeEvent, hookInput);
185
+ if (resolved != null)
186
+ return resolved;
187
+ const mapped = capabilities.eventMap?.[nativeEvent];
188
+ if (mapped != null)
189
+ return mapped;
190
+ return isCanonicalHookEvent(nativeEvent) ? nativeEvent : undefined;
191
+ }
192
+ /** Translates an agent's native tool name into the canonical (Claude Code) tool name, falling back
193
+ * to the input unchanged when the agent has no alias for it. */
194
+ export function resolveCanonicalToolName(capabilities, nativeToolName) {
195
+ return capabilities.toolNameMap?.[nativeToolName] ?? nativeToolName;
196
+ }
197
+ //# sourceMappingURL=agentCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentCapabilities.js","sourceRoot":"","sources":["../../../src/plus/agents/agentCapabilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAqEzF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,8BAA8B,EAAE,GAAG,2BAA2B,CAAC,CAAC,CAAC;AAEjH,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IAC1C,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;sGACsG;AACtG,MAAM,uBAAuB,GAA8B,8BAA8B,CAAC,MAAM,CAC/F,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAC,KAAK,gBAAgB,CACrD,CAAC;AAEF;+DAC+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACxD,YAAY,EAAE,aAAa;IAC3B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,QAAQ;IACd,+EAA+E;IAC/E,aAAa,EAAE,uBAAuB;IACtC,qBAAqB,EAAE,2BAA2B;IAClD,2BAA2B,EAAE,IAAI;IACjC,mBAAmB,EAAE,IAAI;IACzB,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,KAAK;CACjB,CAAC;AAEF,MAAM,iBAAiB,GAAsB;IAC5C,YAAY,EAAE,OAAO;IACrB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,OAAO;IACpB,IAAI,EAAE,QAAQ;IACd,6DAA6D;IAC7D,WAAW,EAAE;QACZ,WAAW,EAAE,MAAM;QACnB,6FAA6F;QAC7F,4FAA4F;QAC5F,8DAA8D;KAC9D;IACD,iGAAiG;IACjG,qEAAqE;IACrE,2BAA2B,EAAE,IAAI;IACjC,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,KAAK;IACrB,uFAAuF;IACvF,UAAU,EAAE,IAAI;IAChB,iFAAiF;IACjF,4FAA4F;IAC5F,6FAA6F;IAC7F,6FAA6F;IAC7F,iGAAiG;IACjG,2FAA2F;IAC3F,gBAAgB,EACf,yIAAyI;CAC1I,CAAC;AAEF,MAAM,mBAAmB,GAAsB;IAC9C,YAAY,EAAE,SAAS;IACvB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,oBAAoB;IACjC,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE;QACT,8FAA8F;QAC9F,4FAA4F;QAC5F,aAAa,EAAE,aAAa;KAC5B;IACD,6CAA6C;IAC7C,WAAW,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,0FAA0F;QAC1F,8FAA8F;QAC9F,qFAAqF;QACrF,8FAA8F;QAC9F,qFAAqF;QACrF,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,MAAM;QACZ,kBAAkB,EAAE,MAAM;QAC1B,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,iBAAiB;KAC3B;IACD,2BAA2B,EAAE,IAAI;IACjC,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;CACjB,CAAC;AAEF;;;;gDAIgD;AAChD,SAAS,4BAA4B,CAAC,SAA8C;IACnF,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;IAE1B,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,oBAAoB,GAAsB;IAC/C,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,2BAA2B;IACjC,QAAQ,EAAE;QACT,iBAAiB,EAAE,cAAc;QACjC,iBAAiB,EAAE,YAAY;QAC/B,+FAA+F;QAC/F,qDAAqD;QACrD,cAAc,EAAE,MAAM;QACtB,eAAe,EAAE,aAAa;QAC9B,mBAAmB,EAAE,aAAa;QAClC,kBAAkB,EAAE,mBAAmB;QACvC,oBAAoB,EAAE,mBAAmB;QACzC,qBAAqB,EAAE,YAAY;QACnC,oBAAoB,EAAE,aAAa;QACnC,4EAA4E;QAC5E,6FAA6F;KAC7F;IACD,4FAA4F;IAC5F,iGAAiG;IACjG,iGAAiG;IACjG,4FAA4F;IAC5F,qFAAqF;IACrF,iGAAiG;IACjG,8FAA8F;IAC9F,sDAAsD;IACtD,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE;QACxC,IAAI,WAAW,KAAK,gBAAgB;YAAE,OAAO,SAAS,CAAC;QAEvD,OAAO,4BAA4B,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,CAAC;IACD,WAAW,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,WAAW;QACtB,WAAW,EAAE,MAAM;KACnB;IACD,0EAA0E;IAC1E,2BAA2B,EAAE,KAAK;IAClC,mBAAmB,EAAE,KAAK;IAC1B,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,uFAAuF;IACvF,4FAA4F;IAC5F,0FAA0F;IAC1F,gFAAgF;IAChF,8FAA8F;IAC9F,wFAAwF;IACxF,8FAA8F;IAC9F,4FAA4F;IAC5F,qFAAqF;IACrF,mEAAmE;CACnE,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC9D,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;CACpB,CAAC;AAEF;mEACmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACxD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;AACrE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gCAAgC,CAAC,UAAkB;IAClE,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACxC,YAA+B,EAC/B,WAAmB,EACnB,SAAmC;IAEnC,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrE,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IAEtC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IAElC,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED;iEACiE;AACjE,MAAM,UAAU,wBAAwB,CAAC,YAA+B,EAAE,cAAsB;IAC/F,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC;AACrE,CAAC"}
@@ -21,7 +21,16 @@ export interface TranscriptSessionListing {
21
21
  /** Every transcript in the directory, not just the summarized slice — drives "Showing N of M". */
22
22
  readonly total: number;
23
23
  }
24
- export interface CompletedTranscriptDetails {
24
+ /** A transcript found outside the queried cwd's project directory, plus the directory Claude
25
+ * actually uses to resolve it for `--resume`. */
26
+ export interface ResumableTranscriptSessionSummary extends TranscriptSessionSummary {
27
+ readonly cwd: string;
28
+ }
29
+ export interface ResumableTranscriptSessionListing {
30
+ readonly sessions: ResumableTranscriptSessionSummary[];
31
+ readonly total: number;
32
+ }
33
+ export interface EndedTranscriptDetails {
25
34
  titles: TranscriptTitles;
26
35
  firstPrompt?: string;
27
36
  lastPrompt?: string;
@@ -42,15 +51,33 @@ export declare class ClaudeCodeTranscriptReader {
42
51
  private readonly _cache;
43
52
  private readonly _generations;
44
53
  private readonly _listings;
54
+ /** Transcript file names per project directory — the readdir behind both the plain listing and
55
+ * the by-id scan, which sweeps every project directory. */
56
+ private readonly _names;
57
+ /** Project directories under {@link getProjectsRoot}, re-scanned by every by-id recovery. */
58
+ private _projectDirs;
45
59
  /** Insertion-ordered LRU — re-inserted on hit, oldest key evicted past {@link summaryCacheLimit}. */
46
60
  private readonly _summaries;
61
+ /** Resolved project path per transcript path, bounded like {@link _summaries}. */
62
+ private readonly _transcriptCwds;
47
63
  private _nextGen;
64
+ /** Bumped by {@link invalidateListings}; async listing scans capture it at entry and skip their
65
+ * cache write when it moved, so a stale in-flight result can't re-seed a just-cleared cache. */
66
+ private _listingGen;
67
+ /** Drops the directory-listing caches (entries, names, project dirs) so the next listing re-reads
68
+ * the store. Called when a session ends or is removed: its transcript may have appeared inside
69
+ * the TTL window, and a cached listing would hide the new file from the very fetch meant to
70
+ * surface it. Summary and cwd caches are keyed by file identity and stay valid, so they're kept.
71
+ * The generation bump makes any in-flight listing skip its own cache write — otherwise a scan
72
+ * started before the invalidation would re-seed the caches with pre-end results, freshly
73
+ * timestamped (same discipline as `resolve`'s per-session generations). */
74
+ invalidateListings(): void;
48
75
  resolve(sessionId: string, cwd: string | undefined): Promise<TranscriptTitles | undefined>;
49
76
  forget(sessionId: string): void;
50
77
  /**
51
- * One-shot read for a *completed* (terminal, static) session: extracts the transcript titles plus
78
+ * One-shot read for an *ended* (terminal, static) session: extracts the transcript titles plus
52
79
  * the first and last user prompts. Unlike {@link resolve}, it bypasses the tail cache — a finished
53
- * transcript never grows, so it's read once on demand (when a completed row is opened) and the
80
+ * transcript never grows, so it's read once on demand (when an ended row is opened) and the
54
81
  * result applied to the session. `last-prompt` entries carry the prompt as of that point; the first
55
82
  * one bearing a value is the session's opening prompt, the last its most recent. Returns `undefined`
56
83
  * when no transcript is found (archived/purged) — the caller keeps whatever durable-store fields it
@@ -62,19 +89,20 @@ export declare class ClaudeCodeTranscriptReader {
62
89
  * past any fixed head window, and a windowed read would then mistake a later prompt for the first,
63
90
  * poisoning the derived session name.
64
91
  */
65
- resolveCompletedDetails(sessionId: string, cwd: string | undefined): Promise<CompletedTranscriptDetails | undefined>;
92
+ resolveEndedDetails(sessionId: string, cwd: string | undefined): Promise<EndedTranscriptDetails | undefined>;
66
93
  /**
67
94
  * Lists the transcripts of sessions whose working directory is `cwd`, most-recently-active first,
68
- * summarizing until `limit` summarizable transcripts are found (bounded by a small scan slack)
69
- * not just the first `limit` on disk, since junk transcripts (dropped below) would otherwise starve
70
- * the result. `excludeSessionIds` is skipped before `limit` applies, and excluded entries are also
71
- * dropped from `total` — they're already shown elsewhere (e.g. as live sessions), so a caller's
72
- * "N of M" count must not double-count them.
95
+ * summarizing until `limit` summarizable transcripts are found not just the first `limit` on
96
+ * disk, since junk transcripts (dropped below) would otherwise starve the result.
97
+ * `excludeSessionIds` is skipped before `limit` applies, and excluded entries are also dropped
98
+ * from `total` — they're already shown elsewhere (e.g. as live sessions), so a caller's "N of M"
99
+ * count must not double-count them.
73
100
  *
74
- * Claude homes a transcript under the directory encoding the session's *current* cwd, migrating the
75
- * file if the session `cd`s — so this directory is exactly the set `claude --resume <id>` can find
76
- * when invoked from `cwd`, and every entry is resumable from there. The transcripts' own recorded
77
- * `cwd` is per-message and lags the move, so it must NOT be used to filter; the directory decides.
101
+ * Claude homes a transcript under the directory encoding the cwd from which the session started.
102
+ * That directory is authoritative for where `claude --resume <id>` can find the transcript, but
103
+ * Claude does not reliably move it when the session later changes worktrees. Callers that have a
104
+ * durable session-to-worktree association can recover those moved sessions with
105
+ * {@link listSessionsByIds}; this method intentionally remains the cheap legacy directory listing.
78
106
  *
79
107
  * Discovery (readdir + stat) covers the whole directory and is cheap; summarizing is not, so it's
80
108
  * capped. Entries whose summary yields neither a title nor a prompt are dropped — those are aborted
@@ -84,12 +112,48 @@ export declare class ClaudeCodeTranscriptReader {
84
112
  limit?: number;
85
113
  excludeSessionIds?: ReadonlySet<string>;
86
114
  }): Promise<TranscriptSessionListing>;
115
+ /**
116
+ * Finds a known set of session ids across every Claude project directory except `excludeCwd`'s.
117
+ * This is the recovery path for durable CLI records whose worktree changed after Claude chose the
118
+ * transcript's project directory. The caller supplies the association; transcript contents alone
119
+ * are deliberately not used to guess which current worktree owns an arbitrary old session.
120
+ *
121
+ * Each result carries the project path encoded by the directory that actually holds the transcript,
122
+ * so resuming it does not repeat discovery from the wrong worktree. Duplicate ids are counted once,
123
+ * with the newest transcript winning.
124
+ */
125
+ listSessionsByIds(sessionIds: ReadonlySet<string>, options?: {
126
+ limit?: number;
127
+ excludeCwd?: string;
128
+ }): Promise<ResumableTranscriptSessionListing>;
87
129
  /** Discovers every transcript in `dir`, newest first. The directory also holds one sibling
88
130
  * subdirectory per session (`<uuid>/subagents`, `<uuid>/tool-results`), so entries must be filtered
89
131
  * to files — a busy project has roughly as many subdirectories as transcripts. */
90
132
  private listEntries;
133
+ /** Stats `names` in `dir`, dropping the ones that failed — a transcript can vanish (or be
134
+ * archived) between the readdir and the stat. Unsorted; callers order as they need.
135
+ * Protected (like {@link readSummary}) so tests can interleave against the listing flow. */
136
+ protected statEntries(dir: string, names: string[]): Promise<TranscriptSessionEntry[]>;
137
+ /** The `.jsonl` file names in `dir`, cached for {@link listingCacheTtlMs}. Failures propagate
138
+ * uncached: an unreadable directory means different things to different callers, and the next
139
+ * call must be free to get a real answer. */
140
+ private listTranscriptNames;
141
+ /** Every project directory under the projects root, cached for {@link listingCacheTtlMs} — a
142
+ * by-id recovery sweeps all of them, once per queried worktree. */
143
+ private listProjectDirs;
144
+ /** Scans project directory names once, then stats only requested transcript ids. */
145
+ private listEntriesByIds;
146
+ /** `exhausted` reports whether every candidate was scanned — an exhausted scan has proven the
147
+ * exact valid count, so callers can report it instead of an upper bound that would keep a
148
+ * "Show More" affordance alive with nothing left to show. */
149
+ private collectSessions;
91
150
  /** Summarizes one transcript, reusing the cached result while its mtime and size are unchanged. */
92
151
  private resolveSummary;
152
+ /** Recovers the project path represented by the transcript's containing directory. A resolved
153
+ * answer is cached: it's a line-scan of the whole transcript, and the directory holding a given
154
+ * path never changes. A miss isn't cached — a `cwd` line can still land on append. */
155
+ private resolveTranscriptCwd;
156
+ private rememberTranscriptCwd;
93
157
  /**
94
158
  * Reads a summary from the first and last {@link summaryWindowSize} bytes of the transcript.
95
159
  *
@@ -1 +1 @@
1
- {"version":3,"file":"claudeCodeTranscript.d.ts","sourceRoot":"","sources":["../../../../src/plus/agents/providers/claudeCodeTranscript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeCodeTranscript.d.ts","sourceRoot":"","sources":["../../../../src/plus/agents/providers/claudeCodeTranscript.ts"],"names":[],"mappings":"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"}