@gitkraken/core-gitlens 0.5.116 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1915) hide show
  1. package/CHANGELOG.md +32 -1
  2. package/README.md +9 -2
  3. package/dist/_virtual/@oxc-project+runtime/helpers/esm/decorate.js +9 -0
  4. package/dist/_virtual/@oxc-project+runtime/helpers/esm/usingCtx.js +57 -0
  5. package/dist/git/cache.d.ts +297 -297
  6. package/dist/git/cache.js +948 -1276
  7. package/dist/git/cache.js.map +1 -1
  8. package/dist/git/context.d.ts +202 -197
  9. package/dist/git/context.js +12 -8
  10. package/dist/git/context.js.map +1 -1
  11. package/dist/git/errors.d.ts +268 -281
  12. package/dist/git/errors.js +928 -706
  13. package/dist/git/errors.js.map +1 -1
  14. package/dist/git/features.d.ts +3 -2
  15. package/dist/git/features.js +34 -55
  16. package/dist/git/features.js.map +1 -1
  17. package/dist/git/gitHealth.d.ts +88 -81
  18. package/dist/git/gitHealth.js +259 -329
  19. package/dist/git/gitHealth.js.map +1 -1
  20. package/dist/git/models/author.d.ts +12 -10
  21. package/dist/git/models/author.js +0 -2
  22. package/dist/git/models/autolink.d.ts +36 -37
  23. package/dist/git/models/autolink.js +0 -2
  24. package/dist/git/models/blame.d.ts +25 -23
  25. package/dist/git/models/blame.js +0 -2
  26. package/dist/git/models/branch.d.ts +74 -72
  27. package/dist/git/models/branch.js +132 -171
  28. package/dist/git/models/branch.js.map +1 -1
  29. package/dist/git/models/commit.d.ts +135 -133
  30. package/dist/git/models/commit.js +381 -484
  31. package/dist/git/models/commit.js.map +1 -1
  32. package/dist/git/models/contributor.d.ts +30 -29
  33. package/dist/git/models/contributor.js +56 -64
  34. package/dist/git/models/contributor.js.map +1 -1
  35. package/dist/git/models/defaultBranch.d.ts +5 -3
  36. package/dist/git/models/defaultBranch.js +0 -2
  37. package/dist/git/models/diff.d.ts +49 -47
  38. package/dist/git/models/diff.js +0 -2
  39. package/dist/git/models/file.d.ts +20 -18
  40. package/dist/git/models/file.js +0 -2
  41. package/dist/git/models/fileChange.d.ts +45 -43
  42. package/dist/git/models/fileChange.js +60 -66
  43. package/dist/git/models/fileChange.js.map +1 -1
  44. package/dist/git/models/fileStatus.d.ts +25 -23
  45. package/dist/git/models/fileStatus.js +30 -26
  46. package/dist/git/models/fileStatus.js.map +1 -1
  47. package/dist/git/models/graph.d.ts +328 -320
  48. package/dist/git/models/graph.js +31 -27
  49. package/dist/git/models/graph.js.map +1 -1
  50. package/dist/git/models/graphSearch.d.ts +37 -35
  51. package/dist/git/models/graphSearch.js +0 -2
  52. package/dist/git/models/graphSession.d.ts +158 -66
  53. package/dist/git/models/graphSession.js +72 -1
  54. package/dist/git/models/graphSession.js.map +1 -1
  55. package/dist/git/models/issue.d.ts +174 -140
  56. package/dist/git/models/issue.js +86 -84
  57. package/dist/git/models/issue.js.map +1 -1
  58. package/dist/git/models/issueOrPullRequest.d.ts +16 -14
  59. package/dist/git/models/issueOrPullRequest.js +0 -2
  60. package/dist/git/models/lineRange.d.ts +6 -4
  61. package/dist/git/models/lineRange.js +0 -2
  62. package/dist/git/models/log.d.ts +18 -16
  63. package/dist/git/models/log.js +0 -2
  64. package/dist/git/models/mergeConflicts.d.ts +17 -15
  65. package/dist/git/models/mergeConflicts.js +0 -2
  66. package/dist/git/models/patch.d.ts +14 -12
  67. package/dist/git/models/patch.js +0 -2
  68. package/dist/git/models/pausedOperationStatus.d.ts +42 -40
  69. package/dist/git/models/pausedOperationStatus.js +0 -2
  70. package/dist/git/models/pullRequest.d.ts +238 -230
  71. package/dist/git/models/pullRequest.js +151 -163
  72. package/dist/git/models/pullRequest.js.map +1 -1
  73. package/dist/git/models/rebase.d.ts +30 -28
  74. package/dist/git/models/rebase.js +0 -2
  75. package/dist/git/models/reference.d.ts +57 -55
  76. package/dist/git/models/reference.js +0 -2
  77. package/dist/git/models/reflog.d.ts +29 -27
  78. package/dist/git/models/reflog.js +63 -82
  79. package/dist/git/models/reflog.js.map +1 -1
  80. package/dist/git/models/remote.d.ts +34 -32
  81. package/dist/git/models/remote.js +74 -95
  82. package/dist/git/models/remote.js.map +1 -1
  83. package/dist/git/models/remoteProvider.d.ts +86 -84
  84. package/dist/git/models/remoteProvider.js +145 -150
  85. package/dist/git/models/remoteProvider.js.map +1 -1
  86. package/dist/git/models/remoteResource.d.ts +58 -56
  87. package/dist/git/models/remoteResource.js +15 -12
  88. package/dist/git/models/remoteResource.js.map +1 -1
  89. package/dist/git/models/repository.d.ts +144 -142
  90. package/dist/git/models/repository.js +358 -406
  91. package/dist/git/models/repository.js.map +1 -1
  92. package/dist/git/models/repositoryChangeEvent.d.ts +8 -6
  93. package/dist/git/models/repositoryChangeEvent.js +26 -24
  94. package/dist/git/models/repositoryChangeEvent.js.map +1 -1
  95. package/dist/git/models/repositoryIdentities.d.ts +50 -46
  96. package/dist/git/models/repositoryIdentities.js +7 -5
  97. package/dist/git/models/repositoryIdentities.js.map +1 -1
  98. package/dist/git/models/repositoryMetadata.d.ts +9 -7
  99. package/dist/git/models/repositoryMetadata.js +0 -2
  100. package/dist/git/models/resourceDescriptor.d.ts +11 -9
  101. package/dist/git/models/resourceDescriptor.js +0 -2
  102. package/dist/git/models/revision.d.ts +2 -0
  103. package/dist/git/models/revision.js +8 -5
  104. package/dist/git/models/revision.js.map +1 -1
  105. package/dist/git/models/search.d.ts +48 -47
  106. package/dist/git/models/search.js +53 -49
  107. package/dist/git/models/search.js.map +1 -1
  108. package/dist/git/models/shortlog.d.ts +5 -3
  109. package/dist/git/models/shortlog.js +0 -2
  110. package/dist/git/models/signature.d.ts +28 -26
  111. package/dist/git/models/signature.js +0 -2
  112. package/dist/git/models/staging.d.ts +18 -16
  113. package/dist/git/models/staging.js +0 -2
  114. package/dist/git/models/stash.d.ts +5 -3
  115. package/dist/git/models/stash.js +0 -2
  116. package/dist/git/models/status.d.ts +51 -49
  117. package/dist/git/models/status.js +172 -205
  118. package/dist/git/models/status.js.map +1 -1
  119. package/dist/git/models/statusFile.d.ts +35 -34
  120. package/dist/git/models/statusFile.js +112 -125
  121. package/dist/git/models/statusFile.js.map +1 -1
  122. package/dist/git/models/tag.d.ts +34 -32
  123. package/dist/git/models/tag.js +64 -77
  124. package/dist/git/models/tag.js.map +1 -1
  125. package/dist/git/models/tree.d.ts +8 -6
  126. package/dist/git/models/tree.js +0 -2
  127. package/dist/git/models/user.d.ts +6 -4
  128. package/dist/git/models/user.js +0 -2
  129. package/dist/git/models/worktree.d.ts +50 -48
  130. package/dist/git/models/worktree.js +102 -133
  131. package/dist/git/models/worktree.js.map +1 -1
  132. package/dist/git/parsers/diffParser.d.ts +7 -5
  133. package/dist/git/parsers/diffParser.js +438 -587
  134. package/dist/git/parsers/diffParser.js.map +1 -1
  135. package/dist/git/parsers/rebaseTodoParser.d.ts +3 -1
  136. package/dist/git/parsers/rebaseTodoParser.js +165 -208
  137. package/dist/git/parsers/rebaseTodoParser.js.map +1 -1
  138. package/dist/git/providers/blame.d.ts +12 -10
  139. package/dist/git/providers/blame.js +0 -2
  140. package/dist/git/providers/branches.d.ts +96 -94
  141. package/dist/git/providers/branches.js +0 -2
  142. package/dist/git/providers/commits.d.ts +105 -104
  143. package/dist/git/providers/commits.js +0 -2
  144. package/dist/git/providers/config.d.ts +80 -78
  145. package/dist/git/providers/config.js +0 -2
  146. package/dist/git/providers/contributors.d.ts +23 -21
  147. package/dist/git/providers/contributors.js +0 -2
  148. package/dist/git/providers/diff.d.ts +68 -66
  149. package/dist/git/providers/diff.js +0 -2
  150. package/dist/git/providers/graph.d.ts +73 -62
  151. package/dist/git/providers/graph.js +0 -2
  152. package/dist/git/providers/maintenance.d.ts +180 -178
  153. package/dist/git/providers/maintenance.js +0 -20
  154. package/dist/git/providers/operations.d.ts +114 -112
  155. package/dist/git/providers/operations.js +0 -2
  156. package/dist/git/providers/patch.d.ts +26 -24
  157. package/dist/git/providers/patch.js +0 -2
  158. package/dist/git/providers/pausedOperations.d.ts +19 -17
  159. package/dist/git/providers/pausedOperations.js +0 -2
  160. package/dist/git/providers/provider.d.ts +52 -50
  161. package/dist/git/providers/provider.js +0 -2
  162. package/dist/git/providers/refs.d.ts +42 -40
  163. package/dist/git/providers/refs.js +0 -2
  164. package/dist/git/providers/remotes.d.ts +24 -22
  165. package/dist/git/providers/remotes.js +0 -2
  166. package/dist/git/providers/revision.d.ts +25 -23
  167. package/dist/git/providers/revision.js +0 -2
  168. package/dist/git/providers/shared/remotes.d.ts +24 -22
  169. package/dist/git/providers/shared/remotes.js +52 -77
  170. package/dist/git/providers/shared/remotes.js.map +1 -1
  171. package/dist/git/providers/staging.d.ts +37 -35
  172. package/dist/git/providers/staging.js +0 -2
  173. package/dist/git/providers/stash.d.ts +38 -36
  174. package/dist/git/providers/stash.js +0 -2
  175. package/dist/git/providers/status.d.ts +32 -30
  176. package/dist/git/providers/status.js +0 -2
  177. package/dist/git/providers/tags.d.ts +20 -18
  178. package/dist/git/providers/tags.js +0 -2
  179. package/dist/git/providers/types.d.ts +19 -17
  180. package/dist/git/providers/types.js +0 -2
  181. package/dist/git/providers/worktrees.d.ts +26 -24
  182. package/dist/git/providers/worktrees.js +0 -2
  183. package/dist/git/remotes/azure-devops.d.ts +49 -38
  184. package/dist/git/remotes/azure-devops.js +254 -224
  185. package/dist/git/remotes/azure-devops.js.map +1 -1
  186. package/dist/git/remotes/bitbucket-server.d.ts +30 -29
  187. package/dist/git/remotes/bitbucket-server.js +141 -142
  188. package/dist/git/remotes/bitbucket-server.js.map +1 -1
  189. package/dist/git/remotes/bitbucket.d.ts +27 -26
  190. package/dist/git/remotes/bitbucket.js +114 -111
  191. package/dist/git/remotes/bitbucket.js.map +1 -1
  192. package/dist/git/remotes/custom.d.ts +26 -25
  193. package/dist/git/remotes/custom.js +130 -130
  194. package/dist/git/remotes/custom.js.map +1 -1
  195. package/dist/git/remotes/gerrit.d.ts +29 -28
  196. package/dist/git/remotes/gerrit.js +140 -143
  197. package/dist/git/remotes/gerrit.js.map +1 -1
  198. package/dist/git/remotes/gitea.d.ts +28 -27
  199. package/dist/git/remotes/gitea.js +141 -145
  200. package/dist/git/remotes/gitea.js.map +1 -1
  201. package/dist/git/remotes/github.d.ts +35 -34
  202. package/dist/git/remotes/github.js +196 -190
  203. package/dist/git/remotes/github.js.map +1 -1
  204. package/dist/git/remotes/gitlab.d.ts +31 -30
  205. package/dist/git/remotes/gitlab.js +245 -227
  206. package/dist/git/remotes/gitlab.js.map +1 -1
  207. package/dist/git/remotes/google-source.d.ts +16 -14
  208. package/dist/git/remotes/google-source.js +33 -31
  209. package/dist/git/remotes/google-source.js.map +1 -1
  210. package/dist/git/remotes/matcher.d.ts +16 -14
  211. package/dist/git/remotes/matcher.js +141 -124
  212. package/dist/git/remotes/matcher.js.map +1 -1
  213. package/dist/git/repositoryService.d.ts +47 -47
  214. package/dist/git/repositoryService.js +47 -44
  215. package/dist/git/repositoryService.js.map +1 -1
  216. package/dist/git/run.types.d.ts +91 -76
  217. package/dist/git/run.types.js +0 -2
  218. package/dist/git/service.d.ts +73 -71
  219. package/dist/git/service.js +286 -302
  220. package/dist/git/service.js.map +1 -1
  221. package/dist/git/utils/autolink.utils.d.ts +4 -2
  222. package/dist/git/utils/autolink.utils.js +103 -139
  223. package/dist/git/utils/autolink.utils.js.map +1 -1
  224. package/dist/git/utils/blame.utils.d.ts +22 -20
  225. package/dist/git/utils/blame.utils.js +196 -230
  226. package/dist/git/utils/blame.utils.js.map +1 -1
  227. package/dist/git/utils/branch.utils.d.ts +7 -9
  228. package/dist/git/utils/branch.utils.js +89 -115
  229. package/dist/git/utils/branch.utils.js.map +1 -1
  230. package/dist/git/utils/commit.utils.d.ts +10 -16
  231. package/dist/git/utils/commit.utils.js +28 -47
  232. package/dist/git/utils/commit.utils.js.map +1 -1
  233. package/dist/git/utils/config.utils.d.ts +2 -0
  234. package/dist/git/utils/config.utils.js +14 -5
  235. package/dist/git/utils/config.utils.js.map +1 -1
  236. package/dist/git/utils/conflictResolution.utils.d.ts +16 -13
  237. package/dist/git/utils/conflictResolution.utils.js +116 -113
  238. package/dist/git/utils/conflictResolution.utils.js.map +1 -1
  239. package/dist/git/utils/contributor.utils.d.ts +10 -8
  240. package/dist/git/utils/contributor.utils.js +47 -69
  241. package/dist/git/utils/contributor.utils.js.map +1 -1
  242. package/dist/git/utils/fetch.utils.d.ts +2 -0
  243. package/dist/git/utils/fetch.utils.js +33 -44
  244. package/dist/git/utils/fetch.utils.js.map +1 -1
  245. package/dist/git/utils/fileStatus.utils.d.ts +22 -21
  246. package/dist/git/utils/fileStatus.utils.js +59 -45
  247. package/dist/git/utils/fileStatus.utils.js.map +1 -1
  248. package/dist/git/utils/graph.utils.d.ts +19 -1
  249. package/dist/git/utils/graph.utils.js +60 -35
  250. package/dist/git/utils/graph.utils.js.map +1 -1
  251. package/dist/git/utils/issue.utils.d.ts +3 -1
  252. package/dist/git/utils/issue.utils.js +154 -149
  253. package/dist/git/utils/issue.utils.js.map +1 -1
  254. package/dist/git/utils/issueOrPullRequest.utils.d.ts +3 -1
  255. package/dist/git/utils/issueOrPullRequest.utils.js +23 -20
  256. package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -1
  257. package/dist/git/utils/mergeConflicts.utils.d.ts +4 -1
  258. package/dist/git/utils/mergeConflicts.utils.js +28 -15
  259. package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
  260. package/dist/git/utils/pausedOperationStatus.utils.d.ts +7 -42
  261. package/dist/git/utils/pausedOperationStatus.utils.js +83 -146
  262. package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
  263. package/dist/git/utils/pullRequest.utils.d.ts +7 -5
  264. package/dist/git/utils/pullRequest.utils.js +180 -187
  265. package/dist/git/utils/pullRequest.utils.js.map +1 -1
  266. package/dist/git/utils/reachability.utils.d.ts +6 -6
  267. package/dist/git/utils/reachability.utils.js +120 -147
  268. package/dist/git/utils/reachability.utils.js.map +1 -1
  269. package/dist/git/utils/rebase.utils.d.ts +3 -1
  270. package/dist/git/utils/rebase.utils.js +87 -71
  271. package/dist/git/utils/rebase.utils.js.map +1 -1
  272. package/dist/git/utils/reference.utils.d.ts +33 -32
  273. package/dist/git/utils/reference.utils.js +152 -179
  274. package/dist/git/utils/reference.utils.js.map +1 -1
  275. package/dist/git/utils/remote.utils.d.ts +5 -3
  276. package/dist/git/utils/remote.utils.js +77 -116
  277. package/dist/git/utils/remote.utils.js.map +1 -1
  278. package/dist/git/utils/repository.utils.d.ts +3 -1
  279. package/dist/git/utils/repository.utils.js +12 -11
  280. package/dist/git/utils/repository.utils.js.map +1 -1
  281. package/dist/git/utils/resourceDescriptor.utils.d.ts +3 -1
  282. package/dist/git/utils/resourceDescriptor.utils.js +8 -14
  283. package/dist/git/utils/resourceDescriptor.utils.js.map +1 -1
  284. package/dist/git/utils/revision.utils.d.ts +11 -10
  285. package/dist/git/utils/revision.utils.js +69 -83
  286. package/dist/git/utils/revision.utils.js.map +1 -1
  287. package/dist/git/utils/search.utils.d.ts +5 -3
  288. package/dist/git/utils/search.utils.js +383 -522
  289. package/dist/git/utils/search.utils.js.map +1 -1
  290. package/dist/git/utils/sorting.d.ts +22 -20
  291. package/dist/git/utils/sorting.js +133 -227
  292. package/dist/git/utils/sorting.js.map +1 -1
  293. package/dist/git/utils/sshKey.utils.d.ts +2 -0
  294. package/dist/git/utils/sshKey.utils.js +10 -15
  295. package/dist/git/utils/sshKey.utils.js.map +1 -1
  296. package/dist/git/utils/status.utils.d.ts +20 -15
  297. package/dist/git/utils/status.utils.js +93 -79
  298. package/dist/git/utils/status.utils.js.map +1 -1
  299. package/dist/git/utils/statusFile.utils.d.ts +6 -4
  300. package/dist/git/utils/statusFile.utils.js +71 -72
  301. package/dist/git/utils/statusFile.utils.js.map +1 -1
  302. package/dist/git/utils/tag.utils.d.ts +4 -2
  303. package/dist/git/utils/tag.utils.js +10 -8
  304. package/dist/git/utils/tag.utils.js.map +1 -1
  305. package/dist/git/utils/tooltip.utils.d.ts +5 -2
  306. package/dist/git/utils/tooltip.utils.js +49 -24
  307. package/dist/git/utils/tooltip.utils.js.map +1 -1
  308. package/dist/git/utils/uriAuthority.d.ts +9 -7
  309. package/dist/git/utils/uriAuthority.js +19 -16
  310. package/dist/git/utils/uriAuthority.js.map +1 -1
  311. package/dist/git/utils/user.utils.d.ts +3 -1
  312. package/dist/git/utils/user.utils.js +6 -10
  313. package/dist/git/utils/user.utils.js.map +1 -1
  314. package/dist/git/utils/worktree.utils.d.ts +5 -3
  315. package/dist/git/utils/worktree.utils.js +14 -12
  316. package/dist/git/utils/worktree.utils.js.map +1 -1
  317. package/dist/git/watching/changeEvent.d.ts +38 -36
  318. package/dist/git/watching/changeEvent.js +60 -67
  319. package/dist/git/watching/changeEvent.js.map +1 -1
  320. package/dist/git/watching/classifyChange.d.ts +3 -1
  321. package/dist/git/watching/classifyChange.js +50 -79
  322. package/dist/git/watching/classifyChange.js.map +1 -1
  323. package/dist/git/watching/gitIgnoreFilter.d.ts +43 -41
  324. package/dist/git/watching/gitIgnoreFilter.js +92 -107
  325. package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
  326. package/dist/git/watching/initWatcher.d.ts +22 -20
  327. package/dist/git/watching/initWatcher.js +58 -57
  328. package/dist/git/watching/initWatcher.js.map +1 -1
  329. package/dist/git/watching/provider.d.ts +8 -7
  330. package/dist/git/watching/provider.js +0 -2
  331. package/dist/git/watching/watchGroup.d.ts +29 -28
  332. package/dist/git/watching/watchGroup.js +105 -137
  333. package/dist/git/watching/watchGroup.js.map +1 -1
  334. package/dist/git/watching/watchService.d.ts +70 -68
  335. package/dist/git/watching/watchService.js +275 -339
  336. package/dist/git/watching/watchService.js.map +1 -1
  337. package/dist/git/watching/watchSession.d.ts +112 -111
  338. package/dist/git/watching/watchSession.js +260 -314
  339. package/dist/git/watching/watchSession.js.map +1 -1
  340. package/dist/git/watching/watcherPatterns.d.ts +4 -2
  341. package/dist/git/watching/watcherPatterns.js +21 -24
  342. package/dist/git/watching/watcherPatterns.js.map +1 -1
  343. package/dist/git-cli/cliGitProvider.d.ts +117 -114
  344. package/dist/git-cli/cliGitProvider.js +261 -283
  345. package/dist/git-cli/cliGitProvider.js.map +1 -1
  346. package/dist/git-cli/exec/eventLoopMonitor.d.ts +26 -0
  347. package/dist/git-cli/exec/eventLoopMonitor.js +61 -0
  348. package/dist/git-cli/exec/eventLoopMonitor.js.map +1 -0
  349. package/dist/git-cli/exec/exec.d.ts +3 -4
  350. package/dist/git-cli/exec/exec.errors.d.ts +2 -2
  351. package/dist/git-cli/exec/exec.errors.js +2 -2
  352. package/dist/git-cli/exec/exec.js +3 -3
  353. package/dist/git-cli/exec/exec.types.d.ts +2 -2
  354. package/dist/git-cli/exec/exec.types.js +0 -2
  355. package/dist/git-cli/exec/features.d.ts +2 -3
  356. package/dist/git-cli/exec/features.js +2 -2
  357. package/dist/git-cli/exec/git.d.ts +224 -205
  358. package/dist/git-cli/exec/git.js +834 -1042
  359. package/dist/git-cli/exec/git.js.map +1 -1
  360. package/dist/git-cli/exec/gitQueue.d.ts +51 -48
  361. package/dist/git-cli/exec/gitQueue.js +225 -260
  362. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  363. package/dist/git-cli/exec/locator.d.ts +8 -6
  364. package/dist/git-cli/exec/locator.js +95 -121
  365. package/dist/git-cli/exec/locator.js.map +1 -1
  366. package/dist/git-cli/parsers/blameParser.d.ts +22 -20
  367. package/dist/git-cli/parsers/blameParser.js +238 -332
  368. package/dist/git-cli/parsers/blameParser.js.map +1 -1
  369. package/dist/git-cli/parsers/indexParser.d.ts +3 -1
  370. package/dist/git-cli/parsers/indexParser.js +146 -221
  371. package/dist/git-cli/parsers/indexParser.js.map +1 -1
  372. package/dist/git-cli/parsers/logParser.d.ts +103 -110
  373. package/dist/git-cli/parsers/logParser.js +998 -1199
  374. package/dist/git-cli/parsers/logParser.js.map +1 -1
  375. package/dist/git-cli/parsers/mergeTreeParser.d.ts +5 -3
  376. package/dist/git-cli/parsers/mergeTreeParser.js +28 -72
  377. package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -1
  378. package/dist/git-cli/parsers/refParser.d.ts +5 -4
  379. package/dist/git-cli/parsers/refParser.js +92 -137
  380. package/dist/git-cli/parsers/refParser.js.map +1 -1
  381. package/dist/git-cli/parsers/reflogParser.d.ts +7 -6
  382. package/dist/git-cli/parsers/reflogParser.js +100 -173
  383. package/dist/git-cli/parsers/reflogParser.js.map +1 -1
  384. package/dist/git-cli/parsers/remoteParser.d.ts +4 -2
  385. package/dist/git-cli/parsers/remoteParser.js +74 -126
  386. package/dist/git-cli/parsers/remoteParser.js.map +1 -1
  387. package/dist/git-cli/parsers/shortlogParser.d.ts +4 -2
  388. package/dist/git-cli/parsers/shortlogParser.js +44 -49
  389. package/dist/git-cli/parsers/shortlogParser.js.map +1 -1
  390. package/dist/git-cli/parsers/signatureParser.d.ts +3 -1
  391. package/dist/git-cli/parsers/signatureParser.js +82 -124
  392. package/dist/git-cli/parsers/signatureParser.js.map +1 -1
  393. package/dist/git-cli/parsers/sshSignatureParser.d.ts +5 -3
  394. package/dist/git-cli/parsers/sshSignatureParser.js +55 -64
  395. package/dist/git-cli/parsers/sshSignatureParser.js.map +1 -1
  396. package/dist/git-cli/parsers/statusParser.d.ts +4 -2
  397. package/dist/git-cli/parsers/statusParser.js +148 -205
  398. package/dist/git-cli/parsers/statusParser.js.map +1 -1
  399. package/dist/git-cli/parsers/treeParser.d.ts +3 -1
  400. package/dist/git-cli/parsers/treeParser.js +57 -108
  401. package/dist/git-cli/parsers/treeParser.js.map +1 -1
  402. package/dist/git-cli/parsers/worktreeParser.d.ts +4 -3
  403. package/dist/git-cli/parsers/worktreeParser.js +76 -132
  404. package/dist/git-cli/parsers/worktreeParser.js.map +1 -1
  405. package/dist/git-cli/providers/blame.d.ts +25 -23
  406. package/dist/git-cli/providers/blame.js +404 -413
  407. package/dist/git-cli/providers/blame.js.map +1 -1
  408. package/dist/git-cli/providers/branches.d.ts +117 -116
  409. package/dist/git-cli/providers/branches.js +1132 -1468
  410. package/dist/git-cli/providers/branches.js.map +1 -1
  411. package/dist/git-cli/providers/commitFilesetUtils.d.ts +4 -2
  412. package/dist/git-cli/providers/commitFilesetUtils.js +36 -18
  413. package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -1
  414. package/dist/git-cli/providers/commits.d.ts +58 -56
  415. package/dist/git-cli/providers/commits.js +1084 -1423
  416. package/dist/git-cli/providers/commits.js.map +1 -1
  417. package/dist/git-cli/providers/config.d.ts +129 -127
  418. package/dist/git-cli/providers/config.js +612 -831
  419. package/dist/git-cli/providers/config.js.map +1 -1
  420. package/dist/git-cli/providers/contributors.d.ts +29 -28
  421. package/dist/git-cli/providers/contributors.js +246 -351
  422. package/dist/git-cli/providers/contributors.js.map +1 -1
  423. package/dist/git-cli/providers/diff.d.ts +97 -94
  424. package/dist/git-cli/providers/diff.js +638 -845
  425. package/dist/git-cli/providers/diff.js.map +1 -1
  426. package/dist/git-cli/providers/graph.d.ts +66 -68
  427. package/dist/git-cli/providers/graph.js +1400 -1848
  428. package/dist/git-cli/providers/graph.js.map +1 -1
  429. package/dist/git-cli/providers/maintenance.d.ts +305 -303
  430. package/dist/git-cli/providers/maintenance.js +1526 -2078
  431. package/dist/git-cli/providers/maintenance.js.map +1 -1
  432. package/dist/git-cli/providers/operations.d.ts +96 -94
  433. package/dist/git-cli/providers/operations.js +664 -724
  434. package/dist/git-cli/providers/operations.js.map +1 -1
  435. package/dist/git-cli/providers/patch.d.ts +37 -35
  436. package/dist/git-cli/providers/patch.js +206 -307
  437. package/dist/git-cli/providers/patch.js.map +1 -1
  438. package/dist/git-cli/providers/pausedOperations.d.ts +30 -28
  439. package/dist/git-cli/providers/pausedOperations.js +475 -506
  440. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  441. package/dist/git-cli/providers/refs.d.ts +50 -48
  442. package/dist/git-cli/providers/refs.js +335 -479
  443. package/dist/git-cli/providers/refs.js.map +1 -1
  444. package/dist/git-cli/providers/remotes.d.ts +23 -21
  445. package/dist/git-cli/providers/remotes.js +71 -92
  446. package/dist/git-cli/providers/remotes.js.map +1 -1
  447. package/dist/git-cli/providers/revision.d.ts +27 -25
  448. package/dist/git-cli/providers/revision.js +288 -304
  449. package/dist/git-cli/providers/revision.js.map +1 -1
  450. package/dist/git-cli/providers/staging.d.ts +31 -29
  451. package/dist/git-cli/providers/staging.js +140 -189
  452. package/dist/git-cli/providers/staging.js.map +1 -1
  453. package/dist/git-cli/providers/stash.d.ts +44 -42
  454. package/dist/git-cli/providers/stash.js +288 -387
  455. package/dist/git-cli/providers/stash.js.map +1 -1
  456. package/dist/git-cli/providers/status.d.ts +61 -59
  457. package/dist/git-cli/providers/status.js +332 -453
  458. package/dist/git-cli/providers/status.js.map +1 -1
  459. package/dist/git-cli/providers/tags.d.ts +31 -29
  460. package/dist/git-cli/providers/tags.js +158 -215
  461. package/dist/git-cli/providers/tags.js.map +1 -1
  462. package/dist/git-cli/providers/worktrees.d.ts +35 -33
  463. package/dist/git-cli/providers/worktrees.js +178 -203
  464. package/dist/git-cli/providers/worktrees.js.map +1 -1
  465. package/dist/git-cli/service.d.ts +28 -26
  466. package/dist/git-cli/service.js +38 -40
  467. package/dist/git-cli/service.js.map +1 -1
  468. package/dist/ipc/discovery.d.ts +19 -17
  469. package/dist/ipc/discovery.js +104 -128
  470. package/dist/ipc/discovery.js.map +1 -1
  471. package/dist/ipc/ipcServer.d.ts +16 -14
  472. package/dist/ipc/ipcServer.js +139 -160
  473. package/dist/ipc/ipcServer.js.map +1 -1
  474. package/dist/plus/agents/agentCapabilities.d.ts +50 -37
  475. package/dist/plus/agents/agentCapabilities.js +138 -173
  476. package/dist/plus/agents/agentCapabilities.js.map +1 -1
  477. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +153 -151
  478. package/dist/plus/agents/providers/claudeCodeTranscript.js +605 -679
  479. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  480. package/dist/plus/agents/providers/gkAgentProvider.d.ts +237 -240
  481. package/dist/plus/agents/providers/gkAgentProvider.js +2162 -3334
  482. package/dist/plus/agents/providers/gkAgentProvider.js.map +1 -1
  483. package/dist/plus/agents/sanitizePrompt.d.ts +2 -0
  484. package/dist/plus/agents/sanitizePrompt.js +58 -91
  485. package/dist/plus/agents/sanitizePrompt.js.map +1 -1
  486. package/dist/plus/agents/stateMachine.d.ts +7 -5
  487. package/dist/plus/agents/stateMachine.js +135 -163
  488. package/dist/plus/agents/stateMachine.js.map +1 -1
  489. package/dist/plus/agents/types.d.ts +333 -336
  490. package/dist/plus/agents/types.js +48 -48
  491. package/dist/plus/agents/types.js.map +1 -1
  492. package/dist/plus/ai/constants.d.ts +3 -1
  493. package/dist/plus/ai/constants.js +88 -84
  494. package/dist/plus/ai/constants.js.map +1 -1
  495. package/dist/plus/ai/errors.d.ts +22 -18
  496. package/dist/plus/ai/errors.js +158 -138
  497. package/dist/plus/ai/errors.js.map +1 -1
  498. package/dist/plus/ai/models/conversation.d.ts +11 -9
  499. package/dist/plus/ai/models/conversation.js +30 -26
  500. package/dist/plus/ai/models/conversation.js.map +1 -1
  501. package/dist/plus/ai/models/model.d.ts +29 -27
  502. package/dist/plus/ai/models/model.js +663 -471
  503. package/dist/plus/ai/models/model.js.map +1 -1
  504. package/dist/plus/ai/models/promptTemplates.d.ts +56 -55
  505. package/dist/plus/ai/models/promptTemplates.js +0 -2
  506. package/dist/plus/ai/models/provider.d.ts +79 -77
  507. package/dist/plus/ai/models/provider.js +0 -2
  508. package/dist/plus/ai/models/results.d.ts +27 -21
  509. package/dist/plus/ai/models/results.js +0 -2
  510. package/dist/plus/ai/prompts.d.ts +4 -2
  511. package/dist/plus/ai/prompts.js +301 -190
  512. package/dist/plus/ai/prompts.js.map +1 -1
  513. package/dist/plus/ai/providers/anthropicProvider.d.ts +33 -32
  514. package/dist/plus/ai/providers/anthropicProvider.js +484 -381
  515. package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
  516. package/dist/plus/ai/providers/azureProvider.d.ts +18 -16
  517. package/dist/plus/ai/providers/azureProvider.js +53 -53
  518. package/dist/plus/ai/providers/azureProvider.js.map +1 -1
  519. package/dist/plus/ai/providers/context.d.ts +23 -20
  520. package/dist/plus/ai/providers/context.js +0 -2
  521. package/dist/plus/ai/providers/deepSeekProvider.d.ts +17 -15
  522. package/dist/plus/ai/providers/deepSeekProvider.js +45 -39
  523. package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
  524. package/dist/plus/ai/providers/geminiProvider.d.ts +16 -14
  525. package/dist/plus/ai/providers/geminiProvider.js +316 -230
  526. package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
  527. package/dist/plus/ai/providers/gitkrakenProvider.d.ts +22 -20
  528. package/dist/plus/ai/providers/gitkrakenProvider.js +165 -260
  529. package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
  530. package/dist/plus/ai/providers/huggingFaceProvider.d.ts +16 -14
  531. package/dist/plus/ai/providers/huggingFaceProvider.js +45 -46
  532. package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
  533. package/dist/plus/ai/providers/mistralProvider.d.ts +22 -20
  534. package/dist/plus/ai/providers/mistralProvider.js +263 -195
  535. package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
  536. package/dist/plus/ai/providers/ollamaProvider.d.ts +26 -24
  537. package/dist/plus/ai/providers/ollamaProvider.js +156 -189
  538. package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
  539. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts +18 -16
  540. package/dist/plus/ai/providers/openAICompatibleProvider.js +50 -50
  541. package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
  542. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +187 -185
  543. package/dist/plus/ai/providers/openAICompatibleProviderBase.js +356 -475
  544. package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
  545. package/dist/plus/ai/providers/openRouterProvider.d.ts +20 -19
  546. package/dist/plus/ai/providers/openRouterProvider.js +60 -65
  547. package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
  548. package/dist/plus/ai/providers/openaiProvider.d.ts +17 -15
  549. package/dist/plus/ai/providers/openaiProvider.js +35 -34
  550. package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
  551. package/dist/plus/ai/providers/responseFormatCache.d.ts +4 -2
  552. package/dist/plus/ai/providers/responseFormatCache.js +21 -17
  553. package/dist/plus/ai/providers/responseFormatCache.js.map +1 -1
  554. package/dist/plus/ai/providers/xaiProvider.d.ts +16 -14
  555. package/dist/plus/ai/providers/xaiProvider.js +61 -46
  556. package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
  557. package/dist/plus/ai/utils/ai.utils.d.ts +4 -2
  558. package/dist/plus/ai/utils/ai.utils.js +50 -77
  559. package/dist/plus/ai/utils/ai.utils.js.map +1 -1
  560. package/dist/plus/ai/utils/results.utils.d.ts +7 -5
  561. package/dist/plus/ai/utils/results.utils.js +235 -269
  562. package/dist/plus/ai/utils/results.utils.js.map +1 -1
  563. package/dist/plus/ai/utils/truncation.utils.d.ts +3 -2
  564. package/dist/plus/ai/utils/truncation.utils.js +242 -205
  565. package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
  566. package/dist/plus/git-github/api/config.d.ts +58 -56
  567. package/dist/plus/git-github/api/config.js +15 -11
  568. package/dist/plus/git-github/api/config.js.map +1 -1
  569. package/dist/plus/git-github/api/github.d.ts +500 -497
  570. package/dist/plus/git-github/api/github.js +2326 -3121
  571. package/dist/plus/git-github/api/github.js.map +1 -1
  572. package/dist/plus/git-github/api/github.utils.d.ts +5 -3
  573. package/dist/plus/git-github/api/github.utils.js +24 -19
  574. package/dist/plus/git-github/api/github.utils.js.map +1 -1
  575. package/dist/plus/git-github/api/issueSearchQuery.d.ts +5 -3
  576. package/dist/plus/git-github/api/issueSearchQuery.js +204 -221
  577. package/dist/plus/git-github/api/issueSearchQuery.js.map +1 -1
  578. package/dist/plus/git-github/api/pullRequestSearchQuery.d.ts +6 -5
  579. package/dist/plus/git-github/api/pullRequestSearchQuery.js +89 -116
  580. package/dist/plus/git-github/api/pullRequestSearchQuery.js.map +1 -1
  581. package/dist/plus/git-github/api/token.d.ts +10 -8
  582. package/dist/plus/git-github/api/token.js +0 -2
  583. package/dist/plus/git-github/api/tokenUtils.d.ts +4 -2
  584. package/dist/plus/git-github/api/tokenUtils.js +14 -10
  585. package/dist/plus/git-github/api/tokenUtils.js.map +1 -1
  586. package/dist/plus/git-github/api/types.d.ts +94 -92
  587. package/dist/plus/git-github/api/types.js +0 -2
  588. package/dist/plus/git-github/context.d.ts +65 -63
  589. package/dist/plus/git-github/context.js +13 -9
  590. package/dist/plus/git-github/context.js.map +1 -1
  591. package/dist/plus/git-github/models.d.ts +182 -182
  592. package/dist/plus/git-github/models.js +199 -265
  593. package/dist/plus/git-github/models.js.map +1 -1
  594. package/dist/plus/git-github/providers/github/blame.d.ts +32 -31
  595. package/dist/plus/git-github/providers/github/blame.js +137 -150
  596. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  597. package/dist/plus/git-github/providers/github/branches.d.ts +42 -40
  598. package/dist/plus/git-github/providers/github/branches.js +199 -274
  599. package/dist/plus/git-github/providers/github/branches.js.map +1 -1
  600. package/dist/plus/git-github/providers/github/commits.d.ts +35 -33
  601. package/dist/plus/git-github/providers/github/commits.js +527 -606
  602. package/dist/plus/git-github/providers/github/commits.js.map +1 -1
  603. package/dist/plus/git-github/providers/github/config.d.ts +10 -8
  604. package/dist/plus/git-github/providers/github/config.js +35 -45
  605. package/dist/plus/git-github/providers/github/config.js.map +1 -1
  606. package/dist/plus/git-github/providers/github/contributors.d.ts +25 -24
  607. package/dist/plus/git-github/providers/github/contributors.js +174 -216
  608. package/dist/plus/git-github/providers/github/contributors.js.map +1 -1
  609. package/dist/plus/git-github/providers/github/diff.d.ts +34 -32
  610. package/dist/plus/git-github/providers/github/diff.js +154 -194
  611. package/dist/plus/git-github/providers/github/diff.js.map +1 -1
  612. package/dist/plus/git-github/providers/github/graph.d.ts +33 -31
  613. package/dist/plus/git-github/providers/github/graph.js +400 -452
  614. package/dist/plus/git-github/providers/github/graph.js.map +1 -1
  615. package/dist/plus/git-github/providers/github/refs.d.ts +33 -31
  616. package/dist/plus/git-github/providers/github/refs.js +97 -131
  617. package/dist/plus/git-github/providers/github/refs.js.map +1 -1
  618. package/dist/plus/git-github/providers/github/remotes.d.ts +8 -6
  619. package/dist/plus/git-github/providers/github/remotes.js +30 -35
  620. package/dist/plus/git-github/providers/github/remotes.js.map +1 -1
  621. package/dist/plus/git-github/providers/github/revision.d.ts +13 -11
  622. package/dist/plus/git-github/providers/github/revision.js +106 -129
  623. package/dist/plus/git-github/providers/github/revision.js.map +1 -1
  624. package/dist/plus/git-github/providers/github/status.d.ts +24 -22
  625. package/dist/plus/git-github/providers/github/status.js +49 -47
  626. package/dist/plus/git-github/providers/github/status.js.map +1 -1
  627. package/dist/plus/git-github/providers/github/tags.d.ts +21 -19
  628. package/dist/plus/git-github/providers/github/tags.js +78 -103
  629. package/dist/plus/git-github/providers/github/tags.js.map +1 -1
  630. package/dist/plus/git-github/providers/githubGitProvider.d.ts +67 -64
  631. package/dist/plus/git-github/providers/githubGitProvider.js +131 -128
  632. package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
  633. package/dist/plus/git-github/providers/githubProvider.d.ts +46 -44
  634. package/dist/plus/git-github/providers/githubProvider.js +0 -2
  635. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +29 -27
  636. package/dist/plus/integrations/authentication/cloudIntegrationService.js +173 -208
  637. package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -1
  638. package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +126 -107
  639. package/dist/plus/integrations/authentication/configuredIntegrationService.js +399 -497
  640. package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -1
  641. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +73 -72
  642. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +153 -232
  643. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -1
  644. package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts +61 -59
  645. package/dist/plus/integrations/authentication/integrationAuthenticationService.js +100 -124
  646. package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -1
  647. package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +14 -12
  648. package/dist/plus/integrations/authentication/manualTokenProvider.js +26 -51
  649. package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -1
  650. package/dist/plus/integrations/authentication/models.d.ts +102 -85
  651. package/dist/plus/integrations/authentication/models.js +55 -54
  652. package/dist/plus/integrations/authentication/models.js.map +1 -1
  653. package/dist/plus/integrations/authentication/rejectedTokenTracker.d.ts +19 -17
  654. package/dist/plus/integrations/authentication/rejectedTokenTracker.js +53 -51
  655. package/dist/plus/integrations/authentication/rejectedTokenTracker.js.map +1 -1
  656. package/dist/plus/integrations/collectionMetadata.d.ts +12 -10
  657. package/dist/plus/integrations/collectionMetadata.js +204 -254
  658. package/dist/plus/integrations/collectionMetadata.js.map +1 -1
  659. package/dist/plus/integrations/constants.d.ts +60 -34
  660. package/dist/plus/integrations/constants.js +157 -132
  661. package/dist/plus/integrations/constants.js.map +1 -1
  662. package/dist/plus/integrations/context.d.ts +253 -252
  663. package/dist/plus/integrations/context.js +0 -2
  664. package/dist/plus/integrations/errors.d.ts +26 -25
  665. package/dist/plus/integrations/errors.js +116 -140
  666. package/dist/plus/integrations/errors.js.map +1 -1
  667. package/dist/plus/integrations/index.d.ts +36 -40
  668. package/dist/plus/integrations/index.js +46 -57
  669. package/dist/plus/integrations/index.js.map +1 -1
  670. package/dist/plus/integrations/integrationService.d.ts +445 -440
  671. package/dist/plus/integrations/integrationService.js +1054 -1324
  672. package/dist/plus/integrations/integrationService.js.map +1 -1
  673. package/dist/plus/integrations/lite.d.ts +33 -31
  674. package/dist/plus/integrations/lite.js +84 -122
  675. package/dist/plus/integrations/lite.js.map +1 -1
  676. package/dist/plus/integrations/manager.d.ts +592 -580
  677. package/dist/plus/integrations/manager.js +0 -2
  678. package/dist/plus/integrations/models/gitHostIntegration.d.ts +420 -415
  679. package/dist/plus/integrations/models/gitHostIntegration.js +1180 -1293
  680. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  681. package/dist/plus/integrations/models/integration.d.ts +200 -190
  682. package/dist/plus/integrations/models/integration.js +577 -722
  683. package/dist/plus/integrations/models/integration.js.map +1 -1
  684. package/dist/plus/integrations/models/issueCache.d.ts +15 -13
  685. package/dist/plus/integrations/models/issueCache.js +9 -7
  686. package/dist/plus/integrations/models/issueCache.js.map +1 -1
  687. package/dist/plus/integrations/models/issueReads.d.ts +108 -85
  688. package/dist/plus/integrations/models/issueReads.js +0 -2
  689. package/dist/plus/integrations/models/issuesIntegration.d.ts +72 -71
  690. package/dist/plus/integrations/models/issuesIntegration.js +160 -186
  691. package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
  692. package/dist/plus/integrations/models/pullRequestReads.d.ts +9 -7
  693. package/dist/plus/integrations/models/pullRequestReads.js +0 -2
  694. package/dist/plus/integrations/providerFilters.d.ts +8 -20
  695. package/dist/plus/integrations/providerFilters.js +11 -7
  696. package/dist/plus/integrations/providerFilters.js.map +1 -1
  697. package/dist/plus/integrations/providers/accounts.d.ts +7 -5
  698. package/dist/plus/integrations/providers/accounts.js +21 -31
  699. package/dist/plus/integrations/providers/accounts.js.map +1 -1
  700. package/dist/plus/integrations/providers/apiClients.d.ts +13 -10
  701. package/dist/plus/integrations/providers/apiClients.js +51 -36
  702. package/dist/plus/integrations/providers/apiClients.js.map +1 -1
  703. package/dist/plus/integrations/providers/apiConfig.d.ts +31 -29
  704. package/dist/plus/integrations/providers/apiConfig.js +18 -16
  705. package/dist/plus/integrations/providers/apiConfig.js.map +1 -1
  706. package/dist/plus/integrations/providers/azure/azure.d.ts +69 -54
  707. package/dist/plus/integrations/providers/azure/azure.js +453 -515
  708. package/dist/plus/integrations/providers/azure/azure.js.map +1 -1
  709. package/dist/plus/integrations/providers/azure/models.d.ts +258 -229
  710. package/dist/plus/integrations/providers/azure/models.js +241 -203
  711. package/dist/plus/integrations/providers/azure/models.js.map +1 -1
  712. package/dist/plus/integrations/providers/azureDevOps.d.ts +132 -130
  713. package/dist/plus/integrations/providers/azureDevOps.js +775 -921
  714. package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
  715. package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +50 -48
  716. package/dist/plus/integrations/providers/bitbucket/bitbucket.js +417 -585
  717. package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
  718. package/dist/plus/integrations/providers/bitbucket/models.d.ts +179 -179
  719. package/dist/plus/integrations/providers/bitbucket/models.js +96 -144
  720. package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
  721. package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +111 -109
  722. package/dist/plus/integrations/providers/bitbucket-server/models.js +102 -121
  723. package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -1
  724. package/dist/plus/integrations/providers/bitbucket-server.d.ts +79 -79
  725. package/dist/plus/integrations/providers/bitbucket-server.js +205 -241
  726. package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
  727. package/dist/plus/integrations/providers/bitbucket.d.ts +80 -79
  728. package/dist/plus/integrations/providers/bitbucket.js +390 -477
  729. package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
  730. package/dist/plus/integrations/providers/github/github.d.ts +5 -3
  731. package/dist/plus/integrations/providers/github/github.js +38 -45
  732. package/dist/plus/integrations/providers/github/github.js.map +1 -1
  733. package/dist/plus/integrations/providers/github/github.utils.d.ts +8 -5
  734. package/dist/plus/integrations/providers/github/github.utils.js +7 -4
  735. package/dist/plus/integrations/providers/github/github.utils.js.map +1 -1
  736. package/dist/plus/integrations/providers/github/models.d.ts +2 -3
  737. package/dist/plus/integrations/providers/github/models.js +2 -2
  738. package/dist/plus/integrations/providers/github.d.ts +174 -172
  739. package/dist/plus/integrations/providers/github.js +431 -523
  740. package/dist/plus/integrations/providers/github.js.map +1 -1
  741. package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +67 -66
  742. package/dist/plus/integrations/providers/gitlab/gitlab.js +546 -757
  743. package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
  744. package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +7 -5
  745. package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +45 -46
  746. package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -1
  747. package/dist/plus/integrations/providers/gitlab/models.d.ts +109 -107
  748. package/dist/plus/integrations/providers/gitlab/models.js +74 -89
  749. package/dist/plus/integrations/providers/gitlab/models.js.map +1 -1
  750. package/dist/plus/integrations/providers/gitlab.d.ts +115 -114
  751. package/dist/plus/integrations/providers/gitlab.js +440 -528
  752. package/dist/plus/integrations/providers/gitlab.js.map +1 -1
  753. package/dist/plus/integrations/providers/issueSorts.d.ts +3 -1
  754. package/dist/plus/integrations/providers/issueSorts.js +66 -62
  755. package/dist/plus/integrations/providers/issueSorts.js.map +1 -1
  756. package/dist/plus/integrations/providers/jira-server.d.ts +90 -0
  757. package/dist/plus/integrations/providers/jira-server.js +322 -0
  758. package/dist/plus/integrations/providers/jira-server.js.map +1 -0
  759. package/dist/plus/integrations/providers/jira.d.ts +41 -39
  760. package/dist/plus/integrations/providers/jira.js +378 -440
  761. package/dist/plus/integrations/providers/jira.js.map +1 -1
  762. package/dist/plus/integrations/providers/jiraIssueByKey.d.ts +3 -1
  763. package/dist/plus/integrations/providers/jiraIssueByKey.js +85 -89
  764. package/dist/plus/integrations/providers/jiraIssueByKey.js.map +1 -1
  765. package/dist/plus/integrations/providers/linear.d.ts +63 -62
  766. package/dist/plus/integrations/providers/linear.js +315 -358
  767. package/dist/plus/integrations/providers/linear.js.map +1 -1
  768. package/dist/plus/integrations/providers/models.d.ts +514 -503
  769. package/dist/plus/integrations/providers/models.js +818 -856
  770. package/dist/plus/integrations/providers/models.js.map +1 -1
  771. package/dist/plus/integrations/providers/providerErrors.d.ts +35 -2
  772. package/dist/plus/integrations/providers/providerErrors.js +120 -81
  773. package/dist/plus/integrations/providers/providerErrors.js.map +1 -1
  774. package/dist/plus/integrations/providers/providersApi.d.ts +299 -271
  775. package/dist/plus/integrations/providers/providersApi.js +1048 -1001
  776. package/dist/plus/integrations/providers/providersApi.js.map +1 -1
  777. package/dist/plus/integrations/providers/pullRequestReviews.d.ts +21 -21
  778. package/dist/plus/integrations/providers/pullRequestReviews.js +64 -90
  779. package/dist/plus/integrations/providers/pullRequestReviews.js.map +1 -1
  780. package/dist/plus/integrations/providers/trello.d.ts +35 -34
  781. package/dist/plus/integrations/providers/trello.js +136 -143
  782. package/dist/plus/integrations/providers/trello.js.map +1 -1
  783. package/dist/plus/integrations/providers/utils/providerPaging.d.ts +4 -2
  784. package/dist/plus/integrations/providers/utils/providerPaging.js +131 -156
  785. package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -1
  786. package/dist/plus/integrations/providers/utils.d.ts +51 -50
  787. package/dist/plus/integrations/providers/utils.js +185 -296
  788. package/dist/plus/integrations/providers/utils.js.map +1 -1
  789. package/dist/plus/integrations/reads/broaden.d.ts +10 -8
  790. package/dist/plus/integrations/reads/broaden.js +320 -439
  791. package/dist/plus/integrations/reads/broaden.js.map +1 -1
  792. package/dist/plus/integrations/reads/context.d.ts +47 -45
  793. package/dist/plus/integrations/reads/context.js +0 -2
  794. package/dist/plus/integrations/reads/counts.d.ts +74 -72
  795. package/dist/plus/integrations/reads/counts.js +233 -314
  796. package/dist/plus/integrations/reads/counts.js.map +1 -1
  797. package/dist/plus/integrations/reads/cursors.d.ts +26 -24
  798. package/dist/plus/integrations/reads/cursors.js +80 -115
  799. package/dist/plus/integrations/reads/cursors.js.map +1 -1
  800. package/dist/plus/integrations/reads/drains.d.ts +24 -23
  801. package/dist/plus/integrations/reads/drains.js +225 -298
  802. package/dist/plus/integrations/reads/drains.js.map +1 -1
  803. package/dist/plus/integrations/reads/filters.d.ts +84 -80
  804. package/dist/plus/integrations/reads/filters.js +326 -414
  805. package/dist/plus/integrations/reads/filters.js.map +1 -1
  806. package/dist/plus/integrations/reads/hierarchy.d.ts +14 -12
  807. package/dist/plus/integrations/reads/hierarchy.js +248 -332
  808. package/dist/plus/integrations/reads/hierarchy.js.map +1 -1
  809. package/dist/plus/integrations/reads/hierarchy.utils.d.ts +11 -9
  810. package/dist/plus/integrations/reads/hierarchy.utils.js +109 -108
  811. package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -1
  812. package/dist/plus/integrations/reads/issueBatch.d.ts +28 -26
  813. package/dist/plus/integrations/reads/issueBatch.js +83 -85
  814. package/dist/plus/integrations/reads/issueBatch.js.map +1 -1
  815. package/dist/plus/integrations/reads/issueTracker.d.ts +42 -33
  816. package/dist/plus/integrations/reads/issueTracker.js +265 -386
  817. package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
  818. package/dist/plus/integrations/reads/issues.d.ts +50 -47
  819. package/dist/plus/integrations/reads/issues.js +202 -331
  820. package/dist/plus/integrations/reads/issues.js.map +1 -1
  821. package/dist/plus/integrations/reads/ordering.d.ts +32 -30
  822. package/dist/plus/integrations/reads/ordering.js +47 -43
  823. package/dist/plus/integrations/reads/ordering.js.map +1 -1
  824. package/dist/plus/integrations/reads/paging.d.ts +59 -57
  825. package/dist/plus/integrations/reads/paging.js +244 -261
  826. package/dist/plus/integrations/reads/paging.js.map +1 -1
  827. package/dist/plus/integrations/reads/pullRequests.d.ts +37 -35
  828. package/dist/plus/integrations/reads/pullRequests.js +95 -148
  829. package/dist/plus/integrations/reads/pullRequests.js.map +1 -1
  830. package/dist/plus/integrations/reads/resolveRepository.d.ts +15 -13
  831. package/dist/plus/integrations/reads/resolveRepository.js +147 -229
  832. package/dist/plus/integrations/reads/resolveRepository.js.map +1 -1
  833. package/dist/plus/integrations/reads/searchIssues.d.ts +29 -27
  834. package/dist/plus/integrations/reads/searchIssues.js +104 -153
  835. package/dist/plus/integrations/reads/searchIssues.js.map +1 -1
  836. package/dist/plus/integrations/reads/searchPullRequests.d.ts +20 -18
  837. package/dist/plus/integrations/reads/searchPullRequests.js +91 -113
  838. package/dist/plus/integrations/reads/searchPullRequests.js.map +1 -1
  839. package/dist/plus/integrations/reads/sweeps.d.ts +6 -4
  840. package/dist/plus/integrations/reads/sweeps.js +143 -178
  841. package/dist/plus/integrations/reads/sweeps.js.map +1 -1
  842. package/dist/plus/integrations/reads/trackerIssue.d.ts +24 -16
  843. package/dist/plus/integrations/reads/trackerIssue.js +52 -49
  844. package/dist/plus/integrations/reads/trackerIssue.js.map +1 -1
  845. package/dist/plus/integrations/reads/warnings.d.ts +10 -7
  846. package/dist/plus/integrations/reads/warnings.js +264 -291
  847. package/dist/plus/integrations/reads/warnings.js.map +1 -1
  848. package/dist/plus/integrations/results.d.ts +201 -199
  849. package/dist/plus/integrations/results.js +105 -119
  850. package/dist/plus/integrations/results.js.map +1 -1
  851. package/dist/plus/integrations/telemetry.d.ts +7 -5
  852. package/dist/plus/integrations/telemetry.js +9 -9
  853. package/dist/plus/integrations/telemetry.js.map +1 -1
  854. package/dist/plus/integrations/utils/domain.utils.d.ts +21 -0
  855. package/dist/plus/integrations/utils/domain.utils.js +55 -22
  856. package/dist/plus/integrations/utils/domain.utils.js.map +1 -1
  857. package/dist/plus/integrations/utils/integration.utils.d.ts +30 -6
  858. package/dist/plus/integrations/utils/integration.utils.js +154 -161
  859. package/dist/plus/integrations/utils/integration.utils.js.map +1 -1
  860. package/dist/utils/array.d.ts +9 -7
  861. package/dist/utils/array.js +110 -126
  862. package/dist/utils/array.js.map +1 -1
  863. package/dist/utils/base64.d.ts +2 -2
  864. package/dist/utils/base64.js +2 -2
  865. package/dist/utils/brand.d.ts +4 -3
  866. package/dist/utils/brand.js +0 -2
  867. package/dist/utils/cancellation.d.ts +24 -24
  868. package/dist/utils/cancellation.js +152 -167
  869. package/dist/utils/cancellation.js.map +1 -1
  870. package/dist/utils/charCode.d.ts +31 -37
  871. package/dist/utils/charCode.js +41 -37
  872. package/dist/utils/charCode.js.map +1 -1
  873. package/dist/utils/coalescedRun.d.ts +10 -8
  874. package/dist/utils/coalescedRun.js +39 -41
  875. package/dist/utils/coalescedRun.js.map +1 -1
  876. package/dist/utils/color.d.ts +137 -135
  877. package/dist/utils/color.js +535 -660
  878. package/dist/utils/color.js.map +1 -1
  879. package/dist/utils/counter.d.ts +5 -3
  880. package/dist/utils/counter.js +19 -17
  881. package/dist/utils/counter.js.map +1 -1
  882. package/dist/utils/crypto.d.ts +2 -2
  883. package/dist/utils/crypto.js +2 -2
  884. package/dist/utils/date.d.ts +10 -9
  885. package/dist/utils/date.js +312 -350
  886. package/dist/utils/date.js.map +1 -1
  887. package/dist/utils/debounce.d.ts +45 -43
  888. package/dist/utils/debounce.js +175 -206
  889. package/dist/utils/debounce.js.map +1 -1
  890. package/dist/utils/decorators/debounce.d.ts +3 -1
  891. package/dist/utils/decorators/debounce.js +16 -19
  892. package/dist/utils/decorators/debounce.js.map +1 -1
  893. package/dist/utils/decorators/gate.d.ts +13 -11
  894. package/dist/utils/decorators/gate.js +97 -124
  895. package/dist/utils/decorators/gate.js.map +1 -1
  896. package/dist/utils/decorators/log.d.ts +25 -24
  897. package/dist/utils/decorators/log.js +166 -227
  898. package/dist/utils/decorators/log.js.map +1 -1
  899. package/dist/utils/decorators/memoize.d.ts +10 -8
  900. package/dist/utils/decorators/memoize.js +49 -57
  901. package/dist/utils/decorators/memoize.js.map +1 -1
  902. package/dist/utils/decorators/resolver.d.ts +2 -0
  903. package/dist/utils/decorators/resolver.js +64 -75
  904. package/dist/utils/decorators/resolver.js.map +1 -1
  905. package/dist/utils/decorators/sequentialize.d.ts +15 -14
  906. package/dist/utils/decorators/sequentialize.js +61 -80
  907. package/dist/utils/decorators/sequentialize.js.map +1 -1
  908. package/dist/utils/decorators/serializable.d.ts +2 -0
  909. package/dist/utils/decorators/serializable.js +30 -39
  910. package/dist/utils/decorators/serializable.js.map +1 -1
  911. package/dist/utils/dedupedAsyncCache.d.ts +23 -21
  912. package/dist/utils/dedupedAsyncCache.js +63 -66
  913. package/dist/utils/dedupedAsyncCache.js.map +1 -1
  914. package/dist/utils/diff.d.ts +2 -0
  915. package/dist/utils/diff.js +41 -51
  916. package/dist/utils/diff.js.map +1 -1
  917. package/dist/utils/disposable.d.ts +15 -13
  918. package/dist/utils/disposable.js +71 -80
  919. package/dist/utils/disposable.js.map +1 -1
  920. package/dist/utils/dom.d.ts +45 -0
  921. package/dist/utils/dom.js +106 -0
  922. package/dist/utils/dom.js.map +1 -0
  923. package/dist/utils/encoding.d.ts +2 -0
  924. package/dist/utils/encoding.js +7 -5
  925. package/dist/utils/encoding.js.map +1 -1
  926. package/dist/utils/env/browser/base64.d.ts +2 -0
  927. package/dist/utils/env/browser/base64.js +32 -34
  928. package/dist/utils/env/browser/base64.js.map +1 -1
  929. package/dist/utils/env/browser/crypto.d.ts +2 -0
  930. package/dist/utils/env/browser/crypto.js +17 -13
  931. package/dist/utils/env/browser/crypto.js.map +1 -1
  932. package/dist/utils/env/browser/fs.d.ts +2 -0
  933. package/dist/utils/env/browser/fs.js +6 -2
  934. package/dist/utils/env/browser/fs.js.map +1 -1
  935. package/dist/utils/env/browser/hex.d.ts +2 -0
  936. package/dist/utils/env/browser/hex.js +271 -29
  937. package/dist/utils/env/browser/hex.js.map +1 -1
  938. package/dist/utils/env/browser/hrtime.d.ts +2 -0
  939. package/dist/utils/env/browser/hrtime.js +17 -13
  940. package/dist/utils/env/browser/hrtime.js.map +1 -1
  941. package/dist/utils/env/browser/logScope.d.ts +3 -1
  942. package/dist/utils/env/browser/logScope.js +39 -43
  943. package/dist/utils/env/browser/logScope.js.map +1 -1
  944. package/dist/utils/env/browser/md5.d.ts +2 -0
  945. package/dist/utils/env/browser/md5.js +211 -184
  946. package/dist/utils/env/browser/md5.js.map +1 -1
  947. package/dist/utils/env/browser/platform.d.ts +3 -0
  948. package/dist/utils/env/browser/platform.js +11 -4
  949. package/dist/utils/env/browser/platform.js.map +1 -1
  950. package/dist/utils/env/node/base64.d.ts +2 -0
  951. package/dist/utils/env/node/base64.js +13 -11
  952. package/dist/utils/env/node/base64.js.map +1 -1
  953. package/dist/utils/env/node/crypto.d.ts +2 -0
  954. package/dist/utils/env/node/crypto.js +13 -9
  955. package/dist/utils/env/node/crypto.js.map +1 -1
  956. package/dist/utils/env/node/exec.d.ts +66 -65
  957. package/dist/utils/env/node/exec.js +255 -267
  958. package/dist/utils/env/node/exec.js.map +1 -1
  959. package/dist/utils/env/node/fs.d.ts +2 -0
  960. package/dist/utils/env/node/fs.js +7 -3
  961. package/dist/utils/env/node/fs.js.map +1 -1
  962. package/dist/utils/env/node/hex.d.ts +2 -0
  963. package/dist/utils/env/node/hex.js +10 -6
  964. package/dist/utils/env/node/hex.js.map +1 -1
  965. package/dist/utils/env/node/hrtime.d.ts +2 -2
  966. package/dist/utils/env/node/hrtime.js +2 -2
  967. package/dist/utils/env/node/logScope.d.ts +3 -1
  968. package/dist/utils/env/node/logScope.js +52 -42
  969. package/dist/utils/env/node/logScope.js.map +1 -1
  970. package/dist/utils/env/node/platform.d.ts +3 -0
  971. package/dist/utils/env/node/platform.js +11 -4
  972. package/dist/utils/env/node/platform.js.map +1 -1
  973. package/dist/utils/error.d.ts +8 -6
  974. package/dist/utils/error.js +16 -14
  975. package/dist/utils/error.js.map +1 -1
  976. package/dist/utils/event.d.ts +27 -25
  977. package/dist/utils/event.js +141 -170
  978. package/dist/utils/event.js.map +1 -1
  979. package/dist/utils/formatter.d.ts +15 -14
  980. package/dist/utils/formatter.js +96 -129
  981. package/dist/utils/formatter.js.map +1 -1
  982. package/dist/utils/fs.d.ts +2 -2
  983. package/dist/utils/fs.js +2 -2
  984. package/dist/utils/function.d.ts +5 -6
  985. package/dist/utils/function.js +73 -90
  986. package/dist/utils/function.js.map +1 -1
  987. package/dist/utils/fuzzy.d.ts +18 -16
  988. package/dist/utils/fuzzy.js +121 -127
  989. package/dist/utils/fuzzy.js.map +1 -1
  990. package/dist/utils/gitRefs.d.ts +11 -0
  991. package/dist/utils/gitRefs.js +21 -0
  992. package/dist/utils/gitRefs.js.map +1 -0
  993. package/dist/utils/hash.d.ts +2 -0
  994. package/dist/utils/hash.js +49 -47
  995. package/dist/utils/hash.js.map +1 -1
  996. package/dist/utils/hex.d.ts +2 -2
  997. package/dist/utils/hex.js +2 -2
  998. package/dist/utils/hostingServiceType.d.ts +8 -0
  999. package/dist/utils/hostingServiceType.js +0 -0
  1000. package/dist/utils/hrtime.d.ts +4 -2
  1001. package/dist/utils/hrtime.js +8 -5
  1002. package/dist/utils/hrtime.js.map +1 -1
  1003. package/dist/utils/iterable.d.ts +3 -1
  1004. package/dist/utils/iterable.js +591 -616
  1005. package/dist/utils/iterable.js.map +1 -1
  1006. package/dist/utils/keys/chord.d.ts +27 -25
  1007. package/dist/utils/keys/chord.js +108 -122
  1008. package/dist/utils/keys/chord.js.map +1 -1
  1009. package/dist/utils/keys/keybinding.d.ts +98 -22
  1010. package/dist/utils/keys/keybinding.js +151 -53
  1011. package/dist/utils/keys/keybinding.js.map +1 -1
  1012. package/dist/utils/keys/keymapDispatcher.d.ts +66 -0
  1013. package/dist/utils/keys/keymapDispatcher.js +187 -0
  1014. package/dist/utils/keys/keymapDispatcher.js.map +1 -0
  1015. package/dist/utils/lazy.d.ts +14 -12
  1016. package/dist/utils/lazy.js +35 -36
  1017. package/dist/utils/lazy.js.map +1 -1
  1018. package/dist/utils/loggable.d.ts +3 -1
  1019. package/dist/utils/loggable.js +6 -2
  1020. package/dist/utils/loggable.js.map +1 -1
  1021. package/dist/utils/logger.d.ts +48 -46
  1022. package/dist/utils/logger.js +219 -304
  1023. package/dist/utils/logger.js.map +1 -1
  1024. package/dist/utils/logger.scoped.d.ts +30 -28
  1025. package/dist/utils/logger.scoped.js +133 -147
  1026. package/dist/utils/logger.scoped.js.map +1 -1
  1027. package/dist/utils/lruMap.d.ts +34 -32
  1028. package/dist/utils/lruMap.js +97 -101
  1029. package/dist/utils/lruMap.js.map +1 -1
  1030. package/dist/utils/markdown.d.ts +5 -3
  1031. package/dist/utils/markdown.js +52 -88
  1032. package/dist/utils/markdown.js.map +1 -1
  1033. package/dist/utils/mru.d.ts +13 -11
  1034. package/dist/utils/mru.js +57 -62
  1035. package/dist/utils/mru.js.map +1 -1
  1036. package/dist/utils/object.d.ts +9 -34
  1037. package/dist/utils/object.js +132 -191
  1038. package/dist/utils/object.js.map +1 -1
  1039. package/dist/utils/paging.d.ts +36 -34
  1040. package/dist/utils/paging.js +42 -45
  1041. package/dist/utils/paging.js.map +1 -1
  1042. package/dist/utils/path.d.ts +4 -1
  1043. package/dist/utils/path.js +129 -162
  1044. package/dist/utils/path.js.map +1 -1
  1045. package/dist/utils/pausedOperation.d.ts +42 -0
  1046. package/dist/utils/pausedOperation.js +62 -0
  1047. package/dist/utils/pausedOperation.js.map +1 -0
  1048. package/dist/utils/platform.d.ts +2 -2
  1049. package/dist/utils/platform.js +2 -2
  1050. package/dist/utils/plural.d.ts +21 -0
  1051. package/dist/utils/plural.js +136 -0
  1052. package/dist/utils/plural.js.map +1 -0
  1053. package/dist/utils/promise.d.ts +19 -18
  1054. package/dist/utils/promise.js +323 -360
  1055. package/dist/utils/promise.js.map +1 -1
  1056. package/dist/utils/promiseCache.d.ts +331 -330
  1057. package/dist/utils/promiseCache.js +602 -717
  1058. package/dist/utils/promiseCache.js.map +1 -1
  1059. package/dist/utils/resourceUsage.d.ts +2 -0
  1060. package/dist/utils/resourceUsage.js +0 -2
  1061. package/dist/utils/searchTree.d.ts +51 -49
  1062. package/dist/utils/searchTree.js +306 -396
  1063. package/dist/utils/searchTree.js.map +1 -1
  1064. package/dist/utils/stopwatch.d.ts +33 -32
  1065. package/dist/utils/stopwatch.js +67 -81
  1066. package/dist/utils/stopwatch.js.map +1 -1
  1067. package/dist/utils/string.d.ts +17 -24
  1068. package/dist/utils/string.js +787 -803
  1069. package/dist/utils/string.js.map +1 -1
  1070. package/dist/utils/subscriptionManager.d.ts +15 -14
  1071. package/dist/utils/subscriptionManager.js +36 -33
  1072. package/dist/utils/subscriptionManager.js.map +1 -1
  1073. package/dist/utils/trie.d.ts +64 -62
  1074. package/dist/utils/trie.js +438 -580
  1075. package/dist/utils/trie.js.map +1 -1
  1076. package/dist/utils/types.d.ts +8 -16
  1077. package/dist/utils/types.js +0 -2
  1078. package/dist/utils/uri.d.ts +27 -25
  1079. package/dist/utils/uri.js +42 -42
  1080. package/dist/utils/uri.js.map +1 -1
  1081. package/dist/utils/validation.d.ts +13 -12
  1082. package/dist/utils/validation.js +17 -23
  1083. package/dist/utils/validation.js.map +1 -1
  1084. package/dist/utils/version.d.ts +6 -5
  1085. package/dist/utils/version.js +77 -104
  1086. package/dist/utils/version.js.map +1 -1
  1087. package/docs/integrations.md +101 -24
  1088. package/docs/kepler-read-api-parity.md +15 -12
  1089. package/package.json +18 -8
  1090. package/dist/git/cache.d.ts.map +0 -1
  1091. package/dist/git/context.d.ts.map +0 -1
  1092. package/dist/git/errors.d.ts.map +0 -1
  1093. package/dist/git/features.d.ts.map +0 -1
  1094. package/dist/git/gitHealth.d.ts.map +0 -1
  1095. package/dist/git/models/author.d.ts.map +0 -1
  1096. package/dist/git/models/author.js.map +0 -1
  1097. package/dist/git/models/autolink.d.ts.map +0 -1
  1098. package/dist/git/models/autolink.js.map +0 -1
  1099. package/dist/git/models/blame.d.ts.map +0 -1
  1100. package/dist/git/models/blame.js.map +0 -1
  1101. package/dist/git/models/branch.d.ts.map +0 -1
  1102. package/dist/git/models/commit.d.ts.map +0 -1
  1103. package/dist/git/models/contributor.d.ts.map +0 -1
  1104. package/dist/git/models/defaultBranch.d.ts.map +0 -1
  1105. package/dist/git/models/defaultBranch.js.map +0 -1
  1106. package/dist/git/models/diff.d.ts.map +0 -1
  1107. package/dist/git/models/diff.js.map +0 -1
  1108. package/dist/git/models/file.d.ts.map +0 -1
  1109. package/dist/git/models/file.js.map +0 -1
  1110. package/dist/git/models/fileChange.d.ts.map +0 -1
  1111. package/dist/git/models/fileStatus.d.ts.map +0 -1
  1112. package/dist/git/models/graph.d.ts.map +0 -1
  1113. package/dist/git/models/graphSearch.d.ts.map +0 -1
  1114. package/dist/git/models/graphSearch.js.map +0 -1
  1115. package/dist/git/models/graphSession.d.ts.map +0 -1
  1116. package/dist/git/models/issue.d.ts.map +0 -1
  1117. package/dist/git/models/issueOrPullRequest.d.ts.map +0 -1
  1118. package/dist/git/models/issueOrPullRequest.js.map +0 -1
  1119. package/dist/git/models/lineRange.d.ts.map +0 -1
  1120. package/dist/git/models/lineRange.js.map +0 -1
  1121. package/dist/git/models/log.d.ts.map +0 -1
  1122. package/dist/git/models/log.js.map +0 -1
  1123. package/dist/git/models/mergeConflicts.d.ts.map +0 -1
  1124. package/dist/git/models/mergeConflicts.js.map +0 -1
  1125. package/dist/git/models/patch.d.ts.map +0 -1
  1126. package/dist/git/models/patch.js.map +0 -1
  1127. package/dist/git/models/pausedOperationStatus.d.ts.map +0 -1
  1128. package/dist/git/models/pausedOperationStatus.js.map +0 -1
  1129. package/dist/git/models/pullRequest.d.ts.map +0 -1
  1130. package/dist/git/models/rebase.d.ts.map +0 -1
  1131. package/dist/git/models/rebase.js.map +0 -1
  1132. package/dist/git/models/reference.d.ts.map +0 -1
  1133. package/dist/git/models/reference.js.map +0 -1
  1134. package/dist/git/models/reflog.d.ts.map +0 -1
  1135. package/dist/git/models/remote.d.ts.map +0 -1
  1136. package/dist/git/models/remoteProvider.d.ts.map +0 -1
  1137. package/dist/git/models/remoteResource.d.ts.map +0 -1
  1138. package/dist/git/models/repository.d.ts.map +0 -1
  1139. package/dist/git/models/repositoryChangeEvent.d.ts.map +0 -1
  1140. package/dist/git/models/repositoryIdentities.d.ts.map +0 -1
  1141. package/dist/git/models/repositoryMetadata.d.ts.map +0 -1
  1142. package/dist/git/models/repositoryMetadata.js.map +0 -1
  1143. package/dist/git/models/resourceDescriptor.d.ts.map +0 -1
  1144. package/dist/git/models/resourceDescriptor.js.map +0 -1
  1145. package/dist/git/models/revision.d.ts.map +0 -1
  1146. package/dist/git/models/search.d.ts.map +0 -1
  1147. package/dist/git/models/shortlog.d.ts.map +0 -1
  1148. package/dist/git/models/shortlog.js.map +0 -1
  1149. package/dist/git/models/signature.d.ts.map +0 -1
  1150. package/dist/git/models/signature.js.map +0 -1
  1151. package/dist/git/models/staging.d.ts.map +0 -1
  1152. package/dist/git/models/staging.js.map +0 -1
  1153. package/dist/git/models/stash.d.ts.map +0 -1
  1154. package/dist/git/models/stash.js.map +0 -1
  1155. package/dist/git/models/status.d.ts.map +0 -1
  1156. package/dist/git/models/statusFile.d.ts.map +0 -1
  1157. package/dist/git/models/tag.d.ts.map +0 -1
  1158. package/dist/git/models/tree.d.ts.map +0 -1
  1159. package/dist/git/models/tree.js.map +0 -1
  1160. package/dist/git/models/user.d.ts.map +0 -1
  1161. package/dist/git/models/user.js.map +0 -1
  1162. package/dist/git/models/worktree.d.ts.map +0 -1
  1163. package/dist/git/parsers/diffParser.d.ts.map +0 -1
  1164. package/dist/git/parsers/rebaseTodoParser.d.ts.map +0 -1
  1165. package/dist/git/providers/blame.d.ts.map +0 -1
  1166. package/dist/git/providers/blame.js.map +0 -1
  1167. package/dist/git/providers/branches.d.ts.map +0 -1
  1168. package/dist/git/providers/branches.js.map +0 -1
  1169. package/dist/git/providers/commits.d.ts.map +0 -1
  1170. package/dist/git/providers/commits.js.map +0 -1
  1171. package/dist/git/providers/config.d.ts.map +0 -1
  1172. package/dist/git/providers/config.js.map +0 -1
  1173. package/dist/git/providers/contributors.d.ts.map +0 -1
  1174. package/dist/git/providers/contributors.js.map +0 -1
  1175. package/dist/git/providers/diff.d.ts.map +0 -1
  1176. package/dist/git/providers/diff.js.map +0 -1
  1177. package/dist/git/providers/graph.d.ts.map +0 -1
  1178. package/dist/git/providers/graph.js.map +0 -1
  1179. package/dist/git/providers/maintenance.d.ts.map +0 -1
  1180. package/dist/git/providers/maintenance.js.map +0 -1
  1181. package/dist/git/providers/operations.d.ts.map +0 -1
  1182. package/dist/git/providers/operations.js.map +0 -1
  1183. package/dist/git/providers/patch.d.ts.map +0 -1
  1184. package/dist/git/providers/patch.js.map +0 -1
  1185. package/dist/git/providers/pausedOperations.d.ts.map +0 -1
  1186. package/dist/git/providers/pausedOperations.js.map +0 -1
  1187. package/dist/git/providers/provider.d.ts.map +0 -1
  1188. package/dist/git/providers/provider.js.map +0 -1
  1189. package/dist/git/providers/refs.d.ts.map +0 -1
  1190. package/dist/git/providers/refs.js.map +0 -1
  1191. package/dist/git/providers/remotes.d.ts.map +0 -1
  1192. package/dist/git/providers/remotes.js.map +0 -1
  1193. package/dist/git/providers/revision.d.ts.map +0 -1
  1194. package/dist/git/providers/revision.js.map +0 -1
  1195. package/dist/git/providers/shared/remotes.d.ts.map +0 -1
  1196. package/dist/git/providers/staging.d.ts.map +0 -1
  1197. package/dist/git/providers/staging.js.map +0 -1
  1198. package/dist/git/providers/stash.d.ts.map +0 -1
  1199. package/dist/git/providers/stash.js.map +0 -1
  1200. package/dist/git/providers/status.d.ts.map +0 -1
  1201. package/dist/git/providers/status.js.map +0 -1
  1202. package/dist/git/providers/tags.d.ts.map +0 -1
  1203. package/dist/git/providers/tags.js.map +0 -1
  1204. package/dist/git/providers/types.d.ts.map +0 -1
  1205. package/dist/git/providers/types.js.map +0 -1
  1206. package/dist/git/providers/worktrees.d.ts.map +0 -1
  1207. package/dist/git/providers/worktrees.js.map +0 -1
  1208. package/dist/git/remotes/azure-devops.d.ts.map +0 -1
  1209. package/dist/git/remotes/bitbucket-server.d.ts.map +0 -1
  1210. package/dist/git/remotes/bitbucket.d.ts.map +0 -1
  1211. package/dist/git/remotes/custom.d.ts.map +0 -1
  1212. package/dist/git/remotes/gerrit.d.ts.map +0 -1
  1213. package/dist/git/remotes/gitea.d.ts.map +0 -1
  1214. package/dist/git/remotes/github.d.ts.map +0 -1
  1215. package/dist/git/remotes/gitlab.d.ts.map +0 -1
  1216. package/dist/git/remotes/google-source.d.ts.map +0 -1
  1217. package/dist/git/remotes/matcher.d.ts.map +0 -1
  1218. package/dist/git/repositoryService.d.ts.map +0 -1
  1219. package/dist/git/run.types.d.ts.map +0 -1
  1220. package/dist/git/run.types.js.map +0 -1
  1221. package/dist/git/service.d.ts.map +0 -1
  1222. package/dist/git/utils/autolink.utils.d.ts.map +0 -1
  1223. package/dist/git/utils/blame.utils.d.ts.map +0 -1
  1224. package/dist/git/utils/branch.utils.d.ts.map +0 -1
  1225. package/dist/git/utils/commit.utils.d.ts.map +0 -1
  1226. package/dist/git/utils/config.utils.d.ts.map +0 -1
  1227. package/dist/git/utils/conflictResolution.utils.d.ts.map +0 -1
  1228. package/dist/git/utils/contributor.utils.d.ts.map +0 -1
  1229. package/dist/git/utils/fetch.utils.d.ts.map +0 -1
  1230. package/dist/git/utils/fileStatus.utils.d.ts.map +0 -1
  1231. package/dist/git/utils/graph.utils.d.ts.map +0 -1
  1232. package/dist/git/utils/issue.utils.d.ts.map +0 -1
  1233. package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +0 -1
  1234. package/dist/git/utils/mergeConflicts.utils.d.ts.map +0 -1
  1235. package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +0 -1
  1236. package/dist/git/utils/pullRequest.utils.d.ts.map +0 -1
  1237. package/dist/git/utils/reachability.utils.d.ts.map +0 -1
  1238. package/dist/git/utils/rebase.utils.d.ts.map +0 -1
  1239. package/dist/git/utils/reference.utils.d.ts.map +0 -1
  1240. package/dist/git/utils/remote.utils.d.ts.map +0 -1
  1241. package/dist/git/utils/repository.utils.d.ts.map +0 -1
  1242. package/dist/git/utils/resourceDescriptor.utils.d.ts.map +0 -1
  1243. package/dist/git/utils/revision.utils.d.ts.map +0 -1
  1244. package/dist/git/utils/search.utils.d.ts.map +0 -1
  1245. package/dist/git/utils/sorting.d.ts.map +0 -1
  1246. package/dist/git/utils/sshKey.utils.d.ts.map +0 -1
  1247. package/dist/git/utils/status.utils.d.ts.map +0 -1
  1248. package/dist/git/utils/statusFile.utils.d.ts.map +0 -1
  1249. package/dist/git/utils/tag.utils.d.ts.map +0 -1
  1250. package/dist/git/utils/tooltip.utils.d.ts.map +0 -1
  1251. package/dist/git/utils/uriAuthority.d.ts.map +0 -1
  1252. package/dist/git/utils/user.utils.d.ts.map +0 -1
  1253. package/dist/git/utils/worktree.utils.d.ts.map +0 -1
  1254. package/dist/git/watching/changeEvent.d.ts.map +0 -1
  1255. package/dist/git/watching/classifyChange.d.ts.map +0 -1
  1256. package/dist/git/watching/gitIgnoreFilter.d.ts.map +0 -1
  1257. package/dist/git/watching/initWatcher.d.ts.map +0 -1
  1258. package/dist/git/watching/provider.d.ts.map +0 -1
  1259. package/dist/git/watching/provider.js.map +0 -1
  1260. package/dist/git/watching/watchGroup.d.ts.map +0 -1
  1261. package/dist/git/watching/watchService.d.ts.map +0 -1
  1262. package/dist/git/watching/watchSession.d.ts.map +0 -1
  1263. package/dist/git/watching/watcherPatterns.d.ts.map +0 -1
  1264. package/dist/git-cli/cliGitProvider.d.ts.map +0 -1
  1265. package/dist/git-cli/exec/exec.d.ts.map +0 -1
  1266. package/dist/git-cli/exec/exec.errors.d.ts.map +0 -1
  1267. package/dist/git-cli/exec/exec.errors.js.map +0 -1
  1268. package/dist/git-cli/exec/exec.js.map +0 -1
  1269. package/dist/git-cli/exec/exec.types.d.ts.map +0 -1
  1270. package/dist/git-cli/exec/exec.types.js.map +0 -1
  1271. package/dist/git-cli/exec/features.d.ts.map +0 -1
  1272. package/dist/git-cli/exec/features.js.map +0 -1
  1273. package/dist/git-cli/exec/git.d.ts.map +0 -1
  1274. package/dist/git-cli/exec/gitQueue.d.ts.map +0 -1
  1275. package/dist/git-cli/exec/locator.d.ts.map +0 -1
  1276. package/dist/git-cli/parsers/blameParser.d.ts.map +0 -1
  1277. package/dist/git-cli/parsers/indexParser.d.ts.map +0 -1
  1278. package/dist/git-cli/parsers/logParser.d.ts.map +0 -1
  1279. package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +0 -1
  1280. package/dist/git-cli/parsers/refParser.d.ts.map +0 -1
  1281. package/dist/git-cli/parsers/reflogParser.d.ts.map +0 -1
  1282. package/dist/git-cli/parsers/remoteParser.d.ts.map +0 -1
  1283. package/dist/git-cli/parsers/shortlogParser.d.ts.map +0 -1
  1284. package/dist/git-cli/parsers/signatureParser.d.ts.map +0 -1
  1285. package/dist/git-cli/parsers/sshSignatureParser.d.ts.map +0 -1
  1286. package/dist/git-cli/parsers/statusParser.d.ts.map +0 -1
  1287. package/dist/git-cli/parsers/treeParser.d.ts.map +0 -1
  1288. package/dist/git-cli/parsers/worktreeParser.d.ts.map +0 -1
  1289. package/dist/git-cli/providers/blame.d.ts.map +0 -1
  1290. package/dist/git-cli/providers/branches.d.ts.map +0 -1
  1291. package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +0 -1
  1292. package/dist/git-cli/providers/commits.d.ts.map +0 -1
  1293. package/dist/git-cli/providers/config.d.ts.map +0 -1
  1294. package/dist/git-cli/providers/contributors.d.ts.map +0 -1
  1295. package/dist/git-cli/providers/diff.d.ts.map +0 -1
  1296. package/dist/git-cli/providers/graph.d.ts.map +0 -1
  1297. package/dist/git-cli/providers/maintenance.d.ts.map +0 -1
  1298. package/dist/git-cli/providers/operations.d.ts.map +0 -1
  1299. package/dist/git-cli/providers/patch.d.ts.map +0 -1
  1300. package/dist/git-cli/providers/pausedOperations.d.ts.map +0 -1
  1301. package/dist/git-cli/providers/refs.d.ts.map +0 -1
  1302. package/dist/git-cli/providers/remotes.d.ts.map +0 -1
  1303. package/dist/git-cli/providers/revision.d.ts.map +0 -1
  1304. package/dist/git-cli/providers/staging.d.ts.map +0 -1
  1305. package/dist/git-cli/providers/stash.d.ts.map +0 -1
  1306. package/dist/git-cli/providers/status.d.ts.map +0 -1
  1307. package/dist/git-cli/providers/tags.d.ts.map +0 -1
  1308. package/dist/git-cli/providers/worktrees.d.ts.map +0 -1
  1309. package/dist/git-cli/service.d.ts.map +0 -1
  1310. package/dist/ipc/discovery.d.ts.map +0 -1
  1311. package/dist/ipc/ipcServer.d.ts.map +0 -1
  1312. package/dist/plus/agents/agentCapabilities.d.ts.map +0 -1
  1313. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +0 -1
  1314. package/dist/plus/agents/providers/gkAgentProvider.d.ts.map +0 -1
  1315. package/dist/plus/agents/sanitizePrompt.d.ts.map +0 -1
  1316. package/dist/plus/agents/stateMachine.d.ts.map +0 -1
  1317. package/dist/plus/agents/types.d.ts.map +0 -1
  1318. package/dist/plus/ai/constants.d.ts.map +0 -1
  1319. package/dist/plus/ai/errors.d.ts.map +0 -1
  1320. package/dist/plus/ai/models/conversation.d.ts.map +0 -1
  1321. package/dist/plus/ai/models/model.d.ts.map +0 -1
  1322. package/dist/plus/ai/models/promptTemplates.d.ts.map +0 -1
  1323. package/dist/plus/ai/models/promptTemplates.js.map +0 -1
  1324. package/dist/plus/ai/models/provider.d.ts.map +0 -1
  1325. package/dist/plus/ai/models/provider.js.map +0 -1
  1326. package/dist/plus/ai/models/results.d.ts.map +0 -1
  1327. package/dist/plus/ai/models/results.js.map +0 -1
  1328. package/dist/plus/ai/prompts.d.ts.map +0 -1
  1329. package/dist/plus/ai/providers/anthropicProvider.d.ts.map +0 -1
  1330. package/dist/plus/ai/providers/azureProvider.d.ts.map +0 -1
  1331. package/dist/plus/ai/providers/context.d.ts.map +0 -1
  1332. package/dist/plus/ai/providers/context.js.map +0 -1
  1333. package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +0 -1
  1334. package/dist/plus/ai/providers/geminiProvider.d.ts.map +0 -1
  1335. package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +0 -1
  1336. package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +0 -1
  1337. package/dist/plus/ai/providers/mistralProvider.d.ts.map +0 -1
  1338. package/dist/plus/ai/providers/ollamaProvider.d.ts.map +0 -1
  1339. package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +0 -1
  1340. package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +0 -1
  1341. package/dist/plus/ai/providers/openRouterProvider.d.ts.map +0 -1
  1342. package/dist/plus/ai/providers/openaiProvider.d.ts.map +0 -1
  1343. package/dist/plus/ai/providers/responseFormatCache.d.ts.map +0 -1
  1344. package/dist/plus/ai/providers/xaiProvider.d.ts.map +0 -1
  1345. package/dist/plus/ai/utils/ai.utils.d.ts.map +0 -1
  1346. package/dist/plus/ai/utils/results.utils.d.ts.map +0 -1
  1347. package/dist/plus/ai/utils/truncation.utils.d.ts.map +0 -1
  1348. package/dist/plus/git-github/api/config.d.ts.map +0 -1
  1349. package/dist/plus/git-github/api/github.d.ts.map +0 -1
  1350. package/dist/plus/git-github/api/github.utils.d.ts.map +0 -1
  1351. package/dist/plus/git-github/api/issueSearchQuery.d.ts.map +0 -1
  1352. package/dist/plus/git-github/api/pullRequestSearchQuery.d.ts.map +0 -1
  1353. package/dist/plus/git-github/api/token.d.ts.map +0 -1
  1354. package/dist/plus/git-github/api/token.js.map +0 -1
  1355. package/dist/plus/git-github/api/tokenUtils.d.ts.map +0 -1
  1356. package/dist/plus/git-github/api/types.d.ts.map +0 -1
  1357. package/dist/plus/git-github/api/types.js.map +0 -1
  1358. package/dist/plus/git-github/context.d.ts.map +0 -1
  1359. package/dist/plus/git-github/models.d.ts.map +0 -1
  1360. package/dist/plus/git-github/providers/github/blame.d.ts.map +0 -1
  1361. package/dist/plus/git-github/providers/github/branches.d.ts.map +0 -1
  1362. package/dist/plus/git-github/providers/github/commits.d.ts.map +0 -1
  1363. package/dist/plus/git-github/providers/github/config.d.ts.map +0 -1
  1364. package/dist/plus/git-github/providers/github/contributors.d.ts.map +0 -1
  1365. package/dist/plus/git-github/providers/github/diff.d.ts.map +0 -1
  1366. package/dist/plus/git-github/providers/github/graph.d.ts.map +0 -1
  1367. package/dist/plus/git-github/providers/github/refs.d.ts.map +0 -1
  1368. package/dist/plus/git-github/providers/github/remotes.d.ts.map +0 -1
  1369. package/dist/plus/git-github/providers/github/revision.d.ts.map +0 -1
  1370. package/dist/plus/git-github/providers/github/status.d.ts.map +0 -1
  1371. package/dist/plus/git-github/providers/github/tags.d.ts.map +0 -1
  1372. package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +0 -1
  1373. package/dist/plus/git-github/providers/githubProvider.d.ts.map +0 -1
  1374. package/dist/plus/git-github/providers/githubProvider.js.map +0 -1
  1375. package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +0 -1
  1376. package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +0 -1
  1377. package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +0 -1
  1378. package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +0 -1
  1379. package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +0 -1
  1380. package/dist/plus/integrations/authentication/models.d.ts.map +0 -1
  1381. package/dist/plus/integrations/authentication/rejectedTokenTracker.d.ts.map +0 -1
  1382. package/dist/plus/integrations/collectionMetadata.d.ts.map +0 -1
  1383. package/dist/plus/integrations/constants.d.ts.map +0 -1
  1384. package/dist/plus/integrations/context.d.ts.map +0 -1
  1385. package/dist/plus/integrations/context.js.map +0 -1
  1386. package/dist/plus/integrations/errors.d.ts.map +0 -1
  1387. package/dist/plus/integrations/index.d.ts.map +0 -1
  1388. package/dist/plus/integrations/integrationService.d.ts.map +0 -1
  1389. package/dist/plus/integrations/lite.d.ts.map +0 -1
  1390. package/dist/plus/integrations/manager.d.ts.map +0 -1
  1391. package/dist/plus/integrations/manager.js.map +0 -1
  1392. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +0 -1
  1393. package/dist/plus/integrations/models/integration.d.ts.map +0 -1
  1394. package/dist/plus/integrations/models/issueCache.d.ts.map +0 -1
  1395. package/dist/plus/integrations/models/issueReads.d.ts.map +0 -1
  1396. package/dist/plus/integrations/models/issueReads.js.map +0 -1
  1397. package/dist/plus/integrations/models/issuesIntegration.d.ts.map +0 -1
  1398. package/dist/plus/integrations/models/pullRequestReads.d.ts.map +0 -1
  1399. package/dist/plus/integrations/models/pullRequestReads.js.map +0 -1
  1400. package/dist/plus/integrations/providerFilters.d.ts.map +0 -1
  1401. package/dist/plus/integrations/providers/accounts.d.ts.map +0 -1
  1402. package/dist/plus/integrations/providers/apiClients.d.ts.map +0 -1
  1403. package/dist/plus/integrations/providers/apiConfig.d.ts.map +0 -1
  1404. package/dist/plus/integrations/providers/azure/azure.d.ts.map +0 -1
  1405. package/dist/plus/integrations/providers/azure/models.d.ts.map +0 -1
  1406. package/dist/plus/integrations/providers/azureDevOps.d.ts.map +0 -1
  1407. package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +0 -1
  1408. package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +0 -1
  1409. package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +0 -1
  1410. package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +0 -1
  1411. package/dist/plus/integrations/providers/bitbucket.d.ts.map +0 -1
  1412. package/dist/plus/integrations/providers/github/github.d.ts.map +0 -1
  1413. package/dist/plus/integrations/providers/github/github.utils.d.ts.map +0 -1
  1414. package/dist/plus/integrations/providers/github/models.d.ts.map +0 -1
  1415. package/dist/plus/integrations/providers/github/models.js.map +0 -1
  1416. package/dist/plus/integrations/providers/github.d.ts.map +0 -1
  1417. package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +0 -1
  1418. package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +0 -1
  1419. package/dist/plus/integrations/providers/gitlab/models.d.ts.map +0 -1
  1420. package/dist/plus/integrations/providers/gitlab.d.ts.map +0 -1
  1421. package/dist/plus/integrations/providers/issueSorts.d.ts.map +0 -1
  1422. package/dist/plus/integrations/providers/jira.d.ts.map +0 -1
  1423. package/dist/plus/integrations/providers/jiraIssueByKey.d.ts.map +0 -1
  1424. package/dist/plus/integrations/providers/linear.d.ts.map +0 -1
  1425. package/dist/plus/integrations/providers/models.d.ts.map +0 -1
  1426. package/dist/plus/integrations/providers/providerErrors.d.ts.map +0 -1
  1427. package/dist/plus/integrations/providers/providersApi.d.ts.map +0 -1
  1428. package/dist/plus/integrations/providers/pullRequestReviews.d.ts.map +0 -1
  1429. package/dist/plus/integrations/providers/trello.d.ts.map +0 -1
  1430. package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +0 -1
  1431. package/dist/plus/integrations/providers/utils.d.ts.map +0 -1
  1432. package/dist/plus/integrations/reads/broaden.d.ts.map +0 -1
  1433. package/dist/plus/integrations/reads/context.d.ts.map +0 -1
  1434. package/dist/plus/integrations/reads/context.js.map +0 -1
  1435. package/dist/plus/integrations/reads/counts.d.ts.map +0 -1
  1436. package/dist/plus/integrations/reads/cursors.d.ts.map +0 -1
  1437. package/dist/plus/integrations/reads/drains.d.ts.map +0 -1
  1438. package/dist/plus/integrations/reads/filters.d.ts.map +0 -1
  1439. package/dist/plus/integrations/reads/hierarchy.d.ts.map +0 -1
  1440. package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +0 -1
  1441. package/dist/plus/integrations/reads/issueBatch.d.ts.map +0 -1
  1442. package/dist/plus/integrations/reads/issueTracker.d.ts.map +0 -1
  1443. package/dist/plus/integrations/reads/issues.d.ts.map +0 -1
  1444. package/dist/plus/integrations/reads/ordering.d.ts.map +0 -1
  1445. package/dist/plus/integrations/reads/paging.d.ts.map +0 -1
  1446. package/dist/plus/integrations/reads/pullRequests.d.ts.map +0 -1
  1447. package/dist/plus/integrations/reads/resolveRepository.d.ts.map +0 -1
  1448. package/dist/plus/integrations/reads/searchIssues.d.ts.map +0 -1
  1449. package/dist/plus/integrations/reads/searchPullRequests.d.ts.map +0 -1
  1450. package/dist/plus/integrations/reads/sweeps.d.ts.map +0 -1
  1451. package/dist/plus/integrations/reads/trackerIssue.d.ts.map +0 -1
  1452. package/dist/plus/integrations/reads/warnings.d.ts.map +0 -1
  1453. package/dist/plus/integrations/results.d.ts.map +0 -1
  1454. package/dist/plus/integrations/telemetry.d.ts.map +0 -1
  1455. package/dist/plus/integrations/utils/domain.utils.d.ts.map +0 -1
  1456. package/dist/plus/integrations/utils/integration.utils.d.ts.map +0 -1
  1457. package/dist/utils/array.d.ts.map +0 -1
  1458. package/dist/utils/base64.d.ts.map +0 -1
  1459. package/dist/utils/base64.js.map +0 -1
  1460. package/dist/utils/brand.d.ts.map +0 -1
  1461. package/dist/utils/brand.js.map +0 -1
  1462. package/dist/utils/cancellation.d.ts.map +0 -1
  1463. package/dist/utils/charCode.d.ts.map +0 -1
  1464. package/dist/utils/coalescedRun.d.ts.map +0 -1
  1465. package/dist/utils/color.d.ts.map +0 -1
  1466. package/dist/utils/counter.d.ts.map +0 -1
  1467. package/dist/utils/crypto.d.ts.map +0 -1
  1468. package/dist/utils/crypto.js.map +0 -1
  1469. package/dist/utils/date.d.ts.map +0 -1
  1470. package/dist/utils/debounce.d.ts.map +0 -1
  1471. package/dist/utils/decorators/debounce.d.ts.map +0 -1
  1472. package/dist/utils/decorators/gate.d.ts.map +0 -1
  1473. package/dist/utils/decorators/log.d.ts.map +0 -1
  1474. package/dist/utils/decorators/memoize.d.ts.map +0 -1
  1475. package/dist/utils/decorators/resolver.d.ts.map +0 -1
  1476. package/dist/utils/decorators/sequentialize.d.ts.map +0 -1
  1477. package/dist/utils/decorators/serializable.d.ts.map +0 -1
  1478. package/dist/utils/dedupedAsyncCache.d.ts.map +0 -1
  1479. package/dist/utils/diff.d.ts.map +0 -1
  1480. package/dist/utils/disposable.d.ts.map +0 -1
  1481. package/dist/utils/encoding.d.ts.map +0 -1
  1482. package/dist/utils/env/browser/base64.d.ts.map +0 -1
  1483. package/dist/utils/env/browser/crypto.d.ts.map +0 -1
  1484. package/dist/utils/env/browser/fs.d.ts.map +0 -1
  1485. package/dist/utils/env/browser/hex.d.ts.map +0 -1
  1486. package/dist/utils/env/browser/hrtime.d.ts.map +0 -1
  1487. package/dist/utils/env/browser/logScope.d.ts.map +0 -1
  1488. package/dist/utils/env/browser/md5.d.ts.map +0 -1
  1489. package/dist/utils/env/browser/platform.d.ts.map +0 -1
  1490. package/dist/utils/env/node/base64.d.ts.map +0 -1
  1491. package/dist/utils/env/node/crypto.d.ts.map +0 -1
  1492. package/dist/utils/env/node/exec.d.ts.map +0 -1
  1493. package/dist/utils/env/node/fs.d.ts.map +0 -1
  1494. package/dist/utils/env/node/hex.d.ts.map +0 -1
  1495. package/dist/utils/env/node/hrtime.d.ts.map +0 -1
  1496. package/dist/utils/env/node/hrtime.js.map +0 -1
  1497. package/dist/utils/env/node/logScope.d.ts.map +0 -1
  1498. package/dist/utils/env/node/platform.d.ts.map +0 -1
  1499. package/dist/utils/error.d.ts.map +0 -1
  1500. package/dist/utils/event.d.ts.map +0 -1
  1501. package/dist/utils/formatter.d.ts.map +0 -1
  1502. package/dist/utils/fs.d.ts.map +0 -1
  1503. package/dist/utils/fs.js.map +0 -1
  1504. package/dist/utils/function.d.ts.map +0 -1
  1505. package/dist/utils/fuzzy.d.ts.map +0 -1
  1506. package/dist/utils/hash.d.ts.map +0 -1
  1507. package/dist/utils/hex.d.ts.map +0 -1
  1508. package/dist/utils/hex.js.map +0 -1
  1509. package/dist/utils/hrtime.d.ts.map +0 -1
  1510. package/dist/utils/iterable.d.ts.map +0 -1
  1511. package/dist/utils/keys/chord.d.ts.map +0 -1
  1512. package/dist/utils/keys/keybinding.d.ts.map +0 -1
  1513. package/dist/utils/lazy.d.ts.map +0 -1
  1514. package/dist/utils/loggable.d.ts.map +0 -1
  1515. package/dist/utils/logger.d.ts.map +0 -1
  1516. package/dist/utils/logger.scoped.d.ts.map +0 -1
  1517. package/dist/utils/lruMap.d.ts.map +0 -1
  1518. package/dist/utils/markdown.d.ts.map +0 -1
  1519. package/dist/utils/mru.d.ts.map +0 -1
  1520. package/dist/utils/object.d.ts.map +0 -1
  1521. package/dist/utils/paging.d.ts.map +0 -1
  1522. package/dist/utils/path.d.ts.map +0 -1
  1523. package/dist/utils/platform.d.ts.map +0 -1
  1524. package/dist/utils/platform.js.map +0 -1
  1525. package/dist/utils/promise.d.ts.map +0 -1
  1526. package/dist/utils/promiseCache.d.ts.map +0 -1
  1527. package/dist/utils/resourceUsage.d.ts.map +0 -1
  1528. package/dist/utils/resourceUsage.js.map +0 -1
  1529. package/dist/utils/searchTree.d.ts.map +0 -1
  1530. package/dist/utils/stopwatch.d.ts.map +0 -1
  1531. package/dist/utils/string.d.ts.map +0 -1
  1532. package/dist/utils/subscriptionManager.d.ts.map +0 -1
  1533. package/dist/utils/trie.d.ts.map +0 -1
  1534. package/dist/utils/types.d.ts.map +0 -1
  1535. package/dist/utils/types.js.map +0 -1
  1536. package/dist/utils/uri.d.ts.map +0 -1
  1537. package/dist/utils/validation.d.ts.map +0 -1
  1538. package/dist/utils/version.d.ts.map +0 -1
  1539. package/src/git/cache.ts +0 -1859
  1540. package/src/git/context.ts +0 -301
  1541. package/src/git/errors.ts +0 -1168
  1542. package/src/git/features.ts +0 -98
  1543. package/src/git/gitHealth.ts +0 -522
  1544. package/src/git/models/author.ts +0 -19
  1545. package/src/git/models/autolink.ts +0 -59
  1546. package/src/git/models/blame.ts +0 -46
  1547. package/src/git/models/branch.ts +0 -237
  1548. package/src/git/models/commit.ts +0 -673
  1549. package/src/git/models/contributor.ts +0 -84
  1550. package/src/git/models/defaultBranch.ts +0 -6
  1551. package/src/git/models/diff.ts +0 -74
  1552. package/src/git/models/file.ts +0 -29
  1553. package/src/git/models/fileChange.ts +0 -82
  1554. package/src/git/models/fileStatus.ts +0 -36
  1555. package/src/git/models/graph.ts +0 -444
  1556. package/src/git/models/graphSearch.ts +0 -53
  1557. package/src/git/models/graphSession.ts +0 -102
  1558. package/src/git/models/issue.ts +0 -258
  1559. package/src/git/models/issueOrPullRequest.ts +0 -20
  1560. package/src/git/models/lineRange.ts +0 -7
  1561. package/src/git/models/log.ts +0 -21
  1562. package/src/git/models/mergeConflicts.ts +0 -19
  1563. package/src/git/models/patch.ts +0 -25
  1564. package/src/git/models/pausedOperationStatus.ts +0 -63
  1565. package/src/git/models/pullRequest.ts +0 -353
  1566. package/src/git/models/rebase.ts +0 -60
  1567. package/src/git/models/reference.ts +0 -80
  1568. package/src/git/models/reflog.ts +0 -88
  1569. package/src/git/models/remote.ts +0 -100
  1570. package/src/git/models/remoteProvider.ts +0 -291
  1571. package/src/git/models/remoteResource.ts +0 -87
  1572. package/src/git/models/repository.ts +0 -510
  1573. package/src/git/models/repositoryChangeEvent.ts +0 -30
  1574. package/src/git/models/repositoryIdentities.ts +0 -99
  1575. package/src/git/models/repositoryMetadata.ts +0 -12
  1576. package/src/git/models/resourceDescriptor.ts +0 -28
  1577. package/src/git/models/revision.ts +0 -12
  1578. package/src/git/models/search.ts +0 -138
  1579. package/src/git/models/shortlog.ts +0 -6
  1580. package/src/git/models/signature.ts +0 -45
  1581. package/src/git/models/staging.ts +0 -27
  1582. package/src/git/models/stash.ts +0 -6
  1583. package/src/git/models/status.ts +0 -246
  1584. package/src/git/models/statusFile.ts +0 -131
  1585. package/src/git/models/tag.ts +0 -76
  1586. package/src/git/models/tree.ts +0 -10
  1587. package/src/git/models/user.ts +0 -7
  1588. package/src/git/models/worktree.ts +0 -160
  1589. package/src/git/parsers/diffParser.ts +0 -648
  1590. package/src/git/parsers/rebaseTodoParser.ts +0 -169
  1591. package/src/git/providers/blame.ts +0 -40
  1592. package/src/git/providers/branches.ts +0 -143
  1593. package/src/git/providers/commits.ts +0 -174
  1594. package/src/git/providers/config.ts +0 -167
  1595. package/src/git/providers/contributors.ts +0 -34
  1596. package/src/git/providers/diff.ts +0 -133
  1597. package/src/git/providers/graph.ts +0 -95
  1598. package/src/git/providers/maintenance.ts +0 -224
  1599. package/src/git/providers/operations.ts +0 -164
  1600. package/src/git/providers/patch.ts +0 -31
  1601. package/src/git/providers/pausedOperations.ts +0 -23
  1602. package/src/git/providers/provider.ts +0 -64
  1603. package/src/git/providers/refs.ts +0 -68
  1604. package/src/git/providers/remotes.ts +0 -33
  1605. package/src/git/providers/revision.ts +0 -32
  1606. package/src/git/providers/shared/remotes.ts +0 -95
  1607. package/src/git/providers/staging.ts +0 -36
  1608. package/src/git/providers/stash.ts +0 -51
  1609. package/src/git/providers/status.ts +0 -48
  1610. package/src/git/providers/tags.ts +0 -29
  1611. package/src/git/providers/types.ts +0 -33
  1612. package/src/git/providers/worktrees.ts +0 -37
  1613. package/src/git/remotes/azure-devops.ts +0 -307
  1614. package/src/git/remotes/bitbucket-server.ts +0 -189
  1615. package/src/git/remotes/bitbucket.ts +0 -142
  1616. package/src/git/remotes/custom.ts +0 -162
  1617. package/src/git/remotes/gerrit.ts +0 -186
  1618. package/src/git/remotes/gitea.ts +0 -184
  1619. package/src/git/remotes/github.ts +0 -236
  1620. package/src/git/remotes/gitlab.ts +0 -270
  1621. package/src/git/remotes/google-source.ts +0 -51
  1622. package/src/git/remotes/matcher.ts +0 -215
  1623. package/src/git/repositoryService.ts +0 -180
  1624. package/src/git/run.types.ts +0 -156
  1625. package/src/git/service.ts +0 -369
  1626. package/src/git/utils/autolink.utils.ts +0 -202
  1627. package/src/git/utils/blame.utils.ts +0 -298
  1628. package/src/git/utils/branch.utils.ts +0 -165
  1629. package/src/git/utils/commit.utils.ts +0 -89
  1630. package/src/git/utils/config.utils.ts +0 -8
  1631. package/src/git/utils/conflictResolution.utils.ts +0 -157
  1632. package/src/git/utils/contributor.utils.ts +0 -105
  1633. package/src/git/utils/fetch.utils.ts +0 -48
  1634. package/src/git/utils/fileStatus.utils.ts +0 -62
  1635. package/src/git/utils/graph.utils.ts +0 -46
  1636. package/src/git/utils/issue.utils.ts +0 -177
  1637. package/src/git/utils/issueOrPullRequest.utils.ts +0 -23
  1638. package/src/git/utils/mergeConflicts.utils.ts +0 -21
  1639. package/src/git/utils/pausedOperationStatus.utils.ts +0 -184
  1640. package/src/git/utils/pullRequest.utils.ts +0 -244
  1641. package/src/git/utils/reachability.utils.ts +0 -180
  1642. package/src/git/utils/rebase.utils.ts +0 -128
  1643. package/src/git/utils/reference.utils.ts +0 -267
  1644. package/src/git/utils/remote.utils.ts +0 -146
  1645. package/src/git/utils/repository.utils.ts +0 -18
  1646. package/src/git/utils/resourceDescriptor.utils.ts +0 -26
  1647. package/src/git/utils/revision.utils.ts +0 -149
  1648. package/src/git/utils/search.utils.ts +0 -624
  1649. package/src/git/utils/sorting.ts +0 -329
  1650. package/src/git/utils/sshKey.utils.ts +0 -30
  1651. package/src/git/utils/status.utils.ts +0 -115
  1652. package/src/git/utils/statusFile.utils.ts +0 -182
  1653. package/src/git/utils/tag.utils.ts +0 -17
  1654. package/src/git/utils/tooltip.utils.ts +0 -37
  1655. package/src/git/utils/uriAuthority.ts +0 -34
  1656. package/src/git/utils/user.utils.ts +0 -20
  1657. package/src/git/utils/worktree.utils.ts +0 -21
  1658. package/src/git/watching/changeEvent.ts +0 -95
  1659. package/src/git/watching/classifyChange.ts +0 -104
  1660. package/src/git/watching/gitIgnoreFilter.ts +0 -134
  1661. package/src/git/watching/initWatcher.ts +0 -81
  1662. package/src/git/watching/provider.ts +0 -24
  1663. package/src/git/watching/watchGroup.ts +0 -185
  1664. package/src/git/watching/watchService.ts +0 -430
  1665. package/src/git/watching/watchSession.ts +0 -439
  1666. package/src/git/watching/watcherPatterns.ts +0 -51
  1667. package/src/git-cli/cliGitProvider.ts +0 -461
  1668. package/src/git-cli/exec/exec.errors.ts +0 -1
  1669. package/src/git-cli/exec/exec.ts +0 -11
  1670. package/src/git-cli/exec/exec.types.ts +0 -8
  1671. package/src/git-cli/exec/features.ts +0 -2
  1672. package/src/git-cli/exec/git.ts +0 -1371
  1673. package/src/git-cli/exec/gitQueue.ts +0 -326
  1674. package/src/git-cli/exec/locator.ts +0 -157
  1675. package/src/git-cli/parsers/blameParser.ts +0 -374
  1676. package/src/git-cli/parsers/indexParser.ts +0 -192
  1677. package/src/git-cli/parsers/logParser.ts +0 -1365
  1678. package/src/git-cli/parsers/mergeTreeParser.ts +0 -22
  1679. package/src/git-cli/parsers/refParser.ts +0 -110
  1680. package/src/git-cli/parsers/reflogParser.ts +0 -153
  1681. package/src/git-cli/parsers/remoteParser.ts +0 -95
  1682. package/src/git-cli/parsers/shortlogParser.ts +0 -59
  1683. package/src/git-cli/parsers/signatureParser.ts +0 -162
  1684. package/src/git-cli/parsers/sshSignatureParser.ts +0 -85
  1685. package/src/git-cli/parsers/statusParser.ts +0 -209
  1686. package/src/git-cli/parsers/treeParser.ts +0 -61
  1687. package/src/git-cli/parsers/worktreeParser.ts +0 -111
  1688. package/src/git-cli/providers/blame.ts +0 -598
  1689. package/src/git-cli/providers/branches.ts +0 -1931
  1690. package/src/git-cli/providers/commitFilesetUtils.ts +0 -45
  1691. package/src/git-cli/providers/commits.ts +0 -1856
  1692. package/src/git-cli/providers/config.ts +0 -1025
  1693. package/src/git-cli/providers/contributors.ts +0 -360
  1694. package/src/git-cli/providers/diff.ts +0 -1172
  1695. package/src/git-cli/providers/graph.ts +0 -2237
  1696. package/src/git-cli/providers/maintenance.ts +0 -2599
  1697. package/src/git-cli/providers/operations.ts +0 -1016
  1698. package/src/git-cli/providers/patch.ts +0 -305
  1699. package/src/git-cli/providers/pausedOperations.ts +0 -670
  1700. package/src/git-cli/providers/refs.ts +0 -486
  1701. package/src/git-cli/providers/remotes.ts +0 -115
  1702. package/src/git-cli/providers/revision.ts +0 -383
  1703. package/src/git-cli/providers/staging.ts +0 -210
  1704. package/src/git-cli/providers/stash.ts +0 -577
  1705. package/src/git-cli/providers/status.ts +0 -568
  1706. package/src/git-cli/providers/tags.ts +0 -224
  1707. package/src/git-cli/providers/worktrees.ts +0 -285
  1708. package/src/git-cli/service.ts +0 -82
  1709. package/src/ipc/discovery.ts +0 -186
  1710. package/src/ipc/ipcServer.ts +0 -171
  1711. package/src/plus/agents/agentCapabilities.ts +0 -286
  1712. package/src/plus/agents/providers/claudeCodeTranscript.ts +0 -867
  1713. package/src/plus/agents/providers/gkAgentProvider.ts +0 -4036
  1714. package/src/plus/agents/sanitizePrompt.ts +0 -109
  1715. package/src/plus/agents/stateMachine.ts +0 -197
  1716. package/src/plus/agents/types.ts +0 -500
  1717. package/src/plus/ai/constants.ts +0 -121
  1718. package/src/plus/ai/errors.ts +0 -152
  1719. package/src/plus/ai/models/conversation.ts +0 -35
  1720. package/src/plus/ai/models/model.ts +0 -528
  1721. package/src/plus/ai/models/promptTemplates.ts +0 -171
  1722. package/src/plus/ai/models/provider.ts +0 -125
  1723. package/src/plus/ai/models/results.ts +0 -31
  1724. package/src/plus/ai/prompts.ts +0 -849
  1725. package/src/plus/ai/providers/anthropicProvider.ts +0 -458
  1726. package/src/plus/ai/providers/azureProvider.ts +0 -74
  1727. package/src/plus/ai/providers/context.ts +0 -29
  1728. package/src/plus/ai/providers/deepSeekProvider.ts +0 -46
  1729. package/src/plus/ai/providers/geminiProvider.ts +0 -245
  1730. package/src/plus/ai/providers/gitkrakenProvider.ts +0 -347
  1731. package/src/plus/ai/providers/huggingFaceProvider.ts +0 -64
  1732. package/src/plus/ai/providers/mistralProvider.ts +0 -243
  1733. package/src/plus/ai/providers/ollamaProvider.ts +0 -292
  1734. package/src/plus/ai/providers/openAICompatibleProvider.ts +0 -64
  1735. package/src/plus/ai/providers/openAICompatibleProviderBase.ts +0 -654
  1736. package/src/plus/ai/providers/openRouterProvider.ts +0 -101
  1737. package/src/plus/ai/providers/openaiProvider.ts +0 -47
  1738. package/src/plus/ai/providers/responseFormatCache.ts +0 -39
  1739. package/src/plus/ai/providers/xaiProvider.ts +0 -54
  1740. package/src/plus/ai/utils/ai.utils.ts +0 -95
  1741. package/src/plus/ai/utils/results.utils.ts +0 -407
  1742. package/src/plus/ai/utils/truncation.utils.ts +0 -296
  1743. package/src/plus/git-github/api/config.ts +0 -91
  1744. package/src/plus/git-github/api/github.ts +0 -5462
  1745. package/src/plus/git-github/api/github.utils.ts +0 -36
  1746. package/src/plus/git-github/api/issueSearchQuery.ts +0 -273
  1747. package/src/plus/git-github/api/pullRequestSearchQuery.ts +0 -154
  1748. package/src/plus/git-github/api/token.ts +0 -15
  1749. package/src/plus/git-github/api/tokenUtils.ts +0 -15
  1750. package/src/plus/git-github/api/types.ts +0 -197
  1751. package/src/plus/git-github/context.ts +0 -107
  1752. package/src/plus/git-github/models.ts +0 -623
  1753. package/src/plus/git-github/providers/github/blame.ts +0 -225
  1754. package/src/plus/git-github/providers/github/branches.ts +0 -401
  1755. package/src/plus/git-github/providers/github/commits.ts +0 -929
  1756. package/src/plus/git-github/providers/github/config.ts +0 -47
  1757. package/src/plus/git-github/providers/github/contributors.ts +0 -313
  1758. package/src/plus/git-github/providers/github/diff.ts +0 -281
  1759. package/src/plus/git-github/providers/github/graph.ts +0 -635
  1760. package/src/plus/git-github/providers/github/refs.ts +0 -172
  1761. package/src/plus/git-github/providers/github/remotes.ts +0 -44
  1762. package/src/plus/git-github/providers/github/revision.ts +0 -140
  1763. package/src/plus/git-github/providers/github/status.ts +0 -69
  1764. package/src/plus/git-github/providers/github/tags.ts +0 -148
  1765. package/src/plus/git-github/providers/githubGitProvider.ts +0 -168
  1766. package/src/plus/git-github/providers/githubProvider.ts +0 -65
  1767. package/src/plus/integrations/authentication/cloudIntegrationService.ts +0 -292
  1768. package/src/plus/integrations/authentication/configuredIntegrationService.ts +0 -656
  1769. package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +0 -385
  1770. package/src/plus/integrations/authentication/integrationAuthenticationService.ts +0 -148
  1771. package/src/plus/integrations/authentication/manualTokenProvider.ts +0 -79
  1772. package/src/plus/integrations/authentication/models.ts +0 -202
  1773. package/src/plus/integrations/authentication/rejectedTokenTracker.ts +0 -56
  1774. package/src/plus/integrations/collectionMetadata.ts +0 -325
  1775. package/src/plus/integrations/constants.ts +0 -190
  1776. package/src/plus/integrations/context.ts +0 -386
  1777. package/src/plus/integrations/errors.ts +0 -188
  1778. package/src/plus/integrations/index.ts +0 -231
  1779. package/src/plus/integrations/integrationService.ts +0 -2003
  1780. package/src/plus/integrations/lite.ts +0 -233
  1781. package/src/plus/integrations/manager.ts +0 -728
  1782. package/src/plus/integrations/models/gitHostIntegration.ts +0 -1862
  1783. package/src/plus/integrations/models/integration.ts +0 -1005
  1784. package/src/plus/integrations/models/issueCache.ts +0 -29
  1785. package/src/plus/integrations/models/issueReads.ts +0 -152
  1786. package/src/plus/integrations/models/issuesIntegration.ts +0 -248
  1787. package/src/plus/integrations/models/pullRequestReads.ts +0 -18
  1788. package/src/plus/integrations/providerFilters.ts +0 -36
  1789. package/src/plus/integrations/providers/accounts.ts +0 -38
  1790. package/src/plus/integrations/providers/apiClients.ts +0 -69
  1791. package/src/plus/integrations/providers/apiConfig.ts +0 -71
  1792. package/src/plus/integrations/providers/azure/azure.ts +0 -822
  1793. package/src/plus/integrations/providers/azure/models.ts +0 -621
  1794. package/src/plus/integrations/providers/azureDevOps.ts +0 -1346
  1795. package/src/plus/integrations/providers/bitbucket/bitbucket.ts +0 -904
  1796. package/src/plus/integrations/providers/bitbucket/models.ts +0 -446
  1797. package/src/plus/integrations/providers/bitbucket-server/models.ts +0 -283
  1798. package/src/plus/integrations/providers/bitbucket-server.ts +0 -445
  1799. package/src/plus/integrations/providers/bitbucket.ts +0 -793
  1800. package/src/plus/integrations/providers/github/github.ts +0 -64
  1801. package/src/plus/integrations/providers/github/github.utils.ts +0 -23
  1802. package/src/plus/integrations/providers/github/models.ts +0 -29
  1803. package/src/plus/integrations/providers/github.ts +0 -940
  1804. package/src/plus/integrations/providers/gitlab/gitlab.ts +0 -1320
  1805. package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +0 -80
  1806. package/src/plus/integrations/providers/gitlab/models.ts +0 -271
  1807. package/src/plus/integrations/providers/gitlab.ts +0 -841
  1808. package/src/plus/integrations/providers/issueSorts.ts +0 -89
  1809. package/src/plus/integrations/providers/jira.ts +0 -596
  1810. package/src/plus/integrations/providers/jiraIssueByKey.ts +0 -155
  1811. package/src/plus/integrations/providers/linear.ts +0 -484
  1812. package/src/plus/integrations/providers/models.ts +0 -1816
  1813. package/src/plus/integrations/providers/providerErrors.ts +0 -115
  1814. package/src/plus/integrations/providers/providersApi.ts +0 -1881
  1815. package/src/plus/integrations/providers/pullRequestReviews.ts +0 -122
  1816. package/src/plus/integrations/providers/trello.ts +0 -208
  1817. package/src/plus/integrations/providers/utils/providerPaging.ts +0 -212
  1818. package/src/plus/integrations/providers/utils.ts +0 -419
  1819. package/src/plus/integrations/reads/broaden.ts +0 -704
  1820. package/src/plus/integrations/reads/context.ts +0 -99
  1821. package/src/plus/integrations/reads/counts.ts +0 -610
  1822. package/src/plus/integrations/reads/cursors.ts +0 -224
  1823. package/src/plus/integrations/reads/drains.ts +0 -420
  1824. package/src/plus/integrations/reads/filters.ts +0 -614
  1825. package/src/plus/integrations/reads/hierarchy.ts +0 -486
  1826. package/src/plus/integrations/reads/hierarchy.utils.ts +0 -155
  1827. package/src/plus/integrations/reads/issueBatch.ts +0 -197
  1828. package/src/plus/integrations/reads/issueTracker.ts +0 -556
  1829. package/src/plus/integrations/reads/issues.ts +0 -600
  1830. package/src/plus/integrations/reads/ordering.ts +0 -124
  1831. package/src/plus/integrations/reads/paging.ts +0 -379
  1832. package/src/plus/integrations/reads/pullRequests.ts +0 -260
  1833. package/src/plus/integrations/reads/resolveRepository.ts +0 -272
  1834. package/src/plus/integrations/reads/searchIssues.ts +0 -274
  1835. package/src/plus/integrations/reads/searchPullRequests.ts +0 -235
  1836. package/src/plus/integrations/reads/sweeps.ts +0 -266
  1837. package/src/plus/integrations/reads/trackerIssue.ts +0 -105
  1838. package/src/plus/integrations/reads/warnings.ts +0 -535
  1839. package/src/plus/integrations/results.ts +0 -443
  1840. package/src/plus/integrations/telemetry.ts +0 -29
  1841. package/src/plus/integrations/utils/domain.utils.ts +0 -26
  1842. package/src/plus/integrations/utils/integration.utils.ts +0 -215
  1843. package/src/utils/array.ts +0 -194
  1844. package/src/utils/base64.ts +0 -1
  1845. package/src/utils/brand.ts +0 -7
  1846. package/src/utils/cancellation.ts +0 -199
  1847. package/src/utils/charCode.ts +0 -38
  1848. package/src/utils/coalescedRun.ts +0 -45
  1849. package/src/utils/color.ts +0 -817
  1850. package/src/utils/counter.ts +0 -21
  1851. package/src/utils/crypto.ts +0 -1
  1852. package/src/utils/date.ts +0 -474
  1853. package/src/utils/debounce.ts +0 -303
  1854. package/src/utils/decorators/debounce.ts +0 -31
  1855. package/src/utils/decorators/gate.ts +0 -167
  1856. package/src/utils/decorators/log.ts +0 -320
  1857. package/src/utils/decorators/memoize.ts +0 -98
  1858. package/src/utils/decorators/resolver.ts +0 -95
  1859. package/src/utils/decorators/sequentialize.ts +0 -118
  1860. package/src/utils/decorators/serializable.ts +0 -43
  1861. package/src/utils/dedupedAsyncCache.ts +0 -74
  1862. package/src/utils/diff.ts +0 -61
  1863. package/src/utils/disposable.ts +0 -156
  1864. package/src/utils/encoding.ts +0 -8
  1865. package/src/utils/env/browser/base64.ts +0 -50
  1866. package/src/utils/env/browser/crypto.ts +0 -21
  1867. package/src/utils/env/browser/fs.ts +0 -3
  1868. package/src/utils/env/browser/hex.ts +0 -41
  1869. package/src/utils/env/browser/hrtime.ts +0 -14
  1870. package/src/utils/env/browser/logScope.ts +0 -57
  1871. package/src/utils/env/browser/md5.ts +0 -217
  1872. package/src/utils/env/browser/platform.ts +0 -10
  1873. package/src/utils/env/node/base64.ts +0 -19
  1874. package/src/utils/env/node/crypto.ts +0 -17
  1875. package/src/utils/env/node/exec.ts +0 -488
  1876. package/src/utils/env/node/fs.ts +0 -5
  1877. package/src/utils/env/node/hex.ts +0 -11
  1878. package/src/utils/env/node/hrtime.ts +0 -1
  1879. package/src/utils/env/node/logScope.ts +0 -63
  1880. package/src/utils/env/node/platform.ts +0 -5
  1881. package/src/utils/error.ts +0 -18
  1882. package/src/utils/event.ts +0 -230
  1883. package/src/utils/formatter.ts +0 -198
  1884. package/src/utils/fs.ts +0 -1
  1885. package/src/utils/function.ts +0 -141
  1886. package/src/utils/fuzzy.ts +0 -185
  1887. package/src/utils/hash.ts +0 -60
  1888. package/src/utils/hex.ts +0 -1
  1889. package/src/utils/hrtime.ts +0 -8
  1890. package/src/utils/iterable.ts +0 -797
  1891. package/src/utils/keys/chord.ts +0 -184
  1892. package/src/utils/keys/keybinding.ts +0 -116
  1893. package/src/utils/lazy.ts +0 -39
  1894. package/src/utils/loggable.ts +0 -7
  1895. package/src/utils/logger.scoped.ts +0 -237
  1896. package/src/utils/logger.ts +0 -403
  1897. package/src/utils/lruMap.ts +0 -112
  1898. package/src/utils/markdown.ts +0 -115
  1899. package/src/utils/mru.ts +0 -68
  1900. package/src/utils/object.ts +0 -278
  1901. package/src/utils/paging.ts +0 -97
  1902. package/src/utils/path.ts +0 -204
  1903. package/src/utils/platform.ts +0 -1
  1904. package/src/utils/promise.ts +0 -657
  1905. package/src/utils/promiseCache.ts +0 -908
  1906. package/src/utils/resourceUsage.ts +0 -5
  1907. package/src/utils/searchTree.ts +0 -444
  1908. package/src/utils/stopwatch.ts +0 -125
  1909. package/src/utils/string.ts +0 -1003
  1910. package/src/utils/subscriptionManager.ts +0 -40
  1911. package/src/utils/trie.ts +0 -740
  1912. package/src/utils/types.ts +0 -31
  1913. package/src/utils/uri.ts +0 -118
  1914. package/src/utils/validation.ts +0 -38
  1915. package/src/utils/version.ts +0 -128
@@ -1 +1 @@
1
- {"version":3,"file":"gkAgentProvider.js","sourceRoot":"","sources":["../../../../src/plus/agents/providers/gkAgentProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gkAgentProvider.js","names":["Logger"],"sources":["../../../../../plus/agents/src/providers/gkAgentProvider.ts"],"sourcesContent":["import * as l10n from '@vscode/l10n';\nimport { gate } from '@gitlens/utils/decorators/gate.js';\nimport type { UnifiedDisposable } from '@gitlens/utils/disposable.js';\nimport { disposableInterval } from '@gitlens/utils/disposable.js';\nimport { Emitter } from '@gitlens/utils/event.js';\nimport { Logger } from '@gitlens/utils/logger.js';\nimport { arePathsEqual, normalizePath } from '@gitlens/utils/path.js';\nimport type { AgentCapabilities } from '../agentCapabilities.js';\nimport {\n\tagentCapabilities,\n\tclaudeCodeCapabilities,\n\tgetAgentCapabilities,\n\tgetAgentCapabilitiesByProviderId,\n\tresolveCanonicalHookEvent,\n\tresolveCanonicalToolName,\n} from '../agentCapabilities.js';\nimport { prepareStoredPrompt } from '../sanitizePrompt.js';\nimport {\n\tclassifyPermissionKind,\n\tderiveStatusFromEvent,\n\tdescribeToolInput,\n\textractPlanSummary,\n\textractQuestionDetails,\n\tgetToolFilePath,\n\tgetToolReadPath,\n\tisProcessAlive,\n} from '../stateMachine.js';\nimport type {\n\tAgentProviderCallbacks,\n\tAgentSession,\n\tAgentSessionHistoryItem,\n\tAgentSessionHistoryOptions,\n\tAgentSessionHistoryResult,\n\tAgentSessionPhase,\n\tAgentSessionProvider,\n\tAgentSessionResumeOutcome,\n\tAgentSessionResumeTarget,\n\tAgentSessionStatus,\n\tLiveAgentSession,\n\tPendingPermission,\n\tPendingPermissionKind,\n\tPermissionDecision,\n\tPermissionSuggestion,\n} from '../types.js';\nimport { getPhaseForStatus } from '../types.js';\nimport type { EndedTranscriptDetails } from './claudeCodeTranscript.js';\nimport { ClaudeCodeTranscriptReader } from './claudeCodeTranscript.js';\n\ninterface AgentSessionEvent {\n\t/** The originating agent's NATIVE hook event name, relayed verbatim by the CLI — NOT yet a\n\t * canonical `AgentHookEvent`. Resolve it through {@link resolveCanonicalHookEvent} before\n\t * switching on it. */\n\tevent: string;\n\tsessionId: string;\n\t/** `gk ai hook` client id of the originating host (`claude-code`, `codex`, …) — NOT\n\t * `AgentSession.providerId`. Absent on older CLIs. */\n\tproviderId?: string;\n\tcwd: string;\n\t/** The agent's launch directory, captured first-hand by the CLI and preserved across events.\n\t * Optional — older CLIs don't send it, in which case consumers fall back to deriving it from\n\t * the first-seen `cwd`. */\n\tinitialCwd?: string;\n\tpid?: number;\n\tsource?: string;\n\tmodel?: string;\n\treason?: string;\n\ttoolName?: string;\n\tagentId?: string;\n\tagentType?: string;\n\tplanFile?: string;\n\tnotificationType?: string;\n\tsessionName?: string;\n\tprompt?: string;\n\tfirstPrompt?: string;\n\ttoolInput?: Record<string, unknown>;\n\tpermissionSuggestions?: PermissionSuggestion[];\n\thookInput?: Record<string, unknown>;\n\t/** CLI-resolved worktree roots for this session's cwd visits, newest last — same shape as\n\t * {@link SessionFileData.cwdTimeline}. The CLI runs `rev-parse` at hook time and includes this\n\t * on every event, even though it isn't part of the raw hook payload. */\n\tcwdTimeline?: { cwd: string; worktree?: string; at?: string }[];\n}\n\ninterface PermissionResponse {\n\thookSpecificOutput: {\n\t\thookEventName: 'PermissionRequest';\n\t\tdecision: {\n\t\t\tbehavior: PermissionDecision;\n\t\t\tupdatedPermissions?: PermissionSuggestion[];\n\t\t};\n\t};\n}\n\ninterface PendingPermissionEntry {\n\t/** All connections waiting on this ask — duplicate deliveries (CLI retry after its 60s\n\t * response-header timeout) attach here and settle together. */\n\tresolvers: { resolve(response: PermissionResponse): void; reject(reason: Error): void }[];\n\ttoolName: string;\n\ttoolDescription: string;\n\t/** From `hookInput.tool_use_id` when the CLI surfaces it; identity gate for stale-clearing. */\n\ttoolUseId?: string;\n\t/** Serialized tool_input, for duplicate-delivery detection when `toolUseId` is absent. */\n\ttoolInputJson?: string;\n}\n\ninterface SessionBookkeeping {\n\tactiveToolCount: number;\n\tpendingPermission?: PendingPermission;\n\t/** Refcount of in-flight file-mutating tool calls per absolute path. Keyed by path (not\n\t * `tool_use_id`) because the GK CLI hook payload doesn't reliably surface `tool_use_id` —\n\t * refcounting per path is order-independent and tolerant of out-of-order Pre/Post pairs. */\n\tcurrentFileCounts: Map<string, number>;\n\t/** Per-path cooldown timers scheduled when a path's refcount hits zero, so back-to-back\n\t * Edit/Write to the same path doesn't flicker the WIP decoration. A fresh Pre on the same\n\t * path cancels its pending clear. */\n\tpendingFileClears: Map<string, NodeJS.Timeout>;\n\t/** Refcount of in-flight read-only file tool calls (Read/NotebookRead) per absolute path.\n\t * Mirrors {@link currentFileCounts} so consumers can distinguish \"looking at\" from \"working\n\t * on\". */\n\tcurrentReadCounts: Map<string, number>;\n\t/** Per-path cooldown timers for reads — same semantics as {@link pendingFileClears}, keeps a\n\t * recently-read file visible briefly after the read completes. */\n\tpendingReadClears: Map<string, NodeJS.Timeout>;\n\t/** Epoch-ms timestamps of the last `PreToolUse` for each kind, per absolute path. Stamped on\n\t * every Pre; the per-path `edit`/`read` slot survives through the cooldown window and is\n\t * dropped only when the corresponding count map drops the path. Serialized into\n\t * `AgentSession.fileActivity` as `editedAt = now - timestamp.edit` (relative ms), so the\n\t * webview can compute heat decay without dealing with host clock skew. */\n\tlastTouchedAt: Map<string, { edit?: number; read?: number }>;\n\t/** Set to true when `resolveGitInfo` for the session's current cwd returned `undefined`\n\t * (cwd is not a git repo). Prevents the `ensureSession` retry from firing forever on\n\t * every subsequent hook event. Cleared when the session's cwd changes (re-resolution\n\t * warranted) or on resetBookkeeping (Stop/SessionStart). */\n\tgitInfoUnresolvable: boolean;\n\t/** Set while the session's `worktreePath` came from the CLI (an event's `cwdTimeline`, or a poll\n\t * record's). The CLI resolves the worktree for the exact cwd at hook time; the local probe answers\n\t * for whichever repo the host registry matches, which for a nested cwd can be the parent worktree.\n\t * While set, `resolveGitInfo` keeps the seated value instead of overwriting it. Cleared when the\n\t * cwd moves without the CLI explaining the new location — attribution goes back to the probe. */\n\tcliSeatedWorktree?: boolean;\n\t/** Phase that immediately preceded the current one, with its original `phaseSince`. Used by\n\t * `resolvePhaseSince` to restore continuity when phase oscillates back within a short\n\t * window (e.g., Stop → idle → working after a continuation crosses the debounce). */\n\tpriorPhase?: { phase: AgentSessionPhase; phaseSince: Date };\n\t/** Set once the reconciliation poll has seen this session's durable `ended` record. Gates\n\t * ended-session removal: a session the live `SessionEnd` path just transitioned is never\n\t * reconcile-removed by an already-in-flight poll that legitimately missed it — only after a poll\n\t * has confirmed the CLI still lists it. */\n\tpolledAtLeastOnce?: boolean;\n\t/** The durable record's cwd that a live listing superseded when a resume moved the session\n\t * elsewhere. While the record still reports this exact cwd, a poll that no longer finds the\n\t * session in the live listing must not re-seat the row (or trust the record's `endedAt`) —\n\t * the record predates the resume. Cleared when the record's cwd changes (the CLI caught up). */\n\tsupersededRecordCwd?: string;\n\t/** Set once an ended session's transcript has been read on demand (via\n\t * `resolveEndedSessionDetails`). Terminal transcripts don't change, so the read happens at\n\t * most once regardless of how many times the row is opened. */\n\tendedDetailsResolved?: boolean;\n}\n\nconst staleCheckIntervalMs = 15 * 60 * 1000; // 15 minutes\n/** Minimum spacing between gated reconciliation polls while NOTHING is running. The quarter-hourly\n * tick exists to reap agents that died without a `SessionEnd`; with no live session there's nothing\n * to reap, leaving only terminal-history reconciliation and the CLI's retention sweep — both fine\n * hourly. Window startup polls ungated, so this never delays a fresh window. */\nconst idleReconcileIntervalMs = 60 * 60 * 1000; // 1 hour\n/** How long a freshly-ended row is protected from absence-based removal. The CLI persists the\n * ended record (atomic temp+rename) BEFORE broadcasting the hook event, so a poll that starts after\n * we mark a row ended will list it — this guards only against that ordering changing on the CLI\n * side, where the cost of being wrong is an ended row silently vanishing. */\nconst endedRemovalGraceMs = 30 * 1000; // 30 seconds\n/** How long the machine-global archived-session id list (fetched via a separate `--status archived`\n * CLI query) is cached. `listSessionHistory` asks for it once per worktree on panel open, so without\n * this a multi-worktree graph spawns N identical CLI processes. `archiveSession` invalidates the\n * cache, so a just-archived row never lingers under \"Past\". */\nconst archivedSessionIdsCacheTtlMs = 10 * 1000; // 10 seconds\n/** Ended sessions defer git + transcript resolution (a 30-day cold-start would otherwise fan out\n * hundreds of probes). Exception: sessions ended within this window still surface on WIP rows /\n * branch cards, which match strictly by resolved `worktreePath` — so their git info is resolved\n * eagerly at poll time (a handful), keeping the older tail lazy. Mirrors the 24h WIP-row window. */\nconst recentEndedGitResolveThresholdMs = 24 * 60 * 60 * 1000; // 24 hours\nconst inputRequiredLabel = l10n.t('Input Required');\nconst waitingForInputLabel = l10n.t('Waiting for input');\nconst subagentLabel = l10n.t('Subagent');\n/** Default cooldown between PostToolUse and dropping the file from `fileActivity`. Held long\n * enough that the treemap activity overlay can render a decay tail well past the moment the tool\n * call completed. The host may override per-call via `AgentProviderCallbacks.getActivityDecayMs`\n * (driven by the user's `gitlens.graph.experimental.visualizations.activityDecay` setting). */\nconst defaultActivityDecayMs = 5 * 60 * 1000; // 5 minutes\n\n/** Grace period before `Stop` commits to `idle`. Long enough to absorb a same-turn continuation\n * (hook-driven re-prompt, IPC event reordering, auto-resume); short enough that legitimate idle\n * is visible promptly. */\nconst stopToIdleDebounceMs = 750;\n\n/** If a phase transitions away and then back within this window, restore the prior `phaseSince`\n * so the displayed elapsed time doesn't snap to 0 on transient oscillations. Slightly longer\n * than `stopToIdleDebounceMs` so a continuation that just barely crosses the debounce still\n * restores continuity. */\nconst phaseSinceRestoreWindowMs = 2000;\n\ninterface SessionFileData {\n\tsessionId: string;\n\t/** `gk ai hook` client id of the owning host — see {@link AgentSessionEvent.providerId}. */\n\tproviderId?: string;\n\t/** The owning agent's NATIVE hook event name — see {@link AgentSessionEvent.event}. */\n\tevent: string;\n\t/** The agent's RAW hook payload for {@link event}, relayed verbatim by the CLI — same field the\n\t * live path reads off {@link AgentSessionEvent.hookInput}. The poll needs it because some agents\n\t * encode an event's meaning in the payload rather than its name (OpenCode's `session.status`),\n\t * and {@link resolveCanonicalHookEvent} can't canonicalize those without being handed it. */\n\thookInput?: Record<string, unknown>;\n\tcwd: string;\n\t/** CLI-provided launch directory; absent on older CLIs (fall back to `cwd`). */\n\tinitialCwd?: string;\n\t/** Worktree roots (`git rev-parse --show-toplevel`) the CLI resolved for this session's cwd\n\t * visits, newest last. Absent on older CLIs. Lets us read `worktreePath` straight from the\n\t * durable store — so ended sessions attach to branch cards / WIP rows / the resume picker at\n\t * any age without a git probe (the CLI already ran `rev-parse` at hook time). */\n\tcwdTimeline?: { cwd: string; worktree?: string; at?: string }[];\n\tworktrees?: string[];\n\tpid: number;\n\ttoolName?: string | null;\n\tagentId?: string | null;\n\tagentType?: string | null;\n\tsource?: string | null;\n\tmodel?: string | null;\n\tupdatedAt: string;\n\tsubagents?: { agentId: string; agentType: string }[];\n\tplanFile?: string | null;\n\tsessionName?: string | null;\n\tprompt?: string | null;\n\tfirstPrompt?: string | null;\n\t/** CLI durable-session lifecycle status. Absent on legacy files → treated as `active`. `ended`\n\t * records are surfaced as terminal `ended` sessions; `archived` is excluded by the query. */\n\tstatus?: 'active' | 'ended' | 'archived';\n\t/** Why the session ended (`session-end`, `rotated`, `stale`, `dead-pid`, `pid-zero-idle`,\n\t * `archived`). Present only on `ended`/`archived` records. */\n\tendReason?: string;\n\t/** RFC3339 timestamp the session ended; used as `lastActivity`/`phaseSince` for ended rows. */\n\tendedAt?: string;\n}\n\n/** The session's current worktree root from the CLI's durable record — the last cwd-visit's resolved\n * worktree, falling back to the last distinct worktree seen. `undefined` on older CLIs that don't\n * record it, so the caller resolves git the slow way instead. */\nfunction worktreeRootFromData(data: SessionFileData): string | undefined {\n\tconst fromTimeline = data.cwdTimeline?.at(-1)?.worktree;\n\tif (fromTimeline) return fromTimeline;\n\n\treturn data.worktrees?.at(-1) || undefined;\n}\n\n/** The CLI resolves the worktree for `event.cwd` at hook time and includes it on every event —\n * using its answer seats `worktreePath` synchronously, closing the in-flight-probe window where\n * a session that just moved would otherwise still show its previous worktree until `resolveGitInfo`\n * catches up. Scans from the end for the timeline entry matching the event's current cwd. */\nfunction worktreeFromEvent(event: AgentSessionEvent): string | undefined {\n\tconst timeline = event.cwdTimeline;\n\tif (timeline == null) return undefined;\n\n\tfor (let i = timeline.length - 1; i >= 0; i--) {\n\t\tconst entry = timeline[i];\n\t\tif (entry.cwd === event.cwd) return entry.worktree || undefined;\n\t}\n\n\treturn undefined;\n}\n\n/** Reorders `paths` so each distinct (already-normalized) value is positioned by its LAST\n * occurrence — an earlier occurrence of a value that recurs later is dropped, and the value's one\n * remaining slot sits where that last occurrence falls. Implemented via delete-then-reinsert into\n * a `Map`: re-inserting a key after deleting it moves it to the end of `Map` iteration order,\n * which is exactly \"this value's position is its most recent occurrence\". */\nfunction orderByLastOccurrence(paths: readonly string[]): string[] {\n\tconst seen = new Map<string, true>();\n\tfor (const path of paths) {\n\t\tseen.delete(path);\n\t\tseen.set(path, true);\n\t}\n\treturn [...seen.keys()];\n}\n\n/** Distinct, normalized, non-empty `worktree` values from a `cwdTimeline`, ordered by recency —\n * positioned by each path's LAST occurrence in the (chronological) timeline, so a path the\n * session returns to later sorts after one it doesn't. `undefined` when the timeline is absent or\n * names no worktree — callers should NOT overwrite an existing `visitedWorktreePaths` with an\n * empty array in that case. */\nfunction visitedFromTimeline(\n\ttimeline: { cwd: string; worktree?: string; at?: string }[] | undefined,\n): string[] | undefined {\n\tif (timeline == null) return undefined;\n\n\tconst paths: string[] = [];\n\tfor (const entry of timeline) {\n\t\tif (!entry.worktree) continue;\n\n\t\tpaths.push(normalizePath(entry.worktree));\n\t}\n\tif (paths.length === 0) return undefined;\n\n\treturn orderByLastOccurrence(paths);\n}\n\n/** Unions `adds` (each an array or a single path, `undefined` skipped) into `existing`, normalizing\n * every path, and reorders the result by recency: every add — including one that names a path\n * already in `existing` — moves that path to the end, same \"last occurrence wins the slot\" rule\n * {@link orderByLastOccurrence} applies to a single timeline. Adds arrive in chronological order at\n * every call site (timeline-derived paths first, the current `worktreePath` folded last), so the\n * current worktree normally ends up last.\n *\n * **Reference-stability contract — load-bearing**: returns `existing` BY REFERENCE, unchanged,\n * when the resulting sequence is element-for-element identical to `existing`. Callers\n * (`ensureSession`'s identity gate) rely on this to avoid firing spurious change events on every\n * hook event / poll cycle when the visited set hasn't actually changed — re-processing an\n * unchanged timeline plus the same current worktree reproduces the identical sequence (each path\n * \"moves\" to the same slot it already occupies), so the comparison below still holds. */\nfunction unionVisited(\n\texisting: readonly string[] | undefined,\n\t...adds: (string | readonly string[] | undefined)[]\n): readonly string[] | undefined {\n\tconst combined = existing != null ? [...existing] : [];\n\tfor (const add of adds) {\n\t\tif (add == null) continue;\n\n\t\tconst values = typeof add === 'string' ? [add] : add;\n\t\tfor (const value of values) {\n\t\t\tif (!value) continue;\n\n\t\t\tcombined.push(normalizePath(value));\n\t\t}\n\t}\n\n\tconst next = orderByLastOccurrence(combined);\n\tif (existing != null && next.length === existing.length && next.every((path, i) => path === existing[i])) {\n\t\treturn existing;\n\t}\n\treturn next.length > 0 ? next : undefined;\n}\n\n/** The event's tool name, translated from the agent's native vocabulary into the canonical (Claude\n * Code) one. Prefers the raw `hookInput.tool_name` passthrough and falls back to the projected\n * top-level field for older CLIs. Everything downstream — `describeToolInput`,\n * `classifyPermissionKind`, `getToolFilePath`, `getToolReadPath`, and the display detail — expects\n * canonical names, and Claude Code has no alias table, so its names pass through untouched. */\nfunction canonicalToolNameFromEvent(capabilities: AgentCapabilities, event: AgentSessionEvent): string | undefined {\n\tconst native = (event.hookInput?.tool_name as string | undefined) ?? event.toolName;\n\treturn native != null ? resolveCanonicalToolName(capabilities, native) : undefined;\n}\n\n/** Whether GitLens can actually answer a blocking permission ask from this agent. Two conditions,\n * deliberately separate: the agent must support blocking hooks at all, AND the response we build\n * must be one it understands. {@link PermissionResponse} is Claude-shaped\n * (`hookSpecificOutput.hookEventName: 'PermissionRequest'`), so an agent that supports blocking\n * hooks but expects a different envelope stays observe-only until per-agent response builders land\n * — at which point the second clause is what gets deleted. */\nfunction canAnswerBlockingPermission(capabilities: AgentCapabilities): boolean {\n\treturn capabilities.supportsBlockingPermissions && capabilities.hookClientId === 'claude-code';\n}\n\n/** Synthesizes an unresolvable ask for a `permission_requested` row that has no routable\n * `PendingPermission` — a non-blocking `Notification`/`PermissionRequest` tail, or a\n * poll-discovered live/revived row. None of these hold a blocking hook entry to route an\n * Allow/Deny through, so the card must show what the agent is waiting on without offering\n * actions the host can't fulfill. */\nfunction synthesizeUnresolvableAsk(toolName: string | null | undefined, planFilePath?: string): PendingPermission {\n\tif (toolName != null) {\n\t\tconst kind = classifyPermissionKind(toolName);\n\t\treturn {\n\t\t\tkind: kind,\n\t\t\ttoolName: toolName,\n\t\t\ttoolDescription: toolName,\n\t\t\t// A plan ask with no body at least links the plan the agent wrote, so the card can offer\n\t\t\t// View Plan instead of a bare tool name.\n\t\t\tplanFilePath: kind === 'plan' ? planFilePath : undefined,\n\t\t\tresolvable: false,\n\t\t};\n\t}\n\n\treturn {\n\t\tkind: 'elicitation',\n\t\ttoolName: inputRequiredLabel,\n\t\ttoolDescription: waitingForInputLabel,\n\t\tresolvable: false,\n\t};\n}\n\n/** JSON.stringify with object keys recursively sorted — array order is preserved. `tool_input`\n * can arrive with different key order (or via the top-level fallback field) between deliveries;\n * canonicalizing makes input equality reliable across those variations. */\nfunction stableStringify(value: unknown): string {\n\treturn JSON.stringify(value, (_key, val: unknown) => {\n\t\tif (val == null || typeof val !== 'object' || Array.isArray(val)) return val;\n\n\t\tconst sorted: Record<string, unknown> = {};\n\t\tfor (const key of Object.keys(val).sort()) {\n\t\t\tsorted[key] = (val as Record<string, unknown>)[key];\n\t\t}\n\t\treturn sorted;\n\t});\n}\n\n/** Field-wise equality for the ask a `permission_requested` row publishes. `updateSessionStatus`\n * compares it before short-circuiting so a second ask arriving while the row is already\n * `permission_requested` (a non-blocking tail for a different tool) still reaches subscribers. */\nfunction isSameAsk(a: PendingPermission | undefined, b: PendingPermission | undefined): boolean {\n\tif (a === b) return true;\n\tif (a == null || b == null) return false;\n\n\treturn (\n\t\ta.kind === b.kind &&\n\t\ta.toolName === b.toolName &&\n\t\ta.toolDescription === b.toolDescription &&\n\t\ta.toolInputDescription === b.toolInputDescription &&\n\t\ta.resolvable === b.resolvable &&\n\t\ta.planFilePath === b.planFilePath &&\n\t\ta.planSummary === b.planSummary &&\n\t\ta.questionText === b.questionText &&\n\t\ta.questionCount === b.questionCount\n\t);\n}\n\ninterface SessionContext {\n\t/** The owning agent's descriptor — the source of a created session's `providerId`/`providerName`.\n\t * Omitted only by the deferred-commit paths (the `Stop → idle` timer, a permission resolve),\n\t * which run against a row that already exists. */\n\tcapabilities?: AgentCapabilities;\n\tpid?: number;\n\tworkspacePath?: string;\n\tisInWorkspace?: boolean;\n\tcwd?: string;\n\t/** CLI-provided launch directory (authoritative when present). */\n\tinitialCwd?: string;\n\tplanFile?: string;\n\tsessionName?: string;\n\t/** The model the session is running, from the hook event. */\n\tmodel?: string;\n\t/** CLI-resolved worktree root for the current cwd (authoritative when present). */\n\tworktreePath?: string;\n\t/** Distinct worktree roots observed via this event's cwdTimeline. */\n\tvisitedWorktreePaths?: string[];\n}\n\ntype FileActivityEntry = NonNullable<AgentSession['fileActivity']>[number];\n\n/** Structural comparison of two `fileActivity` arrays — same set of paths, same kinds present,\n * same `reading`/`editing` flags. Ignores numeric timestamp values because those drift between\n * every call (Date.now() advances) even when nothing has actually changed. Used to gate event\n * firing: timestamps still get refreshed via the `_sessions[]` write, but a fire only happens\n * when the structural shape changed. Treats `undefined` and `[]` as equal. */\nfunction fileActivityStructurallyEqual(\n\ta: readonly FileActivityEntry[] | undefined,\n\tb: readonly FileActivityEntry[] | undefined,\n): boolean {\n\tconst aLen = a?.length ?? 0;\n\tconst bLen = b?.length ?? 0;\n\tif (aLen !== bLen) return false;\n\tif (aLen === 0) return true;\n\n\tconst byPath = new Map<string, FileActivityEntry>();\n\tfor (const entry of a!) {\n\t\tbyPath.set(entry.path, entry);\n\t}\n\tfor (const entry of b!) {\n\t\tconst other = byPath.get(entry.path);\n\t\tif (other == null) return false;\n\t\tif ((entry.readAt != null) !== (other.readAt != null)) return false;\n\t\tif ((entry.editedAt != null) !== (other.editedAt != null)) return false;\n\t\tif ((entry.reading ?? false) !== (other.reading ?? false)) return false;\n\t\tif ((entry.editing ?? false) !== (other.editing ?? false)) return false;\n\t}\n\treturn true;\n}\n\n/**\n * Maps what `claude agents --json` reports for a live session onto `AgentSessionStatus`, per Claude's\n * documented agent-view vocabulary.\n *\n * `kind: 'interactive'` entries carry `status` while their process is alive, plus `waitingFor` when\n * that status is `waiting` — `'permission prompt'` is the one value with a distinct status of its own\n * here, since a permission request is a different kind of block from an ordinary question.\n *\n * `kind: 'background'` entries carry `state` instead: `working` / `blocked` / `done` / `failed` /\n * `stopped`, where `blocked` IS the documented \"needs input\" state.\n *\n * Returns `undefined` for a background session in a TERMINAL state. `--json` lists background\n * sessions \"still working or blocked even when their process has exited\", so a listing is not by\n * itself proof of life — without this, a genuinely finished session would be resurrected as `idle`,\n * which is the opposite of the bug this mapping exists to fix. Callers must not treat such an entry\n * as live: ended-record paths trust the durable record, while active discovery/repair paths skip or\n * remove the stale active row.\n *\n * Anything unrecognized degrades to `'idle'` rather than guessing a working/waiting phase.\n */\n/** Resolves a non-terminal listing override for an `ended` record. `undefined` means \"let the ended\n * record stand\": either the listing doesn't mention this session, or its background state is\n * terminal (see {@link statusFromLiveSession}). Active-record paths inspect the entry separately\n * because they must distinguish absence (unknown; keep record status) from terminal (skip/remove). */\nfunction liveOverrideFor(\n\tliveSessions: ReadonlyMap<string, LiveAgentSession> | undefined,\n\tsessionId: string,\n): { live: LiveAgentSession; status: AgentSessionStatus } | undefined {\n\tconst live = liveSessions?.get(sessionId);\n\tif (live == null) return undefined;\n\n\tconst status = statusFromLiveSession(live);\n\treturn status != null ? { live: live, status: status } : undefined;\n}\n\nfunction statusFromLiveSession(live: {\n\tstatus?: string;\n\tstate?: string;\n\twaitingFor?: string;\n}): AgentSessionStatus | undefined {\n\tswitch (live.status) {\n\t\tcase 'waiting':\n\t\t\treturn live.waitingFor === 'permission prompt' ? 'permission_requested' : 'waiting';\n\t\tcase 'busy':\n\t\t\treturn 'thinking';\n\t}\n\n\tswitch (live.state) {\n\t\tcase 'blocked':\n\t\t\treturn 'waiting';\n\t\tcase 'working':\n\t\t\treturn 'thinking';\n\t\tcase 'done':\n\t\tcase 'failed':\n\t\tcase 'stopped':\n\t\t\treturn undefined;\n\t}\n\n\treturn 'idle';\n}\n\n/** True when a CLI invocation failed because it didn't recognize a flag/command. `--status` and the\n * active-only `list-sessions` default shipped together (gk 3.1.69); an older CLI rejects `--status`\n * and returns all sessions unfiltered, so the flagless retry is the correct legacy equivalent. */\nfunction isUnknownFlagError(ex: unknown): boolean {\n\tconst message = ex instanceof Error ? ex.message : String(ex);\n\treturn /unknown (?:flag|shorthand flag|command)/i.test(message);\n}\n\nexport class GkAgentProvider implements AgentSessionProvider {\n\t/** Identifies the PROVIDER, not an agent: this one hosts every `gk ai hook` client GitLens has\n\t * a descriptor for. A session's own agent identity lives on {@link AgentSession.providerId}\n\t * (`claudeCode`, `codex`, …), sourced from {@link AgentCapabilities} — never from here. */\n\treadonly id = 'gkAgents';\n\treadonly name = 'Coding Agents';\n\treadonly icon = 'robot';\n\treadonly agentProviderIds: readonly string[] = agentCapabilities.map(c => c.providerId);\n\n\tprivate readonly _onDidChangeSessions = new Emitter<void>();\n\treadonly onDidChangeSessions = this._onDidChangeSessions.event;\n\n\tprivate _sessions: AgentSession[] = [];\n\tprivate _ipcStarted = false;\n\tprivate _disposed = false;\n\tprivate _handlerDisposables: UnifiedDisposable[] = [];\n\tprivate readonly _pendingPermissions = new Map<string, PendingPermissionEntry>();\n\t/** `sessionId -> cwd currently being probed`, and the newest cwd requested while that probe runs.\n\t * A probe's answer is only valid for the cwd it was started with, so a session that moves\n\t * mid-flight must supersede rather than dedupe — otherwise the older lookup lands last and\n\t * overwrites the newer location with the directory the session already left. */\n\tprivate readonly _resolveGitInfoInFlight = new Map<string, string>();\n\tprivate readonly _resolveGitInfoPending = new Map<string, string>();\n\t/** Short-TTL cache of the machine-global archived-session id list. Holds the in-flight promise so\n\t * concurrent per-worktree `getPastSessions` calls share one CLI spawn; `archiveSession` clears it. */\n\tprivate _archivedSessionIdsCache: { promise: Promise<string[]>; at: number } | undefined;\n\tprivate readonly _sessionBookkeeping = new Map<string, SessionBookkeeping>();\n\t/** Per-session timers for the deferred `Stop → idle` commit. The handle is cleared (and the\n\t * transition cancelled) by any non-idle status update arriving before the timer fires. */\n\tprivate readonly _pendingIdleTimers = new Map<string, NodeJS.Timeout>();\n\tprivate _workspacePaths: string[] = [];\n\tprivate _staleCheckTimer: UnifiedDisposable | undefined;\n\t/** When the last poll actually ran (gated or not) — paces the idle cadence above. */\n\tprivate _lastSyncAt = 0;\n\t/** Whether agent hooks are installed, pushed by the host via {@link setHooksInstalled}.\n\t * Fail-open (`true`) until the first push lands so a fresh window with real hooks isn't\n\t * suppressed on its first ticks. Gates the reconciliation poll in {@link syncSessions}. */\n\tprivate _hooksInstalled = true;\n\t/** Whether the CLI supports `list-sessions --status` (and with it the durable ended-session\n\t * store). Optimistic until the poll's flagless fallback proves otherwise. When unsupported,\n\t * ended rows are untenable — no poll can ever confirm or archive one — so `SessionEnd`\n\t * reverts to removing the session and reconciliation drops any ended stragglers. */\n\tprivate _statusFilterSupported = true;\n\tprotected _transcriptReader: ClaudeCodeTranscriptReader = new ClaudeCodeTranscriptReader();\n\tprivate _terminalGeneration = 0;\n\t/** Ended-transcript detail results, cached forever per window — an ended transcript is\n\t * immutable, so once resolved it never needs a second read. Keyed by session id. */\n\tprivate readonly _sessionDetailsCache = new Map<string, Promise<EndedTranscriptDetails | undefined>>();\n\n\tconstructor(private readonly callbacks: AgentProviderCallbacks) {}\n\n\tget sessions(): readonly AgentSession[] {\n\t\treturn this._sessions;\n\t}\n\n\tget terminalGeneration(): number {\n\t\treturn this._terminalGeneration;\n\t}\n\n\t/** Single choke point for every terminal transition — a session ending, being removed on end\n\t * (legacy path), being pruned, or a fresh ended record being discovered. Bumps the generation\n\t * the host's history queries validate against (a transition mid-query means the answer may be\n\t * missing a session) and drops the transcript listing caches, whose warm entries may predate\n\t * the transcript the transition just left behind. */\n\tprivate noteTerminalTransition(): void {\n\t\tthis._terminalGeneration++;\n\t\tthis._transcriptReader.invalidateListings();\n\t}\n\n\tstart(workspacePaths: string[]): void {\n\t\tthis._workspacePaths = workspacePaths.map(p => normalizePath(p));\n\t\tvoid this.ensureIpcServer();\n\t}\n\n\tstop(): void {\n\t\t// IPC server stays up intentionally — hooks fire even when the window is unfocused\n\t}\n\n\tsync(): Promise<void> {\n\t\treturn this.syncSessions();\n\t}\n\n\tupdateWorkspacePaths(workspacePaths: string[]): void {\n\t\tthis._workspacePaths = workspacePaths.map(p => normalizePath(p));\n\n\t\tlet changed = false;\n\t\tfor (let i = 0; i < this._sessions.length; i++) {\n\t\t\tconst s = this._sessions[i];\n\t\t\tconst nextWorkspacePath = s.cwd != null ? this.resolveWorkspacePath(s.cwd) : undefined;\n\t\t\tconst nextIsInWorkspace = nextWorkspacePath != null;\n\t\t\tlet subagentsChanged = false;\n\t\t\tconst subagents = s.subagents?.map(sub => {\n\t\t\t\tconst subNextWorkspacePath = sub.cwd != null ? this.resolveWorkspacePath(sub.cwd) : nextWorkspacePath;\n\t\t\t\tconst subNextIsInWorkspace = sub.cwd != null ? subNextWorkspacePath != null : nextIsInWorkspace;\n\t\t\t\tif (sub.isInWorkspace === subNextIsInWorkspace && sub.workspacePath === subNextWorkspacePath) {\n\t\t\t\t\treturn sub;\n\t\t\t\t}\n\n\t\t\t\tsubagentsChanged = true;\n\t\t\t\treturn { ...sub, isInWorkspace: subNextIsInWorkspace, workspacePath: subNextWorkspacePath };\n\t\t\t});\n\t\t\tif (s.isInWorkspace !== nextIsInWorkspace || s.workspacePath !== nextWorkspacePath || subagentsChanged) {\n\t\t\t\tthis._sessions[i] = {\n\t\t\t\t\t...s,\n\t\t\t\t\tisInWorkspace: nextIsInWorkspace,\n\t\t\t\t\tworkspacePath: nextWorkspacePath,\n\t\t\t\t\tsubagents: subagents,\n\t\t\t\t};\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t\tif (changed) {\n\t\t\tthis._onDidChangeSessions.fire();\n\t\t}\n\n\t\tif (!this._ipcStarted) {\n\t\t\t// IPC wasn't bootstrapped yet — start it. ensureIpcServer publishes with the\n\t\t\t// current `_workspacePaths`.\n\t\t\tvoid this.ensureIpcServer();\n\t\t} else {\n\t\t\t// Re-publish so the agents discovery file reflects the new workspacePaths.\n\t\t\tthis.callbacks.ipc\n\t\t\t\t.publishAgents(this._workspacePaths)\n\t\t\t\t.catch((ex: unknown) => Logger.error(ex, 'GkAgentProvider.updateWorkspacePaths: publishAgents failed'));\n\t\t}\n\t}\n\n\tsetHooksInstalled(installed: boolean): void {\n\t\tconst wasOff = !this._hooksInstalled;\n\t\tthis._hooksInstalled = installed;\n\t\t// On a fresh off→on transition, reconcile immediately rather than waiting up to a full\n\t\t// interval — picks up any session that was already running before hooks were installed.\n\t\t// This is a deliberate discovery pass (like the cold-start bootstrap), not a routine tick:\n\t\t// hooks were just off, so the live path couldn't have seen these sessions and anything we\n\t\t// find here is expected, not drift. Run it ungated so it neither skips nor reports drift\n\t\t// telemetry (an ungated `syncSessions()` always polls and never emits `onSyncDiscrepancy`).\n\t\tif (installed && wasOff) {\n\t\t\tvoid this.syncSessions();\n\t\t}\n\t}\n\n\t/** Reads Claude history from its transcript store and tracked terminal records. The exact project\n\t * directory preserves legacy sessions that predate the CLI's durable records. Recent ended\n\t * records add an authoritative worktree-to-session association, so their ids are also recovered\n\t * from other project directories when Claude left the transcript behind after a cwd/worktree\n\t * move. A tracked record with no readable transcript remains visible and archivable, but does not\n\t * advertise Resume. Archive filtering stays provider-local so ids from another harness cannot\n\t * suppress Claude rows. `requireResume` drops the transcript-less tracked records, leaving only\n\t * rows that carry a resume action — and a `total` counting only those. */\n\tasync listSessionHistory(cwd: string, options?: AgentSessionHistoryOptions): Promise<AgentSessionHistoryResult> {\n\t\tconst resumeOnly = options?.requireResume === true;\n\t\t// No launcher means no row can carry resume, so a resume-only query has nothing to return.\n\t\tif (resumeOnly && this.callbacks.resumeSession == null) return { sessions: [], total: 0 };\n\n\t\tconst archivedSessionIds = new Set(await this.getArchivedSessionIds());\n\t\tconst excludeSessionIds = new Set(options?.excludeSessionIds);\n\t\tfor (const id of archivedSessionIds) {\n\t\t\texcludeSessionIds.add(id);\n\t\t}\n\n\t\tconst trackedEndedSessions: AgentSession[] = [];\n\t\tconst endedSessionIds = new Set<string>();\n\t\tfor (const session of this._sessions) {\n\t\t\tif (\n\t\t\t\tsession.status === 'ended' &&\n\t\t\t\tsession.worktreePath != null &&\n\t\t\t\tarePathsEqual(session.worktreePath, cwd) &&\n\t\t\t\t!excludeSessionIds.has(session.id)\n\t\t\t) {\n\t\t\t\t// A tracked record's own row gets a resume action below only for an agent with no\n\t\t\t\t// transcript store of its own; for an agent with one, its id drives transcript recovery\n\t\t\t\t// instead, which produces a resumable row when the transcript moved with it.\n\t\t\t\tif (!resumeOnly) {\n\t\t\t\t\ttrackedEndedSessions.push(session);\n\t\t\t\t}\n\t\t\t\t// Only an agent with a transcript store feeds transcript recovery — the reader reads\n\t\t\t\t// Claude's transcript store specifically, so another agent's id could only ever miss.\n\t\t\t\tif (getAgentCapabilitiesByProviderId(session.providerId)?.supportsTranscripts === true) {\n\t\t\t\t\tendedSessionIds.add(session.id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst [direct, recovered] = await Promise.all([\n\t\t\tthis._transcriptReader.listSessions(cwd, {\n\t\t\t\tlimit: options?.limit,\n\t\t\t\texcludeSessionIds: excludeSessionIds,\n\t\t\t}),\n\t\t\tthis._transcriptReader.listSessionsByIds(endedSessionIds, {\n\t\t\t\tlimit: options?.limit,\n\t\t\t\texcludeCwd: cwd,\n\t\t\t}),\n\t\t]);\n\n\t\tconst historyById = new Map<string, AgentSessionHistoryItem>();\n\t\tconst addTranscript = (session: (typeof direct.sessions)[number], resumeCwd: string): void => {\n\t\t\tif (excludeSessionIds.has(session.sessionId)) return;\n\n\t\t\tconst disposition = archivedSessionIds.has(session.sessionId) ? 'archived' : 'ended';\n\t\t\tconst resumeActions =\n\t\t\t\tthis.callbacks.resumeSession != null\n\t\t\t\t\t? { resume: this.resumeActionFor(claudeCodeCapabilities.providerId, resumeCwd) }\n\t\t\t\t\t: {};\n\t\t\thistoryById.set(session.sessionId, {\n\t\t\t\tid: session.sessionId,\n\t\t\t\t// The reader only reads Claude Code's transcript store, so every row it produces is\n\t\t\t\t// Claude's by construction.\n\t\t\t\tproviderId: claudeCodeCapabilities.providerId,\n\t\t\t\tdisposition: disposition,\n\t\t\t\tactions: disposition === 'ended' ? { ...resumeActions, archive: true } : resumeActions,\n\t\t\t\tlastActivity: new Date(session.lastActivityMs),\n\t\t\t\ttitles: session.titles,\n\t\t\t\tlastPrompt: session.lastPrompt,\n\t\t\t});\n\t\t};\n\t\tfor (const session of direct.sessions) {\n\t\t\taddTranscript(session, cwd);\n\t\t}\n\t\tfor (const session of recovered.sessions) {\n\t\t\taddTranscript(session, session.cwd);\n\t\t}\n\n\t\tfor (const session of trackedEndedSessions) {\n\t\t\tif (historyById.has(session.id)) continue;\n\n\t\t\tconst capabilities = getAgentCapabilitiesByProviderId(session.providerId);\n\t\t\t// The transcript store, when the agent has one, is the authority on resumability (a Claude\n\t\t\t// record whose transcript is gone can't be resumed). Without one, the durable record is all\n\t\t\t// there is, and it carries everything the agent's resume command needs.\n\t\t\tconst resumeCwd = session.cwd ?? session.initialCwd ?? session.worktreePath;\n\t\t\tconst resumable =\n\t\t\t\tcapabilities?.supportsResume === true &&\n\t\t\t\t!capabilities.supportsTranscripts &&\n\t\t\t\tthis.callbacks.resumeSession != null &&\n\t\t\t\tresumeCwd != null;\n\n\t\t\thistoryById.set(session.id, {\n\t\t\t\tid: session.id,\n\t\t\t\tproviderId: session.providerId,\n\t\t\t\tdisposition: 'ended',\n\t\t\t\tactions: resumable\n\t\t\t\t\t? { resume: this.resumeActionFor(session.providerId, resumeCwd), archive: true }\n\t\t\t\t\t: { archive: true },\n\t\t\t\tlastActivity: session.lastActivity,\n\t\t\t\tname: session.name,\n\t\t\t\ttitles: session.transcriptTitles,\n\t\t\t\tfirstPrompt: session.firstPrompt,\n\t\t\t\tlastPrompt: session.lastPrompt,\n\t\t\t});\n\t\t}\n\n\t\tconst history = [...historyById.values()].sort((a, b) => b.lastActivity.getTime() - a.lastActivity.getTime());\n\t\tconst limited = options?.limit != null && options.limit > 0 ? history.slice(0, options.limit) : history;\n\n\t\treturn { sessions: limited, total: Math.max(direct.total + recovered.total, history.length) };\n\t}\n\n\tresumeSession(\n\t\tproviderId: string,\n\t\tsessionId: string,\n\t\tcwd: string,\n\t\ttarget: AgentSessionResumeTarget,\n\t\tname?: string,\n\t): Promise<AgentSessionResumeOutcome | false> {\n\t\treturn this.callbacks.resumeSession?.(providerId, sessionId, cwd, target, name) ?? Promise.resolve(false);\n\t}\n\n\tprivate resumeActionFor(\n\t\tproviderId: string,\n\t\tcwd: string,\n\t): { cwd: string; targets: readonly AgentSessionResumeTarget[] } {\n\t\treturn { cwd: cwd, targets: this.callbacks.getResumeTargets?.(providerId, cwd) ?? ['terminal'] };\n\t}\n\n\tdispose(): void {\n\t\tthis._disposed = true;\n\t\tthis.stop();\n\t\tthis._staleCheckTimer?.dispose();\n\t\tthis._staleCheckTimer = undefined;\n\t\tfor (const d of this._handlerDisposables) {\n\t\t\td.dispose();\n\t\t}\n\t\tthis._handlerDisposables = [];\n\t\tfor (const pending of this._pendingPermissions.values()) {\n\t\t\tthis.rejectAllPending(pending, new Error('Provider disposed'));\n\t\t}\n\t\tthis._pendingPermissions.clear();\n\t\tfor (const bk of this._sessionBookkeeping.values()) {\n\t\t\tthis.cancelPendingFileClears(bk);\n\t\t\tthis.cancelPendingReadClears(bk);\n\t\t}\n\t\tfor (const timer of this._pendingIdleTimers.values()) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tthis._pendingIdleTimers.clear();\n\t\tthis._sessionBookkeeping.clear();\n\t\tif (this._ipcStarted) {\n\t\t\tvoid this.callbacks.ipc.unpublishAgents();\n\t\t\tthis._ipcStarted = false;\n\t\t}\n\t\tthis._onDidChangeSessions.dispose();\n\t}\n\n\t[Symbol.dispose](): void {\n\t\tthis.dispose();\n\t}\n\n\t@gate<typeof GkAgentProvider.prototype.ensureIpcServer>()\n\tprivate async ensureIpcServer(): Promise<void> {\n\t\tif (this._ipcStarted || this._disposed) return;\n\n\t\t// Register handlers before any async work so blocking permission requests aren't delayed.\n\t\tconst handlers: UnifiedDisposable[] = [\n\t\t\tthis.callbacks.ipc.registerHandler('agents/session', (request, searchParams) => {\n\t\t\t\tif (request != null) {\n\t\t\t\t\tconst isBlocking = searchParams.get('blocking') === 'true';\n\t\t\t\t\treturn this.handleSessionEvent(request as AgentSessionEvent, isBlocking);\n\t\t\t\t}\n\t\t\t\treturn Promise.resolve();\n\t\t\t}),\n\t\t\tthis.callbacks.ipc.registerHandler('agents/sessions/open', async request => {\n\t\t\t\tconst sessionId = (request as { sessionId?: string } | undefined)?.sessionId;\n\t\t\t\tif (!sessionId || this.callbacks.revealSession == null) {\n\t\t\t\t\treturn { opened: false };\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\treturn { opened: await this.callbacks.revealSession(sessionId) };\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tLogger.warn(\n\t\t\t\t\t\t`GkAgentProvider.agents/sessions/open: ${ex instanceof Error ? ex.message : String(ex)}`,\n\t\t\t\t\t);\n\t\t\t\t\treturn { opened: false };\n\t\t\t\t}\n\t\t\t}),\n\t\t];\n\n\t\ttry {\n\t\t\tawait this.callbacks.ipc.publishAgents(this._workspacePaths);\n\t\t} catch (ex) {\n\t\t\t// Unwind so a retry can re-register without hitting \"already registered\".\n\t\t\tfor (const d of handlers) {\n\t\t\t\td.dispose();\n\t\t\t}\n\t\t\tLogger.error(ex, 'GkAgentProvider.ensureIpcServer');\n\t\t\treturn;\n\t\t}\n\n\t\t// `publishAgents` no-ops silently if the IPC server failed to start; don't seal\n\t\t// retries in that case — the next call should re-attempt.\n\t\tif (this.callbacks.ipc.port == null) {\n\t\t\tfor (const d of handlers) {\n\t\t\t\td.dispose();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._disposed) {\n\t\t\tfor (const d of handlers) {\n\t\t\t\td.dispose();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handlerDisposables = handlers;\n\t\tthis._ipcStarted = true;\n\n\t\ttry {\n\t\t\tawait this.syncSessions();\n\t\t\tif (this._disposed) return;\n\n\t\t\tthis._staleCheckTimer?.dispose();\n\t\t\tthis._staleCheckTimer = disposableInterval(\n\t\t\t\t() => void this.syncSessions({ gate: true }),\n\t\t\t\tstaleCheckIntervalMs,\n\t\t\t);\n\t\t} catch (ex) {\n\t\t\tLogger.error(ex, 'GkAgentProvider.ensureIpcServer');\n\t\t}\n\t}\n\n\tprivate handleSessionEvent(event: AgentSessionEvent, isBlocking: boolean): Promise<PermissionResponse | void> {\n\t\t// The CLI broadcasts every AI host's events to every listener, stamped with its `gk ai hook`\n\t\t// client id. Absent = `claude-code`: older CLIs don't stamp it, and no other client existed\n\t\t// then. A client we hold no descriptor for is dropped — the CLI supports more than this table\n\t\t// does, and we can't interpret an agent whose vocabulary we don't know. A dropped blocking\n\t\t// request gets no decision, so the CLI waits out its own hook timeout, which is correct: we\n\t\t// must not answer for an agent we don't track.\n\t\tconst hookClientId = event.providerId ?? 'claude-code';\n\t\tconst capabilities = getAgentCapabilities(hookClientId);\n\t\tif (capabilities == null) {\n\t\t\tLogger.debug(`GkAgentProvider.handleSessionEvent: ignoring ${event.event} from ${hookClientId}`);\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\t// The CLI relays each agent's native event name verbatim, so translate before doing anything\n\t\t// else. An unresolvable name must never reach the switch below: it would match no case while\n\t\t// still having created/updated a row, and for a blocking delivery would answer nothing while\n\t\t// looking handled.\n\t\tconst hookEvent = resolveCanonicalHookEvent(capabilities, event.event, event.hookInput);\n\t\tif (hookEvent == null) {\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.handleSessionEvent: ignoring unmapped event ${event.event} from ${hookClientId}`,\n\t\t\t);\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst toolName = canonicalToolNameFromEvent(capabilities, event);\n\t\tconst workspacePath = this.resolveWorkspacePath(event.cwd);\n\t\tconst eventContext: SessionContext = {\n\t\t\tcapabilities: capabilities,\n\t\t\tpid: event.pid,\n\t\t\tworkspacePath: workspacePath,\n\t\t\tisInWorkspace: workspacePath != null,\n\t\t\tcwd: event.cwd,\n\t\t\tinitialCwd: event.initialCwd,\n\t\t\tplanFile: event.planFile,\n\t\t\tsessionName: event.sessionName,\n\t\t\tmodel: event.model,\n\t\t\tworktreePath: worktreeFromEvent(event),\n\t\t\tvisitedWorktreePaths: visitedFromTimeline(event.cwdTimeline),\n\t\t};\n\t\tconst tag = this.sessionTag(event.sessionId, event.sessionName ?? 'unnamed');\n\t\t// Log the native name alongside the canonical one — a mapping mistake is otherwise invisible.\n\t\tconst eventTag = event.event === hookEvent ? hookEvent : `${hookEvent}(${event.event})`;\n\n\t\tif (hookEvent === 'SessionStart' || hookEvent === 'SessionEnd') {\n\t\t\tLogger.info(`GkAgentProvider.handleSessionEvent: ${eventTag} ${tag}`);\n\t\t} else {\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.handleSessionEvent: ${eventTag} ${tag}${toolName ? ` tool=${toolName}` : ''}${event.agentId ? ` agent=${event.agentId}` : ''}${event.notificationType ? ` type=${event.notificationType}` : ''}`,\n\t\t\t);\n\t\t}\n\n\t\tswitch (hookEvent) {\n\t\t\tcase 'SessionStart': {\n\t\t\t\tconst wasNew = this._sessions.findIndex(s => s.id === event.sessionId) < 0;\n\t\t\t\tconst { index } = this.ensureSession(event.sessionId, eventContext);\n\n\t\t\t\tif (wasNew) {\n\t\t\t\t\t// ensureSession created the session at 'idle' already. Just refresh pid if\n\t\t\t\t\t// the event carries one — bookkeeping was implicitly clean.\n\t\t\t\t\tthis.resetBookkeeping(event.sessionId);\n\t\t\t\t\tif (event.pid != null) {\n\t\t\t\t\t\tconst prev = this._sessions[index];\n\t\t\t\t\t\tif (prev.pid !== event.pid) {\n\t\t\t\t\t\t\tthis._sessions[index] = { ...prev, pid: event.pid };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst prev = this._sessions[index];\n\t\t\t\t\tif (prev.status === 'ended') {\n\t\t\t\t\t\t// Resuming a terminal session reuses its id, so a SessionStart on an ended\n\t\t\t\t\t\t// row IS the resume signal — revive it to a live `idle` row (clearing the\n\t\t\t\t\t\t// ended/archivable state) with clean bookkeeping that endSession tore\n\t\t\t\t\t\t// down. The next real event advances it out of idle. A `SessionStart` arrives on\n\t\t\t\t\t\t// THIS window's hook flow, so the resume is locally owned now: take the resume's\n\t\t\t\t\t\t// pid (never the old terminal/reused one — retaining it would let dispatch focus a\n\t\t\t\t\t\t// stale or unrelated process).\n\t\t\t\t\t\tthis._sessions[index] = {\n\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\tstatus: 'idle',\n\t\t\t\t\t\t\tphase: 'idle',\n\t\t\t\t\t\t\tphaseSince: new Date(),\n\t\t\t\t\t\t\tlastActivity: new Date(),\n\t\t\t\t\t\t\tpid: event.pid,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.resetBookkeeping(event.sessionId);\n\t\t\t\t\t} else if (event.pid != null && event.pid !== prev.pid) {\n\t\t\t\t\t\t// SessionStart for a live session we already track is almost always a CLI\n\t\t\t\t\t\t// replay (resume/reconnect/hook re-init). Don't clobber live state — the next\n\t\t\t\t\t\t// real event re-establishes status. Refresh pid only.\n\t\t\t\t\t\tthis._sessions[index] = { ...prev, pid: event.pid, lastActivity: new Date() };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\tvoid this.resolveTranscriptTitles(event.sessionId, event.cwd);\n\t\t\t\tthis.callbacks.onSessionStarted?.(capabilities.providerId);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'SessionEnd': {\n\t\t\t\tconst pending = this._pendingPermissions.get(event.sessionId);\n\t\t\t\tif (pending != null) {\n\t\t\t\t\tthis.rejectAllPending(pending, new Error('Session ended'));\n\t\t\t\t\tthis._pendingPermissions.delete(event.sessionId);\n\t\t\t\t}\n\t\t\t\tthis.cancelPendingIdleTransition(event.sessionId);\n\n\t\t\t\tconst index = this._sessions.findIndex(s => s.id === event.sessionId);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tif (this._statusFilterSupported) {\n\t\t\t\t\t\t// Transition to a terminal `ended` row rather than removing it — ended\n\t\t\t\t\t\t// sessions stay visible (de-emphasized) until archived or 30-day-purged by the CLI.\n\t\t\t\t\t\tthis.endSession(index, new Date());\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Legacy CLI (no `--status` durable store): an ended row could never be\n\t\t\t\t\t\t// poll-confirmed nor archived, so keep the pre-ended remove-on-end behavior.\n\t\t\t\t\t\tthis._sessions.splice(index, 1);\n\t\t\t\t\t\tconst bk = this._sessionBookkeeping.get(event.sessionId);\n\t\t\t\t\t\tif (bk != null) {\n\t\t\t\t\t\t\tthis.cancelPendingFileClears(bk);\n\t\t\t\t\t\t\tthis.cancelPendingReadClears(bk);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._sessionBookkeeping.delete(event.sessionId);\n\t\t\t\t\t\tthis._transcriptReader.forget(event.sessionId);\n\t\t\t\t\t\tthis.noteTerminalTransition();\n\t\t\t\t\t}\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t} else {\n\t\t\t\t\t// SessionEnd for a session we no longer track (already pruned/removed, or a duplicate\n\t\t\t\t\t// end): still clear any bookkeeping timers + transcript cache the row left behind, so\n\t\t\t\t\t// they don't leak. The tracked branches above already tear this down themselves.\n\t\t\t\t\tconst bk = this._sessionBookkeeping.get(event.sessionId);\n\t\t\t\t\tif (bk != null) {\n\t\t\t\t\t\tthis.cancelPendingFileClears(bk);\n\t\t\t\t\t\tthis.cancelPendingReadClears(bk);\n\t\t\t\t\t}\n\t\t\t\t\tthis._sessionBookkeeping.delete(event.sessionId);\n\t\t\t\t\tthis._transcriptReader.forget(event.sessionId);\n\t\t\t\t\t// Untracked or not, a session just reached a terminal state and finalized its\n\t\t\t\t\t// transcript — an in-flight history query must not accept an answer that predates it.\n\t\t\t\t\tthis.noteTerminalTransition();\n\t\t\t\t}\n\t\t\t\tthis.callbacks.onSessionEnded?.(capabilities.providerId);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'UserPromptSubmit': {\n\t\t\t\tconst { index, changed } = this.ensureSession(event.sessionId, eventContext);\n\t\t\t\t// Seated metadata (location, model, name) has to reach subscribers even when the prompt\n\t\t\t\t// turns out to be synthetic and the status update below never runs.\n\t\t\t\tif (changed) {\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\n\t\t\t\tconst cleaned = prepareStoredPrompt(event.prompt);\n\t\t\t\t// A `UserPromptSubmit` whose payload sanitizes to nothing is harness-synthetic\n\t\t\t\t// (e.g. background-bash <task-notification>, slash-command stdout echo). Treat it\n\t\t\t\t// as informational so it doesn't flip the session to `thinking` or wipe a pending\n\t\t\t\t// permission when no real user activity occurred.\n\t\t\t\tif (!cleaned) break;\n\n\t\t\t\tconst existing = this._sessions[index];\n\t\t\t\tthis._sessions[index] = {\n\t\t\t\t\t...existing,\n\t\t\t\t\tlastPrompt: cleaned,\n\t\t\t\t\tfirstPrompt: existing.firstPrompt ?? prepareStoredPrompt(event.firstPrompt),\n\t\t\t\t};\n\t\t\t\tthis.clearStalePermission(event.sessionId, 'UserPromptSubmit');\n\t\t\t\tthis.updateSessionStatus(event.sessionId, 'thinking', eventContext);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'PreToolUse': {\n\t\t\t\tconst bk = this.getBookkeeping(event.sessionId);\n\t\t\t\tbk.activeToolCount++;\n\t\t\t\tconst filesChanged = this.trackToolUseFile(event.sessionId, event, capabilities);\n\t\t\t\tconst readsChanged = this.trackToolUseRead(event.sessionId, event, capabilities);\n\t\t\t\t// Resolve a rich `Bash(grep …)`-style detail via the same tool_input passthrough the\n\t\t\t\t// PermissionRequest handler uses, so working sessions surface what their tool is\n\t\t\t\t// actually doing — not just the bare tool name. Falls back to bare name when no\n\t\t\t\t// toolInput is available (older CLI / unhandled tool).\n\t\t\t\tconst toolInput =\n\t\t\t\t\t(event.hookInput?.tool_input as Record<string, unknown> | undefined) ?? event.toolInput;\n\t\t\t\tconst statusDetail =\n\t\t\t\t\ttoolInput != null && toolName ? describeToolInput(toolName, toolInput) : toolName || undefined;\n\t\t\t\t// Capture pre-update status so we can tell whether the upcoming updateSessionStatus\n\t\t\t\t// will fire on its own — needed to avoid dropping fileActivity changes when the\n\t\t\t\t// session is already in tool_use (back-to-back tool calls).\n\t\t\t\tconst sessionIndex = this._sessions.findIndex(s => s.id === event.sessionId);\n\t\t\t\tconst prevStatus = sessionIndex >= 0 ? this._sessions[sessionIndex].status : undefined;\n\t\t\t\tconst prevDetail = sessionIndex >= 0 ? this._sessions[sessionIndex].statusDetail : undefined;\n\t\t\t\tconst statusWillFire = prevStatus !== 'tool_use' || prevDetail !== statusDetail;\n\t\t\t\tthis.updateSessionStatus(event.sessionId, 'tool_use', {\n\t\t\t\t\t...eventContext,\n\t\t\t\t\tstatusDetail: statusDetail,\n\t\t\t\t});\n\t\t\t\tif ((filesChanged || readsChanged) && !statusWillFire) {\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'PostToolUse':\n\t\t\tcase 'PostToolUseFailure': {\n\t\t\t\tthis.clearStalePermission(event.sessionId, hookEvent, this.settledByFromEvent(event, capabilities));\n\t\t\t\tconst bk = this.getBookkeeping(event.sessionId);\n\t\t\t\tbk.activeToolCount = Math.max(0, bk.activeToolCount - 1);\n\t\t\t\t// Cooldown the file-edit decoration instead of dropping it immediately, so a quick\n\t\t\t\t// follow-up Edit/Write to the same path doesn't blink. The deferred clear fires its\n\t\t\t\t// own change event when it expires. The immediate re-sync inside each flips\n\t\t\t\t// `editing`/`reading` off the moment refcount hits zero, though — capture whether that\n\t\t\t\t// changed the published list so we fire it ourselves when the status update below short-\n\t\t\t\t// circuits (a parallel tool is still in flight, so activeToolCount stays > 0).\n\t\t\t\tconst filesChanged = this.scheduleClearToolUseFile(event.sessionId, event, capabilities);\n\t\t\t\tconst readsChanged = this.scheduleClearToolUseRead(event.sessionId, event, capabilities);\n\t\t\t\tif (bk.activeToolCount === 0) {\n\t\t\t\t\t// updateSessionStatus short-circuits without firing when status+detail are unchanged\n\t\t\t\t\t// (already 'thinking' with no detail) — which would drop the editing/reading flag-flip\n\t\t\t\t\t// above and leave a stale live pulse. Capture whether it will fire on its own and, if\n\t\t\t\t\t// not, fire explicitly — mirrors the PreToolUse / PermissionDenied guards.\n\t\t\t\t\tconst idx = this._sessions.findIndex(s => s.id === event.sessionId);\n\t\t\t\t\tconst statusWillFire =\n\t\t\t\t\t\tidx < 0 ||\n\t\t\t\t\t\tthis._sessions[idx].status !== 'thinking' ||\n\t\t\t\t\t\tthis._sessions[idx].statusDetail != null;\n\t\t\t\t\tthis.updateSessionStatus(event.sessionId, 'thinking', eventContext);\n\t\t\t\t\tif ((filesChanged || readsChanged) && !statusWillFire) {\n\t\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t\t}\n\t\t\t\t} else if (filesChanged || readsChanged) {\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'Stop':\n\t\t\tcase 'StopFailure': {\n\t\t\t\tconst pending = this._pendingPermissions.get(event.sessionId);\n\t\t\t\tif (pending != null) {\n\t\t\t\t\tthis.rejectAllPending(pending, new Error('Session stopped'));\n\t\t\t\t\tthis._pendingPermissions.delete(event.sessionId);\n\t\t\t\t}\n\t\t\t\t// Turn ended: stop the \"live\" pulse but keep the per-operation decay tail fading over\n\t\t\t\t// the configured window (anchored at each tool's completion, not at the turn end). A full\n\t\t\t\t// reset here would wipe the tail the instant the agent finishes a response.\n\t\t\t\tthis.settleBookkeeping(event.sessionId);\n\t\t\t\t// Apply Stop's metadata synchronously so we don't carry stale context through the\n\t\t\t\t// debounce window — any in-window mutations (e.g. CwdChanged) survive when the\n\t\t\t\t// timer fires. ensureSession doesn't fire on metadata-only updates of existing\n\t\t\t\t// sessions, so fire here to match the original Stop-handler's UI-update semantics.\n\t\t\t\tconst { changed } = this.ensureSession(event.sessionId, eventContext);\n\t\t\t\tif (changed) {\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\t\t\t\t// Defer the status change — if the agent continues within the debounce window\n\t\t\t\t// (hook-driven re-prompt, IPC reordering, auto-resume), the next non-idle event\n\t\t\t\t// cancels this and we never flick through idle.\n\t\t\t\tthis.scheduleIdleTransition(event.sessionId);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'PreCompact':\n\t\t\t\tthis.updateSessionStatus(event.sessionId, 'compacting', eventContext);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PostCompact':\n\t\t\t\tthis.updateSessionStatus(event.sessionId, 'thinking', eventContext);\n\t\t\t\tbreak;\n\n\t\t\tcase 'Notification':\n\t\t\t\tswitch (event.notificationType) {\n\t\t\t\t\tcase 'idle_prompt':\n\t\t\t\t\t\t// No-op — session is already idle from the preceding stop/session-start event\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'permission_prompt':\n\t\t\t\t\t\tthis.updateSessionStatus(event.sessionId, 'permission_requested', {\n\t\t\t\t\t\t\t...eventContext,\n\t\t\t\t\t\t\tstatusDetail: toolName,\n\t\t\t\t\t\t\tpendingPermission: synthesizeUnresolvableAsk(\n\t\t\t\t\t\t\t\ttoolName,\n\t\t\t\t\t\t\t\t// Plan-kind body: prefer the session's planFile, fall back to the event's\n\t\t\t\t\t\t\t\t// — mirrors the blocking path.\n\t\t\t\t\t\t\t\tthis._sessions.find(s => s.id === event.sessionId)?.planFile ?? event.planFile,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'elicitation_dialog':\n\t\t\t\t\t\t// An MCP elicitation, not a tool permission — `toolName` names the elicitation, so\n\t\t\t\t\t\t// classifying it as a tool ask would mislabel the card. Same shape the `Elicitation`\n\t\t\t\t\t\t// hook produces.\n\t\t\t\t\t\tthis.updateSessionStatus(event.sessionId, 'permission_requested', {\n\t\t\t\t\t\t\t...eventContext,\n\t\t\t\t\t\t\tstatusDetail: toolName,\n\t\t\t\t\t\t\tpendingPermission: {\n\t\t\t\t\t\t\t\tkind: 'elicitation',\n\t\t\t\t\t\t\t\ttoolName: toolName ?? inputRequiredLabel,\n\t\t\t\t\t\t\t\ttoolDescription: toolName ?? waitingForInputLabel,\n\t\t\t\t\t\t\t\tresolvable: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// auth_success, unknown, or missing: no status change, just update timestamp\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PermissionRequest': {\n\t\t\t\t// hookInput is the raw passthrough; fall back to top-level fields for older CLI versions.\n\t\t\t\tconst hookInput = event.hookInput;\n\t\t\t\tconst toolInput = (hookInput?.tool_input as Record<string, unknown> | undefined) ?? event.toolInput;\n\t\t\t\t// An agent whose asks we can't answer falls through to the observe-only branch below,\n\t\t\t\t// which publishes the same card marked `resolvable: false`. Registering a pending entry\n\t\t\t\t// for it would promise an Allow/Deny this window can never route.\n\t\t\t\tif (canAnswerBlockingPermission(capabilities) && isBlocking && toolInput != null) {\n\t\t\t\t\tconst askToolName = toolName ?? '';\n\t\t\t\t\tconst toolDescription = describeToolInput(askToolName, toolInput);\n\t\t\t\t\tconst toolInputDescription = (toolInput.description as string | undefined) || undefined;\n\t\t\t\t\tconst kind: PendingPermissionKind = classifyPermissionKind(askToolName);\n\t\t\t\t\tconst toolUseId = hookInput?.tool_use_id as string | undefined;\n\t\t\t\t\tconst toolInputJson = stableStringify(toolInput);\n\n\t\t\t\t\treturn new Promise<PermissionResponse>((resolve, reject) => {\n\t\t\t\t\t\tconst existing = this._pendingPermissions.get(event.sessionId);\n\t\t\t\t\t\t// Same identity as `settledByFromEvent`'s comparisons: `toolUseId` when both sides\n\t\t\t\t\t\t// have one, else toolName + canonical input.\n\t\t\t\t\t\tconst isDuplicateDelivery =\n\t\t\t\t\t\t\texisting != null &&\n\t\t\t\t\t\t\t((existing.toolUseId != null && toolUseId != null && existing.toolUseId === toolUseId) ||\n\t\t\t\t\t\t\t\t(existing.toolUseId == null &&\n\t\t\t\t\t\t\t\t\ttoolUseId == null &&\n\t\t\t\t\t\t\t\t\texisting.toolName === askToolName &&\n\t\t\t\t\t\t\t\t\texisting.toolInputJson === toolInputJson));\n\n\t\t\t\t\t\tif (isDuplicateDelivery) {\n\t\t\t\t\t\t\t// Duplicate delivery of the same ask (CLI retry after its 60s response-header\n\t\t\t\t\t\t\t// timeout) — attach instead of replacing so both connections settle together.\n\t\t\t\t\t\t\t// Nothing about the display changes, so skip rebuilding it below. Accepted\n\t\t\t\t\t\t\t// residual: two independent, identical, concurrent asks are byte-for-byte\n\t\t\t\t\t\t\t// indistinguishable on the wire and coalesce the same way, receiving one\n\t\t\t\t\t\t\t// decision — evicting instead would falsely deny a live ask.\n\t\t\t\t\t\t\texisting.resolvers.push({ resolve: resolve, reject: reject });\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (existing != null) {\n\t\t\t\t\t\t\tLogger.debug(\n\t\t\t\t\t\t\t\t`GkAgentProvider.handleSessionEvent: auto-denying stale permission ${tag} tool=${existing.toolName}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis.resolveAllPending(existing, {\n\t\t\t\t\t\t\t\thookSpecificOutput: {\n\t\t\t\t\t\t\t\t\thookEventName: 'PermissionRequest',\n\t\t\t\t\t\t\t\t\tdecision: { behavior: 'deny' },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._pendingPermissions.set(event.sessionId, {\n\t\t\t\t\t\t\tresolvers: [{ resolve: resolve, reject: reject }],\n\t\t\t\t\t\t\ttoolName: askToolName,\n\t\t\t\t\t\t\ttoolDescription: toolDescription,\n\t\t\t\t\t\t\ttoolUseId: toolUseId,\n\t\t\t\t\t\t\ttoolInputJson: toolInputJson,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Plan-kind body: prefer the existing session's planFile (set via SessionStart/\n\t\t\t\t\t\t// PostToolUse) and fall back to the event's planFile for cold-start cases.\n\t\t\t\t\t\tconst planFilePath =\n\t\t\t\t\t\t\tkind === 'plan'\n\t\t\t\t\t\t\t\t? (this._sessions.find(s => s.id === event.sessionId)?.planFile ?? event.planFile)\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tconst planSummary = kind === 'plan' ? extractPlanSummary(toolInput) : undefined;\n\t\t\t\t\t\tconst questionDetails = kind === 'question' ? extractQuestionDetails(toolInput) : undefined;\n\n\t\t\t\t\t\tconst permission: PendingPermission = {\n\t\t\t\t\t\t\tkind: kind,\n\t\t\t\t\t\t\ttoolName: askToolName,\n\t\t\t\t\t\t\ttoolDescription: toolDescription,\n\t\t\t\t\t\t\ttoolInputDescription: toolInputDescription,\n\t\t\t\t\t\t\tsuggestions:\n\t\t\t\t\t\t\t\t(hookInput?.permission_suggestions as PermissionSuggestion[] | undefined) ??\n\t\t\t\t\t\t\t\tevent.permissionSuggestions,\n\t\t\t\t\t\t\tplanFilePath: planFilePath,\n\t\t\t\t\t\t\tplanSummary: planSummary,\n\t\t\t\t\t\t\tquestionText: questionDetails?.text,\n\t\t\t\t\t\t\tquestionCount: questionDetails?.count,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.updateSessionWithPermission(event.sessionId, permission, eventContext);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\t// Mirror the blocking payload's shape so the ask renders identically either way —\n\t\t\t\t\t// just unresolvable, since no blocking hook entry exists to route an answer through.\n\t\t\t\t\tconst kind = toolName != null ? classifyPermissionKind(toolName) : undefined;\n\t\t\t\t\t// Plan-kind body: same session-first preference as the blocking path.\n\t\t\t\t\tconst planFilePath =\n\t\t\t\t\t\tkind === 'plan'\n\t\t\t\t\t\t\t? (this._sessions.find(s => s.id === event.sessionId)?.planFile ?? event.planFile)\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t// Same body extraction as the blocking path — surfaces render `questionText`/\n\t\t\t\t\t// `planSummary` in place of the tool description, so omitting them would show a\n\t\t\t\t\t// generic \"awaiting\" card for a question the input actually carries.\n\t\t\t\t\tconst questionDetails =\n\t\t\t\t\t\tkind === 'question' && toolInput != null ? extractQuestionDetails(toolInput) : undefined;\n\t\t\t\t\tconst synthesized: PendingPermission =\n\t\t\t\t\t\tkind != null && toolName != null && toolInput != null\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tkind: kind,\n\t\t\t\t\t\t\t\t\ttoolName: toolName,\n\t\t\t\t\t\t\t\t\ttoolDescription: describeToolInput(toolName, toolInput),\n\t\t\t\t\t\t\t\t\ttoolInputDescription: (toolInput.description as string | undefined) || undefined,\n\t\t\t\t\t\t\t\t\tplanFilePath: planFilePath,\n\t\t\t\t\t\t\t\t\tplanSummary: kind === 'plan' ? extractPlanSummary(toolInput) : undefined,\n\t\t\t\t\t\t\t\t\tquestionText: questionDetails?.text,\n\t\t\t\t\t\t\t\t\tquestionCount: questionDetails?.count,\n\t\t\t\t\t\t\t\t\tresolvable: false,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: synthesizeUnresolvableAsk(toolName, planFilePath);\n\t\t\t\t\tthis.updateSessionStatus(event.sessionId, 'permission_requested', {\n\t\t\t\t\t\t...eventContext,\n\t\t\t\t\t\tstatusDetail: toolName,\n\t\t\t\t\t\tpendingPermission: synthesized,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'PermissionDenied': {\n\t\t\t\tthis.clearStalePermission(\n\t\t\t\t\tevent.sessionId,\n\t\t\t\t\t'PermissionDenied',\n\t\t\t\t\tthis.settledByFromEvent(event, capabilities),\n\t\t\t\t);\n\t\t\t\tconst bk = this.getBookkeeping(event.sessionId);\n\t\t\t\tbk.activeToolCount = Math.max(0, bk.activeToolCount - 1);\n\t\t\t\tconst filesChanged = this.untrackToolUseFile(event.sessionId, event, capabilities);\n\t\t\t\tconst readsChanged = this.untrackToolUseRead(event.sessionId, event, capabilities);\n\t\t\t\t// When a parallel tool is still active the next status equals the current one and\n\t\t\t\t// updateSessionStatus short-circuits — without an explicit fire, the dropped path\n\t\t\t\t// would never reach subscribers (treemap activity overlay, WIP decoration).\n\t\t\t\tconst nextStatus = bk.activeToolCount > 0 ? 'tool_use' : 'thinking';\n\t\t\t\tconst sessionIndex = this._sessions.findIndex(s => s.id === event.sessionId);\n\t\t\t\tconst prevStatus = sessionIndex >= 0 ? this._sessions[sessionIndex].status : undefined;\n\t\t\t\tconst statusWillFire = prevStatus !== nextStatus;\n\t\t\t\tthis.updateSessionStatus(event.sessionId, nextStatus, eventContext);\n\t\t\t\tif ((filesChanged || readsChanged) && !statusWillFire) {\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'Elicitation': {\n\t\t\t\tconst bk = this.getBookkeeping(event.sessionId);\n\t\t\t\tbk.pendingPermission = {\n\t\t\t\t\tkind: 'elicitation',\n\t\t\t\t\ttoolName: toolName ?? inputRequiredLabel,\n\t\t\t\t\ttoolDescription: toolName ?? waitingForInputLabel,\n\t\t\t\t\t// `Elicitation` arrives on a non-blocking hook, so no entry exists for\n\t\t\t\t\t// `resolvePermission` to answer — the user responds in the agent's own session.\n\t\t\t\t\tresolvable: false,\n\t\t\t\t};\n\t\t\t\tthis.updateSessionStatus(event.sessionId, 'permission_requested', {\n\t\t\t\t\t...eventContext,\n\t\t\t\t\tstatusDetail: toolName,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'ElicitationResult': {\n\t\t\t\tconst bk = this.getBookkeeping(event.sessionId);\n\t\t\t\tbk.pendingPermission = undefined;\n\t\t\t\tthis.updateSessionStatus(\n\t\t\t\t\tevent.sessionId,\n\t\t\t\t\tbk.activeToolCount > 0 ? 'tool_use' : 'thinking',\n\t\t\t\t\teventContext,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'CwdChanged':\n\t\t\t\tif (event.cwd) {\n\t\t\t\t\t// Route through `ensureSession`: it owns the whole location transition — timeline\n\t\t\t\t\t// seat (or handing attribution back to the probe when the CLI didn't explain the\n\t\t\t\t\t// move), workspacePath/isInWorkspace recompute, the unresolvable-flag clear, and\n\t\t\t\t\t// the probe gating. Writing `cwd` directly here left `cliSeatedWorktree` set, so\n\t\t\t\t\t// the probe's answer for the new cwd could never replace the stale seated one.\n\t\t\t\t\tconst { changed } = this.ensureSession(event.sessionId, eventContext);\n\t\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'SubagentStart': {\n\t\t\t\tconst { index: parentIdx } = this.ensureSession(event.sessionId, eventContext);\n\t\t\t\tconst parent = this._sessions[parentIdx];\n\t\t\t\tif (event.agentId) {\n\t\t\t\t\tconst now = new Date();\n\t\t\t\t\tconst subagent: AgentSession = {\n\t\t\t\t\t\tid: event.agentId,\n\t\t\t\t\t\tproviderId: capabilities.providerId,\n\t\t\t\t\t\tproviderName: capabilities.displayName,\n\t\t\t\t\t\tname: event.agentType ?? subagentLabel,\n\t\t\t\t\t\tstatus: 'thinking',\n\t\t\t\t\t\tphase: 'working',\n\t\t\t\t\t\tphaseSince: now,\n\t\t\t\t\t\tlastActivity: now,\n\t\t\t\t\t\tisSubagent: true,\n\t\t\t\t\t\tparentId: event.sessionId,\n\t\t\t\t\t\tisInWorkspace: workspacePath != null,\n\t\t\t\t\t};\n\t\t\t\t\tconst existingSubs = parent.subagents ? [...parent.subagents] : [];\n\t\t\t\t\texistingSubs.push(subagent);\n\t\t\t\t\tthis._sessions[parentIdx] = { ...parent, subagents: existingSubs };\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'SubagentStop': {\n\t\t\t\tconst { index: parentIdx } = this.ensureSession(event.sessionId, eventContext);\n\t\t\t\tconst parentSession = this._sessions[parentIdx];\n\t\t\t\tif (parentSession.subagents != null && event.agentId) {\n\t\t\t\t\tconst filtered = parentSession.subagents.filter(s => s.id !== event.agentId);\n\t\t\t\t\tif (filtered.length !== parentSession.subagents.length) {\n\t\t\t\t\t\tthis._sessions[parentIdx] = {\n\t\t\t\t\t\t\t...parentSession,\n\t\t\t\t\t\t\tsubagents: filtered.length > 0 ? filtered : undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'TeammateIdle':\n\t\t\tcase 'TaskCompleted':\n\t\t\tcase 'InstructionsLoaded':\n\t\t\tcase 'ConfigChange':\n\t\t\tcase 'WorktreeCreate':\n\t\t\tcase 'WorktreeRemove':\n\t\t\t\t// Not yet handled — intentional no-op.\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn Promise.resolve();\n\t}\n\n\tprivate sessionTag(sessionId: string, name?: string): string {\n\t\treturn name != null\n\t\t\t? `[session=${sessionId.substring(0, 8)}(${name})]`\n\t\t\t: `[session=${sessionId.substring(0, 8)}]`;\n\t}\n\n\t/** The owning agent's descriptor for a tracked session, resolved from the session's own\n\t * `providerId`. `undefined` when the session isn't tracked (pruned/archived since) or carries a\n\t * `providerId` the descriptor table doesn't know — callers pick their own fallback rather than\n\t * silently assuming Claude Code. */\n\tprivate getSessionCapabilities(sessionId: string): AgentCapabilities | undefined {\n\t\tconst session = this._sessions.find(s => s.id === sessionId);\n\t\treturn session != null ? getAgentCapabilitiesByProviderId(session.providerId) : undefined;\n\t}\n\n\t/** Whether the session's agent leaves a transcript on disk for {@link ClaudeCodeTranscriptReader}\n\t * to tail. Fails OPEN when no descriptor resolves, so an unknown/absent `providerId` can never\n\t * suppress the Claude path this reader exists for. */\n\tprivate supportsTranscripts(sessionId: string): boolean {\n\t\treturn this.getSessionCapabilities(sessionId)?.supportsTranscripts ?? true;\n\t}\n\n\tprivate getBookkeeping(sessionId: string): SessionBookkeeping {\n\t\tlet bk = this._sessionBookkeeping.get(sessionId);\n\t\tif (bk == null) {\n\t\t\tbk = {\n\t\t\t\tactiveToolCount: 0,\n\t\t\t\tcurrentFileCounts: new Map(),\n\t\t\t\tpendingFileClears: new Map(),\n\t\t\t\tcurrentReadCounts: new Map(),\n\t\t\t\tpendingReadClears: new Map(),\n\t\t\t\tlastTouchedAt: new Map(),\n\t\t\t\tgitInfoUnresolvable: false,\n\t\t\t};\n\t\t\tthis._sessionBookkeeping.set(sessionId, bk);\n\t\t}\n\t\treturn bk;\n\t}\n\n\t/** Returns the active decay window in milliseconds — the cooldown between PostToolUse and\n\t * dropping the path from the bookkeeping. Reads through the host callback every time so a\n\t * setting change takes effect on the next Pre/Post pair without re-wiring (existing timers\n\t * keep their original timeout — acceptable since they're short-lived relative to the setting). */\n\tprivate get activityDecayMs(): number {\n\t\treturn this.callbacks.getActivityDecayMs?.() ?? defaultActivityDecayMs;\n\t}\n\n\t/** Locates the *parent* session id that owns the given session id — returns the id itself when\n\t * it matches a top-level session, otherwise the `id` of the parent that holds it under\n\t * `subagents[]`. Returns `undefined` when neither match (session no longer exists). Used to\n\t * route per-session bookkeeping changes to the right top-level `syncSessionFileActivity` call.\n\t * Tool events are parent-keyed (the CLI sends a sub-agent's tool events under the parent id),\n\t * so the `subagents[]` branch is a defensive fallback for any other-keyed caller. */\n\tprivate findOwningParentId(sessionId: string): string | undefined {\n\t\tfor (const s of this._sessions) {\n\t\t\tif (s.id === sessionId) return s.id;\n\n\t\t\tif (s.subagents != null) {\n\t\t\t\tfor (const sub of s.subagents) {\n\t\t\t\t\tif (sub.id === sessionId) return s.id;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate resetBookkeeping(sessionId: string): void {\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tbk.activeToolCount = 0;\n\t\tbk.pendingPermission = undefined;\n\t\tthis.cancelPendingFileClears(bk);\n\t\tbk.currentFileCounts.clear();\n\t\tthis.cancelPendingReadClears(bk);\n\t\tbk.currentReadCounts.clear();\n\t\tbk.lastTouchedAt.clear();\n\t\tbk.gitInfoUnresolvable = false;\n\t\t// `cliSeatedWorktree` deliberately survives: SessionStart seats the worktree via\n\t\t// `ensureSession` BEFORE resetting bookkeeping, and an unexplained cwd move clears it anyway.\n\t\tconst parentId = this.findOwningParentId(sessionId);\n\t\tif (parentId != null) {\n\t\t\tthis.syncSessionFileActivity(parentId);\n\t\t}\n\t}\n\n\t/** Turn-end settle (Stop): the agent finished its turn, so nothing is \"live\" anymore — but\n\t * the per-operation decay tail must survive. Heat fades over {@link activityDecayMs} measured\n\t * from when each *tool* finished (the PostToolUse cooldown), NOT from when the turn ends, so a\n\t * Stop must not cancel those cooldowns or clear `lastTouchedAt`. We only reset turn-scoped\n\t * state and force-finish any path whose PostToolUse never arrived before Stop: drop its\n\t * refcount to 0 (flipping `editing`/`reading` off so the pulse stops) and schedule the same\n\t * decay eviction a normal completion would. Contrast {@link resetBookkeeping}, which hard-\n\t * wipes everything for SessionStart/SessionEnd (the agent is gone, not merely between turns). */\n\tprivate settleBookkeeping(sessionId: string): void {\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tbk.activeToolCount = 0;\n\t\tbk.pendingPermission = undefined;\n\t\t// Allow git re-resolution next turn (matches the prior reset-on-Stop intent).\n\t\tbk.gitInfoUnresolvable = false;\n\t\tfor (const [path, count] of bk.currentFileCounts) {\n\t\t\tif (count > 0) {\n\t\t\t\tbk.currentFileCounts.set(path, 0);\n\t\t\t\tthis.scheduleFileDecayEviction(bk, sessionId, path);\n\t\t\t}\n\t\t}\n\t\tfor (const [path, count] of bk.currentReadCounts) {\n\t\t\tif (count > 0) {\n\t\t\t\tbk.currentReadCounts.set(path, 0);\n\t\t\t\tthis.scheduleReadDecayEviction(bk, sessionId, path);\n\t\t\t}\n\t\t}\n\t\tconst parentId = this.findOwningParentId(sessionId);\n\t\tif (parentId != null && this.syncSessionFileActivity(parentId)) {\n\t\t\tthis._onDidChangeSessions.fire();\n\t\t}\n\t}\n\n\tprivate cancelPendingFileClears(bk: SessionBookkeeping): void {\n\t\tfor (const timer of bk.pendingFileClears.values()) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tbk.pendingFileClears.clear();\n\t}\n\n\tprivate cancelPendingReadClears(bk: SessionBookkeeping): void {\n\t\tfor (const timer of bk.pendingReadClears.values()) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tbk.pendingReadClears.clear();\n\t}\n\n\t/** Extracts the targeted file path from a PreToolUse/PostToolUse event. Tries the raw\n\t * `hookInput.tool_input` passthrough first, falls back to the projected `event.toolInput`\n\t * for older CLI versions that only fill the top-level fields. Treats an empty-object\n\t * `hookInput.tool_input` as missing — `??` would have kept it (truthy) and shadowed a\n\t * populated `event.toolInput`. */\n\tprivate getEventFilePath(event: AgentSessionEvent, capabilities: AgentCapabilities): string | undefined {\n\t\tconst toolName = canonicalToolNameFromEvent(capabilities, event);\n\t\tif (toolName == null) return undefined;\n\n\t\tconst rawHookInput = event.hookInput?.tool_input as Record<string, unknown> | undefined;\n\t\tconst hookInputPopulated = rawHookInput != null && Object.keys(rawHookInput).length > 0;\n\t\tconst toolInput = hookInputPopulated ? rawHookInput : event.toolInput;\n\t\treturn getToolFilePath(toolName, toolInput);\n\t}\n\n\t/** Stamps the per-path/per-kind `lastTouchedAt[kind]` to the current epoch ms. Stamped on every\n\t * PreToolUse for the matching kind so `serializeFileActivity` can emit `readAt`/`editedAt` as\n\t * a relative `now - timestamp` delta. */\n\tprivate stampLastTouched(bk: SessionBookkeeping, filePath: string, kind: 'read' | 'edit'): void {\n\t\tconst existing = bk.lastTouchedAt.get(filePath);\n\t\tconst next: { edit?: number; read?: number } = existing != null ? { ...existing } : {};\n\t\tnext[kind] = Date.now();\n\t\tbk.lastTouchedAt.set(filePath, next);\n\t}\n\n\t/** Drops the `lastTouchedAt[kind]` slot for `filePath`, and the whole entry when neither kind\n\t * remains. Mirrors the cooldown-timer eviction in `scheduleClear*` — once the path is gone\n\t * from the count map for that kind, its timestamp is no longer load-bearing. */\n\tprivate clearLastTouched(bk: SessionBookkeeping, filePath: string, kind: 'read' | 'edit'): void {\n\t\tconst existing = bk.lastTouchedAt.get(filePath);\n\t\tif (existing == null) return;\n\t\tif (existing[kind] == null) return;\n\n\t\tconst next: { edit?: number; read?: number } = { ...existing, [kind]: undefined };\n\t\tif (next.edit == null && next.read == null) {\n\t\t\tbk.lastTouchedAt.delete(filePath);\n\t\t} else {\n\t\t\tbk.lastTouchedAt.set(filePath, next);\n\t\t}\n\t}\n\n\t/** Records that a file-mutating tool call is in flight against `filePath` so consumers can\n\t * highlight the path. Refcounts per path — keyed by path (not `tool_use_id`, which the GK CLI\n\t * doesn't reliably surface) so parallel calls bump the count and Post/Pre order doesn't matter.\n\t * Returns whether the parent's published `fileActivity` actually changed so callers can fire\n\t * when the surrounding {@link updateSessionStatus} short-circuits. */\n\tprivate trackToolUseFile(sessionId: string, event: AgentSessionEvent, capabilities: AgentCapabilities): boolean {\n\t\tconst filePath = this.getEventFilePath(event, capabilities);\n\t\tif (filePath == null) return false;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\t// A fresh Pre during a pending Post-cooldown means the file is live again — cancel the\n\t\t// scheduled clear so the deferred drop doesn't run after the new tool already finished.\n\t\tconst pendingClear = bk.pendingFileClears.get(filePath);\n\t\tif (pendingClear != null) {\n\t\t\tclearTimeout(pendingClear);\n\t\t\tbk.pendingFileClears.delete(filePath);\n\t\t}\n\t\tbk.currentFileCounts.set(filePath, (bk.currentFileCounts.get(filePath) ?? 0) + 1);\n\t\tthis.stampLastTouched(bk, filePath, 'edit');\n\t\treturn this.syncSessionFileActivityForChild(sessionId);\n\t}\n\n\t/** Decrements the in-flight refcount for a finished tool call's file. While the count stays\n\t * above zero (overlapping parallel calls) the path remains marked. When the count drops to\n\t * zero, leaves the entry in place at count `0` and schedules a {@link activityDecayMs}\n\t * cooldown before actually dropping it — so a recently-edited file lingers as a decay tail\n\t * on the treemap. A Pre arriving during cooldown cancels the timer and bumps the count back\n\t * above zero. Returns whether the parent's published `fileActivity` changed (i.e. `editing`\n\t * flipped off) so the PostToolUse caller can fire when its `updateSessionStatus` short-\n\t * circuits (a parallel tool still in flight keeps activeToolCount > 0). */\n\tprivate scheduleClearToolUseFile(\n\t\tsessionId: string,\n\t\tevent: AgentSessionEvent,\n\t\tcapabilities: AgentCapabilities,\n\t): boolean {\n\t\tconst filePath = this.getEventFilePath(event, capabilities);\n\t\tif (filePath == null) return false;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst count = bk.currentFileCounts.get(filePath);\n\t\t// A duplicate / out-of-order Post during cooldown (count is already 0) would drive the\n\t\t// refcount negative and schedule a second timer — ignore those so the cooldown stays\n\t\t// authoritative until either its timer fires or a fresh Pre bumps the count back up.\n\t\tif (count == null || count <= 0) return false;\n\n\t\tconst next = count - 1;\n\t\tbk.currentFileCounts.set(filePath, next);\n\t\t// Re-sync so `editing` drops from `true` to `undefined` the moment refcount hits zero —\n\t\t// the cooldown only governs when the path itself leaves the snapshot, not when the\n\t\t// \"live\" boolean flips off.\n\t\tconst changed = this.syncSessionFileActivityForChild(sessionId);\n\t\tif (next > 0) return changed;\n\n\t\t// Refcount just hit zero — keep the path in `currentFileCounts` for the cooldown window,\n\t\t// then drop it.\n\t\tthis.scheduleFileDecayEviction(bk, sessionId, filePath);\n\t\treturn changed;\n\t}\n\n\t/** Schedules (replacing any prior timer) the {@link activityDecayMs} cooldown that finally\n\t * drops `filePath` from the edit bookkeeping once it has fully decayed. Shared by the\n\t * PostToolUse cooldown path and the Stop settle ({@link settleBookkeeping}); the path stays\n\t * in `currentFileCounts` at count 0 meanwhile so its `editedAt` keeps aging on the client. */\n\tprivate scheduleFileDecayEviction(bk: SessionBookkeeping, sessionId: string, filePath: string): void {\n\t\tconst existing = bk.pendingFileClears.get(filePath);\n\t\tif (existing != null) {\n\t\t\tclearTimeout(existing);\n\t\t}\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tif (this._disposed) return;\n\n\t\t\tconst cur = this._sessionBookkeeping.get(sessionId);\n\t\t\tif (cur == null) return;\n\n\t\t\tcur.pendingFileClears.delete(filePath);\n\t\t\t// Re-check: a Pre during cooldown bumped the count and cancelled this timer, but a\n\t\t\t// concurrent reset could have cleared everything — bail in either case.\n\t\t\tif ((cur.currentFileCounts.get(filePath) ?? 0) > 0) return;\n\n\t\t\tcur.currentFileCounts.delete(filePath);\n\t\t\tthis.clearLastTouched(cur, filePath, 'edit');\n\t\t\tif (this.syncSessionFileActivityForChild(sessionId)) {\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t}\n\t\t}, this.activityDecayMs);\n\t\tbk.pendingFileClears.set(filePath, timer);\n\t}\n\n\t/** Drops a tracked tool call's file immediately (no cooldown). Used for PermissionDenied,\n\t * where the tool never ran — keeping the \"live\" badge would be misleading.\n\t * Returns whether the published list changed. */\n\tprivate untrackToolUseFile(sessionId: string, event: AgentSessionEvent, capabilities: AgentCapabilities): boolean {\n\t\tconst filePath = this.getEventFilePath(event, capabilities);\n\t\tif (filePath == null) return false;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst count = bk.currentFileCounts.get(filePath);\n\t\tif (count == null) return false;\n\t\tif (count > 1) {\n\t\t\tbk.currentFileCounts.set(filePath, count - 1);\n\t\t\treturn this.syncSessionFileActivityForChild(sessionId);\n\t\t}\n\n\t\tconst pending = bk.pendingFileClears.get(filePath);\n\t\tif (pending != null) {\n\t\t\tclearTimeout(pending);\n\t\t\tbk.pendingFileClears.delete(filePath);\n\t\t}\n\t\tbk.currentFileCounts.delete(filePath);\n\t\tthis.clearLastTouched(bk, filePath, 'edit');\n\t\treturn this.syncSessionFileActivityForChild(sessionId);\n\t}\n\n\t/** Mirror of {@link getEventFilePath} for read-only file tools. */\n\tprivate getEventReadPath(event: AgentSessionEvent, capabilities: AgentCapabilities): string | undefined {\n\t\tconst toolName = canonicalToolNameFromEvent(capabilities, event);\n\t\tif (toolName == null) return undefined;\n\n\t\tconst rawHookInput = event.hookInput?.tool_input as Record<string, unknown> | undefined;\n\t\tconst hookInputPopulated = rawHookInput != null && Object.keys(rawHookInput).length > 0;\n\t\tconst toolInput = hookInputPopulated ? rawHookInput : event.toolInput;\n\t\treturn getToolReadPath(toolName, toolInput);\n\t}\n\n\t/** Refcount mirror of {@link trackToolUseFile} for read-only file tools. */\n\tprivate trackToolUseRead(sessionId: string, event: AgentSessionEvent, capabilities: AgentCapabilities): boolean {\n\t\tconst filePath = this.getEventReadPath(event, capabilities);\n\t\tif (filePath == null) return false;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst pendingClear = bk.pendingReadClears.get(filePath);\n\t\tif (pendingClear != null) {\n\t\t\tclearTimeout(pendingClear);\n\t\t\tbk.pendingReadClears.delete(filePath);\n\t\t}\n\t\tbk.currentReadCounts.set(filePath, (bk.currentReadCounts.get(filePath) ?? 0) + 1);\n\t\tthis.stampLastTouched(bk, filePath, 'read');\n\t\treturn this.syncSessionFileActivityForChild(sessionId);\n\t}\n\n\t/** Cooldown mirror of {@link scheduleClearToolUseFile} for read-only file tools. Returns\n\t * whether the parent's published `fileActivity` changed (i.e. `reading` flipped off). */\n\tprivate scheduleClearToolUseRead(\n\t\tsessionId: string,\n\t\tevent: AgentSessionEvent,\n\t\tcapabilities: AgentCapabilities,\n\t): boolean {\n\t\tconst filePath = this.getEventReadPath(event, capabilities);\n\t\tif (filePath == null) return false;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst count = bk.currentReadCounts.get(filePath);\n\t\t// Same guard as scheduleClearToolUseFile — duplicate / out-of-order Posts during cooldown\n\t\t// would otherwise drive the refcount negative and stack up redundant clear timers.\n\t\tif (count == null || count <= 0) return false;\n\n\t\tconst next = count - 1;\n\t\tbk.currentReadCounts.set(filePath, next);\n\t\t// Re-sync so `reading` drops to `undefined` the moment refcount hits zero.\n\t\tconst changed = this.syncSessionFileActivityForChild(sessionId);\n\t\tif (next > 0) return changed;\n\n\t\tthis.scheduleReadDecayEviction(bk, sessionId, filePath);\n\t\treturn changed;\n\t}\n\n\t/** Read-class mirror of {@link scheduleFileDecayEviction}. */\n\tprivate scheduleReadDecayEviction(bk: SessionBookkeeping, sessionId: string, filePath: string): void {\n\t\tconst existing = bk.pendingReadClears.get(filePath);\n\t\tif (existing != null) {\n\t\t\tclearTimeout(existing);\n\t\t}\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tif (this._disposed) return;\n\n\t\t\tconst cur = this._sessionBookkeeping.get(sessionId);\n\t\t\tif (cur == null) return;\n\n\t\t\tcur.pendingReadClears.delete(filePath);\n\t\t\tif ((cur.currentReadCounts.get(filePath) ?? 0) > 0) return;\n\n\t\t\tcur.currentReadCounts.delete(filePath);\n\t\t\tthis.clearLastTouched(cur, filePath, 'read');\n\t\t\tif (this.syncSessionFileActivityForChild(sessionId)) {\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t}\n\t\t}, this.activityDecayMs);\n\t\tbk.pendingReadClears.set(filePath, timer);\n\t}\n\n\t/** Immediate-drop mirror of {@link untrackToolUseFile} for read-only file tools. */\n\tprivate untrackToolUseRead(sessionId: string, event: AgentSessionEvent, capabilities: AgentCapabilities): boolean {\n\t\tconst filePath = this.getEventReadPath(event, capabilities);\n\t\tif (filePath == null) return false;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst count = bk.currentReadCounts.get(filePath);\n\t\tif (count == null) return false;\n\t\tif (count > 1) {\n\t\t\tbk.currentReadCounts.set(filePath, count - 1);\n\t\t\treturn this.syncSessionFileActivityForChild(sessionId);\n\t\t}\n\n\t\tconst pending = bk.pendingReadClears.get(filePath);\n\t\tif (pending != null) {\n\t\t\tclearTimeout(pending);\n\t\t\tbk.pendingReadClears.delete(filePath);\n\t\t}\n\t\tbk.currentReadCounts.delete(filePath);\n\t\tthis.clearLastTouched(bk, filePath, 'read');\n\t\treturn this.syncSessionFileActivityForChild(sessionId);\n\t}\n\n\t/** Convenience wrapper that resolves the parent for a possibly-sub-agent session id, then calls\n\t * {@link syncSessionFileActivity}. Tool-call handlers call this without knowing whether the\n\t * session is a top-level or sub-agent session. Returns `false` when the session isn't found\n\t * (already pruned / unknown peer id). */\n\tprivate syncSessionFileActivityForChild(sessionId: string): boolean {\n\t\tconst parentId = this.findOwningParentId(sessionId);\n\t\tif (parentId == null) return false;\n\t\treturn this.syncSessionFileActivity(parentId);\n\t}\n\n\t/** Rebuilds the parent session's `fileActivity` array from its bookkeeping and writes it onto\n\t * the session in place. Returns whether the *structural* shape changed (paths/kinds/flags) —\n\t * timestamps are always refreshed regardless, but a fire is gated on structural change so\n\t * non-meaningful drift doesn't churn the wire.\n\t *\n\t * No separate sub-agent rollup is needed: the GK CLI keys a sub-agent's tool events under its\n\t * PARENT session id (with `agentId` set), so they accumulate in the parent's own bookkeeping\n\t * directly and are already reflected here. Sub-agent serialized objects carry no `fileActivity`. */\n\tprivate syncSessionFileActivity(parentSessionId: string): boolean {\n\t\tconst index = this._sessions.findIndex(s => s.id === parentSessionId);\n\t\tif (index < 0) return false;\n\n\t\tconst parent = this._sessions[index];\n\t\tif (parent.status === 'ended') return false;\n\n\t\tconst parentBk = this._sessionBookkeeping.get(parentSessionId);\n\n\t\ttype Contrib = { editCount: number; readCount: number; editAt?: number; readAt?: number };\n\t\tconst merged = new Map<string, Contrib>();\n\n\t\tconst contributeFrom = (bk: SessionBookkeeping | undefined): void => {\n\t\t\tif (bk == null) return;\n\n\t\t\tfor (const [path, count] of bk.currentFileCounts) {\n\t\t\t\tlet entry = merged.get(path);\n\t\t\t\tif (entry == null) {\n\t\t\t\t\tentry = { editCount: 0, readCount: 0 };\n\t\t\t\t\tmerged.set(path, entry);\n\t\t\t\t}\n\t\t\t\tentry.editCount += count;\n\t\t\t\tconst ts = bk.lastTouchedAt.get(path)?.edit;\n\t\t\t\tif (ts != null && (entry.editAt == null || ts > entry.editAt)) {\n\t\t\t\t\tentry.editAt = ts;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const [path, count] of bk.currentReadCounts) {\n\t\t\t\tlet entry = merged.get(path);\n\t\t\t\tif (entry == null) {\n\t\t\t\t\tentry = { editCount: 0, readCount: 0 };\n\t\t\t\t\tmerged.set(path, entry);\n\t\t\t\t}\n\t\t\t\tentry.readCount += count;\n\t\t\t\tconst ts = bk.lastTouchedAt.get(path)?.read;\n\t\t\t\tif (ts != null && (entry.readAt == null || ts > entry.readAt)) {\n\t\t\t\t\tentry.readAt = ts;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tcontributeFrom(parentBk);\n\n\t\tconst now = Date.now();\n\t\tlet next: FileActivityEntry[] | undefined;\n\t\tif (merged.size > 0) {\n\t\t\tnext = [];\n\t\t\tfor (const [path, contrib] of merged) {\n\t\t\t\tconst entry: FileActivityEntry = { path: path };\n\t\t\t\tif (contrib.editAt != null) {\n\t\t\t\t\tentry.editedAt = Math.max(0, now - contrib.editAt);\n\t\t\t\t}\n\t\t\t\tif (contrib.readAt != null) {\n\t\t\t\t\tentry.readAt = Math.max(0, now - contrib.readAt);\n\t\t\t\t}\n\t\t\t\tif (contrib.editCount > 0) {\n\t\t\t\t\tentry.editing = true;\n\t\t\t\t}\n\t\t\t\tif (contrib.readCount > 0) {\n\t\t\t\t\tentry.reading = true;\n\t\t\t\t}\n\t\t\t\tnext.push(entry);\n\t\t\t}\n\t\t}\n\n\t\tconst changed = !fileActivityStructurallyEqual(parent.fileActivity, next);\n\t\t// Always replace so timestamps reflect the latest serialization, even when the structural\n\t\t// shape is unchanged (so a downstream fire from anywhere else carries fresh `sinceMs`).\n\t\tthis._sessions[index] = { ...parent, fileActivity: next };\n\t\treturn changed;\n\t}\n\n\t/** Defer the `Stop → idle` commit. If the agent produces a non-idle event within\n\t * `stopToIdleDebounceMs`, `cancelPendingIdleTransition` (called from `updateSessionStatus`)\n\t * cancels this and the session stays in its prior phase — no working → idle → working flicker.\n\t *\n\t * Intentionally takes no context: the caller is expected to apply any event metadata\n\t * synchronously before scheduling. Carrying Stop-time context into the timer would let\n\t * in-window metadata mutations (e.g. `CwdChanged` updating `_sessions[i].cwd` directly)\n\t * get reverted when the deferred commit replays the stale context through `ensureSession`. */\n\tprivate scheduleIdleTransition(sessionId: string): void {\n\t\tthis.cancelPendingIdleTransition(sessionId);\n\t\tconst timer = setTimeout(() => {\n\t\t\tthis._pendingIdleTimers.delete(sessionId);\n\t\t\t// Session may have been removed (SessionEnd, prune) during the window, or ended by a\n\t\t\t// poll/SessionEnd that raced this timer — reviving a terminal row to idle would zombie it.\n\t\t\tconst idx = this._sessions.findIndex(s => s.id === sessionId);\n\t\t\tif (idx < 0 || this._sessions[idx].status === 'ended') return;\n\n\t\t\tthis.updateSessionStatus(sessionId, 'idle');\n\t\t}, stopToIdleDebounceMs);\n\t\tthis._pendingIdleTimers.set(sessionId, timer);\n\t}\n\n\tprivate cancelPendingIdleTransition(sessionId: string): void {\n\t\tconst timer = this._pendingIdleTimers.get(sessionId);\n\t\tif (timer == null) return;\n\n\t\tclearTimeout(timer);\n\t\tthis._pendingIdleTimers.delete(sessionId);\n\t}\n\n\t/** Stable phase-since: if we're oscillating back into the phase we were just in (within a\n\t * short window), restore its original timestamp so the displayed elapsed time doesn't snap\n\t * to 0. Otherwise records the current phase as the new \"prior\" and returns `now`. */\n\tprivate resolvePhaseSince(\n\t\tsessionId: string,\n\t\tprevPhase: AgentSessionPhase,\n\t\tprevPhaseSince: Date,\n\t\tnewPhase: AgentSessionPhase,\n\t): Date {\n\t\tif (prevPhase === newPhase) return prevPhaseSince;\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst now = new Date();\n\n\t\tif (bk.priorPhase?.phase === newPhase && now.getTime() - prevPhaseSince.getTime() < phaseSinceRestoreWindowMs) {\n\t\t\tconst restored = bk.priorPhase.phaseSince;\n\t\t\tbk.priorPhase = { phase: prevPhase, phaseSince: prevPhaseSince };\n\t\t\treturn restored;\n\t\t}\n\n\t\tbk.priorPhase = { phase: prevPhase, phaseSince: prevPhaseSince };\n\t\treturn now;\n\t}\n\n\t/** Extracts the ask identity a settlement event refers to. `PostToolUse`/`PermissionDenied`\n\t * carry `hookInput.tool_use_id` and `hookInput.tool_input` in production; the top-level\n\t * `event.toolName`/`event.toolInput` are the older-CLI fallback. Input is canonicalized so key\n\t * order (or arriving via the fallback field instead of `hookInput`) doesn't defeat comparison. */\n\tprivate settledByFromEvent(\n\t\tevent: AgentSessionEvent,\n\t\tcapabilities: AgentCapabilities,\n\t): {\n\t\ttoolUseId?: string;\n\t\ttoolName?: string;\n\t\ttoolInputJson?: string;\n\t} {\n\t\tconst hookInput = event.hookInput;\n\t\tconst toolInput = (hookInput?.tool_input as Record<string, unknown> | undefined) ?? event.toolInput;\n\t\treturn {\n\t\t\ttoolUseId: hookInput?.tool_use_id as string | undefined,\n\t\t\t// Canonical, because the registered ask's `toolName` is canonical too — comparing a native\n\t\t\t// name against it would look like an identity mismatch and strand the ask.\n\t\t\ttoolName: canonicalToolNameFromEvent(capabilities, event),\n\t\t\ttoolInputJson: toolInput != null ? stableStringify(toolInput) : undefined,\n\t\t};\n\t}\n\n\tprivate resolveAllPending(entry: PendingPermissionEntry, response: PermissionResponse): void {\n\t\tfor (const resolver of entry.resolvers) {\n\t\t\tresolver.resolve(response);\n\t\t}\n\t}\n\n\tprivate rejectAllPending(entry: PendingPermissionEntry, reason: Error): void {\n\t\tfor (const resolver of entry.resolvers) {\n\t\t\tresolver.reject(reason);\n\t\t}\n\t}\n\n\t// Called when a pending permission was resolved outside GitLens (e.g. via the CLI terminal).\n\t// The 'deny' response is a safe no-op since the tool has already run or been denied upstream.\n\t// `settledBy` identifies the ask the settling event actually refers to — out-of-order/duplicate\n\t// hook deliveries (PostToolUse for an unrelated tool, a PermissionDenied for an already-evicted\n\t// earlier ask) must never deny a still-live blocking ask just because it shares a session id.\n\t// `PermissionDenied` itself only ever fires after Claude Code's auto-mode classifier denies a\n\t// tool call — never as an echo of a deny a `PermissionRequest` response sent.\n\tprivate clearStalePermission(\n\t\tsessionId: string,\n\t\treason: string,\n\t\tsettledBy?: { toolUseId?: string; toolName?: string; toolInputJson?: string },\n\t): void {\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tconst pending = this._pendingPermissions.get(sessionId);\n\n\t\tif (pending != null) {\n\t\t\tif (settledBy != null) {\n\t\t\t\tlet mismatch = false;\n\n\t\t\t\tif (pending.toolUseId != null && settledBy.toolUseId != null) {\n\t\t\t\t\t// Rule 1: both sides identified — the only trustworthy comparison. `PermissionDenied`/\n\t\t\t\t\t// `PostToolUse` hookInput DOES carry `tool_use_id`, but `PermissionRequest` never does,\n\t\t\t\t\t// so `pending` never actually has one — this branch only engages if a future CLI adds\n\t\t\t\t\t// it to requests too. The asymmetry is deliberate, not a gap to close.\n\t\t\t\t\tmismatch = pending.toolUseId !== settledBy.toolUseId;\n\t\t\t\t} else if (pending.toolName === '') {\n\t\t\t\t\t// Rule 2: no identity was captured at registration (degraded payload) — nothing to\n\t\t\t\t\t// gate on, so clear unconditionally rather than stranding the ask forever.\n\t\t\t\t\tmismatch = false;\n\t\t\t\t} else {\n\t\t\t\t\t// Rule 3: name must match; when both sides have input, it must match too. A\n\t\t\t\t\t// PostToolUse for a different invocation of the same tool (different input) leaves\n\t\t\t\t\t// the ask untouched.\n\t\t\t\t\tmismatch =\n\t\t\t\t\t\tsettledBy.toolName !== pending.toolName ||\n\t\t\t\t\t\t(pending.toolInputJson != null &&\n\t\t\t\t\t\t\tsettledBy.toolInputJson != null &&\n\t\t\t\t\t\t\tpending.toolInputJson !== settledBy.toolInputJson);\n\t\t\t\t}\n\n\t\t\t\tif (mismatch) {\n\t\t\t\t\tLogger.debug(\n\t\t\t\t\t\t`GkAgentProvider.clearStalePermission: skip (identity mismatch) ${reason} ${this.sessionTag(sessionId)} pending=${pending.toolUseId ?? pending.toolName} settledBy=${settledBy.toolUseId ?? settledBy.toolName ?? 'unknown'}`,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tLogger.debug(`GkAgentProvider.clearStalePermission: ${reason} ${this.sessionTag(sessionId)}`);\n\t\t\tthis.resolveAllPending(pending, {\n\t\t\t\thookSpecificOutput: { hookEventName: 'PermissionRequest', decision: { behavior: 'deny' } },\n\t\t\t});\n\t\t\tthis._pendingPermissions.delete(sessionId);\n\t\t\tbk.pendingPermission = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tif (bk.pendingPermission == null) return;\n\n\t\tif (\n\t\t\tsettledBy?.toolName != null &&\n\t\t\tbk.pendingPermission.toolName != null &&\n\t\t\tsettledBy.toolName !== bk.pendingPermission.toolName\n\t\t) {\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.clearStalePermission: skip (display-only identity mismatch) ${reason} ${this.sessionTag(sessionId)} pending=${bk.pendingPermission.toolName} settledBy=${settledBy.toolName}`,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tLogger.debug(`GkAgentProvider.clearStalePermission: ${reason} ${this.sessionTag(sessionId)}`);\n\t\tbk.pendingPermission = undefined;\n\t}\n\n\tresolvePermission(\n\t\tsessionId: string,\n\t\tdecision: PermissionDecision,\n\t\tupdatedPermissions?: PermissionSuggestion[],\n\t): boolean {\n\t\t// Explicit refusal rather than an incidental one: an agent we can't answer for never registers\n\t\t// a pending entry, so the `pending == null` check below would already return `false` — but the\n\t\t// caller deserves to know WHY, and the guard has to survive a future entry-registering path.\n\t\tconst capabilities = this.getSessionCapabilities(sessionId);\n\t\tif (capabilities != null && !canAnswerBlockingPermission(capabilities)) {\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.resolvePermission: refusing ${decision} for ${this.sessionTag(sessionId)} — ${capabilities.displayName} asks are observe-only`,\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pending = this._pendingPermissions.get(sessionId);\n\t\tif (pending == null) return false;\n\n\t\tLogger.debug(\n\t\t\t`GkAgentProvider.resolvePermission: ${decision} ${this.sessionTag(sessionId)} tool=${pending.toolName}`,\n\t\t);\n\t\tthis.resolveAllPending(pending, {\n\t\t\thookSpecificOutput: {\n\t\t\t\thookEventName: 'PermissionRequest',\n\t\t\t\tdecision: { behavior: decision, updatedPermissions: updatedPermissions },\n\t\t\t},\n\t\t});\n\t\tthis.callbacks.onPermissionResolved?.({\n\t\t\tprovider: capabilities?.providerId ?? claudeCodeCapabilities.providerId,\n\t\t\ttool: pending.toolName,\n\t\t\tdecision: decision,\n\t\t});\n\t\tthis._pendingPermissions.delete(sessionId);\n\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tbk.pendingPermission = undefined;\n\n\t\tconst nextStatus = bk.activeToolCount > 0 ? 'tool_use' : 'thinking';\n\t\tthis.updateSessionStatus(sessionId, nextStatus);\n\t\treturn true;\n\t}\n\n\tasync archiveSession(sessionId: string): Promise<boolean> {\n\t\t// Authoritative status guard: the CLI's `archive-session` ends an active session first, so a\n\t\t// stale webview action (or a row that resumed out of `ended` since the click) must never\n\t\t// reach the CLI — archiving is only ever valid on a terminal row. Callers gate the UI too,\n\t\t// but this is the last line that owns live process safety. Returns `false` when refused so the\n\t\t// host doesn't record a success telemetry event for an archive that never happened.\n\t\tconst session = this._sessions.find(s => s.id === sessionId);\n\t\tif (session != null && session.status !== 'ended') {\n\t\t\tLogger.warn(\n\t\t\t\t`GkAgentProvider.archiveSession: refusing to archive non-ended ${this.sessionTag(sessionId)} (status=${session.status})`,\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tLogger.debug(`GkAgentProvider.archiveSession: ${this.sessionTag(sessionId)}`);\n\t\tawait this.callbacks.runCLICommand(['ai', 'hook', 'archive-session', sessionId, '--json']);\n\t\t// Invalidate the archived-id cache so the next `getPastSessions` re-fetches and excludes this id.\n\t\tthis._archivedSessionIdsCache = undefined;\n\t\t// Optimistically drop it — archived sessions are excluded from the `active,ended` poll, so the\n\t\t// next reconciliation confirms the removal regardless.\n\t\tconst index = this._sessions.findIndex(s => s.id === sessionId);\n\t\tif (index >= 0) {\n\t\t\tthis._sessions.splice(index, 1);\n\t\t\tthis._sessionBookkeeping.delete(sessionId);\n\t\t\tthis._transcriptReader.forget(sessionId);\n\t\t\tthis._onDidChangeSessions.fire();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/** Lists the ids of sessions the CLI has archived, so callers (the \"Past\" transcript listing) can\n\t * exclude them — the tracked row is gone, but the transcript on disk survives and would otherwise\n\t * resurface there. Resolves to `[]` on any error, including a CLI too old to support the\n\t * `archived` status filter. */\n\tasync getArchivedSessionIds(): Promise<string[]> {\n\t\tconst cached = this._archivedSessionIdsCache;\n\t\tif (cached != null && Date.now() - cached.at < archivedSessionIdsCacheTtlMs) {\n\t\t\treturn cached.promise;\n\t\t}\n\n\t\tconst promise = this.fetchArchivedSessionIds();\n\t\tthis._archivedSessionIdsCache = { promise: promise, at: Date.now() };\n\t\treturn promise;\n\t}\n\n\tprivate async fetchArchivedSessionIds(): Promise<string[]> {\n\t\ttry {\n\t\t\tconst output = await this.callbacks.runCLICommand([\n\t\t\t\t'ai',\n\t\t\t\t'hook',\n\t\t\t\t'list-sessions',\n\t\t\t\t'--status',\n\t\t\t\t'archived',\n\t\t\t\t'--json',\n\t\t\t]);\n\t\t\tconst sessions = JSON.parse(output) as SessionFileData[];\n\t\t\treturn sessions.map(s => s.sessionId).filter(id => id.length > 0);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tresolveEndedSessionDetails(sessionId: string): void {\n\t\tconst session = this._sessions.find(s => s.id === sessionId);\n\t\t// Only ended sessions defer resolution; live sessions resolve eagerly on discovery.\n\t\tif (session?.status !== 'ended') return;\n\n\t\t// The durable store drops the prompt (and only ever carries an auto-slug name) for most ended\n\t\t// sessions, so read the terminal transcript once on demand to recover a real title + the\n\t\t// first/last prompt. Both the git probe and transcript read sit under the guard so repeated\n\t\t// opens don't re-probe git or re-read a possibly-large file.\n\t\tconst bk = this.getBookkeeping(sessionId);\n\t\tif (bk.endedDetailsResolved) return;\n\n\t\tbk.endedDetailsResolved = true;\n\n\t\tif (session.cwd) {\n\t\t\tvoid this.resolveGitInfo(sessionId, session.cwd);\n\t\t}\n\t\t// Git identity resolves for every agent; the transcript read is Claude-only (see\n\t\t// `resolveTranscriptTitles`).\n\t\tif (this.supportsTranscripts(sessionId)) {\n\t\t\tvoid this.applyEndedTranscriptDetails(sessionId, session.cwd);\n\t\t}\n\t}\n\n\t/** No `_sessions` gate, unlike {@link resolveEndedSessionDetails} — must work for a\n\t * transcript-only id this window never tracked live (past-session-sheet callers). */\n\tasync resolveSessionDetails(sessionId: string, cwd?: string): Promise<EndedTranscriptDetails | undefined> {\n\t\t// The reader only reads Claude Code's store, so an agent that leaves no transcript can only\n\t\t// ever miss here. Reachable rather than theoretical: an ended session of ANY agent becomes a\n\t\t// Past row, and opening its sheet routes here by `providerId`. `supportsTranscripts` fails\n\t\t// open, so the transcript-only ids this method exists for — untracked, therefore capability-\n\t\t// less, and Claude's by construction since only its store produces them — still resolve.\n\t\tif (!this.supportsTranscripts(sessionId)) return undefined;\n\n\t\tlet cached = this._sessionDetailsCache.get(sessionId);\n\t\tif (cached == null) {\n\t\t\tcached = this._transcriptReader.resolveEndedDetails(sessionId, cwd).catch((ex: unknown) => {\n\t\t\t\t// A read error (transient I/O, permissions) is not terminal state — drop the cache\n\t\t\t\t// entry so a later call retries. A resolved `undefined` IS terminal (no transcript on\n\t\t\t\t// disk) and stays cached.\n\t\t\t\tthis._sessionDetailsCache.delete(sessionId);\n\t\t\t\tthrow ex;\n\t\t\t});\n\t\t\tthis._sessionDetailsCache.set(sessionId, cached);\n\t\t}\n\n\t\ttry {\n\t\t\treturn await cached;\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tprivate async applyEndedTranscriptDetails(sessionId: string, cwd: string | undefined): Promise<void> {\n\t\tlet details;\n\t\ttry {\n\t\t\tdetails = await this._transcriptReader.resolveEndedDetails(sessionId, cwd);\n\t\t} catch {\n\t\t\t// A read error (transient I/O, permissions) is not terminal state — clear the once-only\n\t\t\t// guard so a later open retries. A `undefined` result IS terminal (no transcript on disk),\n\t\t\t// so it keeps the guard and never re-scans.\n\t\t\tconst bk = this._sessionBookkeeping.get(sessionId);\n\t\t\tif (bk != null) {\n\t\t\t\tbk.endedDetailsResolved = false;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (details == null) return;\n\n\t\tconst index = this._sessions.findIndex(s => s.id === sessionId);\n\t\tif (index < 0) return;\n\n\t\tconst session = this._sessions[index];\n\t\t// The session may have been archived/removed while we were reading.\n\t\tif (session.status !== 'ended') return;\n\n\t\tconst { titles } = details;\n\t\tconst nextTitles =\n\t\t\ttitles.custom != null || titles.ai != null || titles.agent != null\n\t\t\t\t? { custom: titles.custom, ai: titles.ai, agent: titles.agent }\n\t\t\t\t: session.transcriptTitles;\n\t\t// Durable-store prompts (full text) win over the transcript's (CLI-truncated) copy; only\n\t\t// backfill from the transcript when the field is empty.\n\t\tconst nextFirstPrompt = session.firstPrompt ?? prepareStoredPrompt(details.firstPrompt);\n\t\tconst nextLastPrompt = session.lastPrompt ?? prepareStoredPrompt(details.lastPrompt);\n\n\t\tconst titlesChanged =\n\t\t\tnextTitles?.custom !== session.transcriptTitles?.custom ||\n\t\t\tnextTitles?.ai !== session.transcriptTitles?.ai ||\n\t\t\tnextTitles?.agent !== session.transcriptTitles?.agent;\n\t\tif (!titlesChanged && nextFirstPrompt === session.firstPrompt && nextLastPrompt === session.lastPrompt) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._sessions[index] = {\n\t\t\t...session,\n\t\t\ttranscriptTitles: nextTitles,\n\t\t\tfirstPrompt: nextFirstPrompt,\n\t\t\tlastPrompt: nextLastPrompt,\n\t\t};\n\t\tthis._onDidChangeSessions.fire();\n\t}\n\n\tprivate resolveWorkspacePath(cwd: string | undefined): string | undefined {\n\t\tif (!cwd) return undefined;\n\n\t\tconst normalized = normalizePath(cwd);\n\t\treturn this._workspacePaths.find(\n\t\t\tp => normalized === p || normalized.startsWith(`${p}/`) || p.startsWith(`${normalized}/`),\n\t\t);\n\t}\n\n\tprivate updateSessionWithPermission(\n\t\tsessionId: string,\n\t\tpermission: PendingPermission,\n\t\tcontext?: SessionContext,\n\t): void {\n\t\t// A pending permission is a working/waiting transition — cancel any deferred Stop → idle\n\t\t// commit so the session doesn't briefly flip to idle before showing the prompt.\n\t\tthis.cancelPendingIdleTransition(sessionId);\n\n\t\t// The full event context, not just the pid: a blocking ask can be the first event of a\n\t\t// session, and a row created here with no location would sit unattributed for the whole block.\n\t\tconst { index } = this.ensureSession(sessionId, context);\n\n\t\tconst prev = this._sessions[index];\n\t\tconst newPhase = getPhaseForStatus('permission_requested');\n\t\tthis.getBookkeeping(sessionId).pendingPermission = permission;\n\t\tthis._sessions[index] = {\n\t\t\t...prev,\n\t\t\tstatus: 'permission_requested',\n\t\t\tphase: newPhase,\n\t\t\tphaseSince: this.resolvePhaseSince(sessionId, prev.phase, prev.phaseSince, newPhase),\n\t\t\tstatusDetail: permission.toolDescription,\n\t\t\tpendingPermission: permission,\n\t\t\tlastActivity: new Date(),\n\t\t};\n\t\tthis._onDidChangeSessions.fire();\n\t}\n\n\tprivate updateSessionStatus(\n\t\tsessionId: string,\n\t\tstatus: AgentSessionStatus,\n\t\toptions?: SessionContext & { statusDetail?: string; pendingPermission?: PendingPermission },\n\t): void {\n\t\t// Any non-idle status update implicitly cancels a deferred Stop → idle commit. The\n\t\t// timer is owned here so the schedule/cancel pair is uniformly enforced regardless of\n\t\t// which event path produced the next status.\n\t\tif (status !== 'idle') {\n\t\t\tthis.cancelPendingIdleTransition(sessionId);\n\t\t}\n\n\t\tconst { index, changed: metadataChanged } = this.ensureSession(sessionId, options);\n\n\t\tconst prev = this._sessions[index];\n\t\tconst bk = this.getBookkeeping(sessionId);\n\n\t\t// If a permission/elicitation is pending, preserve permission_requested state.\n\t\t// Tool counts and other bookkeeping are still updated by callers before this\n\t\t// method, but the visible status remains locked until the wait is explicitly\n\t\t// resolved.\n\t\tif (bk.pendingPermission != null && status !== 'permission_requested') {\n\t\t\tthis._sessions[index] = { ...prev, lastActivity: new Date() };\n\t\t\tif (metadataChanged) {\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst statusDetail = options?.statusDetail;\n\t\t// Resolved before the short-circuit: a second ask can arrive while the row already sits at\n\t\t// `permission_requested`, and comparing only status+detail would publish the first ask forever.\n\t\tconst nextPendingPermission =\n\t\t\tstatus === 'permission_requested' ? (bk.pendingPermission ?? options?.pendingPermission) : undefined;\n\t\tif (\n\t\t\tprev.status === status &&\n\t\t\tprev.statusDetail === statusDetail &&\n\t\t\tisSameAsk(prev.pendingPermission, nextPendingPermission)\n\t\t) {\n\t\t\tif (metadataChanged) {\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst newPhase = getPhaseForStatus(status);\n\t\tthis._sessions[index] = {\n\t\t\t...prev,\n\t\t\tstatus: status,\n\t\t\tphase: newPhase,\n\t\t\tphaseSince: this.resolvePhaseSince(sessionId, prev.phase, prev.phaseSince, newPhase),\n\t\t\tstatusDetail: statusDetail,\n\t\t\tpendingPermission: nextPendingPermission,\n\t\t\tlastActivity: new Date(),\n\t\t};\n\t\tthis._onDidChangeSessions.fire();\n\n\t\tif (status === 'thinking' || status === 'tool_use' || status === 'compacting') {\n\t\t\tconst sessionCwd = this._sessions[index].cwd;\n\t\t\tif (sessionCwd != null) {\n\t\t\t\tthis.callbacks.onBranchAgentActivity?.(sessionCwd);\n\t\t\t}\n\t\t}\n\n\t\t// On a fresh transition into idle, recheck transcript titles — Claude typically (re-)writes\n\t\t// `ai-title` right after finishing a response, so this is the prime moment to pick it up.\n\t\t// Tail-read caching makes repeated checks cheap.\n\t\tif (status === 'idle' && prev.status !== 'idle') {\n\t\t\tvoid this.resolveTranscriptTitles(sessionId, this._sessions[index].cwd);\n\t\t}\n\t}\n\n\tprivate ensureSession(sessionId: string, context?: SessionContext): { index: number; changed: boolean } {\n\t\tconst {\n\t\t\tcapabilities,\n\t\t\tpid,\n\t\t\tworkspacePath,\n\t\t\tisInWorkspace,\n\t\t\tcwd,\n\t\t\tinitialCwd,\n\t\t\tplanFile,\n\t\t\tsessionName,\n\t\t\tmodel,\n\t\t\tworktreePath,\n\t\t\tvisitedWorktreePaths,\n\t\t} = context ?? {};\n\n\t\tlet index = this._sessions.findIndex(s => s.id === sessionId);\n\t\tif (index < 0) {\n\t\t\tconst now = new Date();\n\t\t\t// Same worktree-derived fallback as the update branch below: a session created with a\n\t\t\t// scratch cwd but a CLI-seated worktree still belongs to that worktree's workspace.\n\t\t\tconst createdWorkspacePath = workspacePath ?? this.resolveWorkspacePath(worktreePath);\n\t\t\t// Identity comes from the owning agent's descriptor, never from the provider — Claude's\n\t\t\t// `providerId` stays the `claudeCode` the descriptor encodes. The fallback covers the\n\t\t\t// deferred-commit paths (see `SessionContext.capabilities`), which only ever run against a\n\t\t\t// row that already exists; reaching it would mean a row created outside every event path.\n\t\t\tconst identity = capabilities ?? claudeCodeCapabilities;\n\t\t\tindex = this._sessions.length;\n\t\t\tthis._sessions.push({\n\t\t\t\tid: sessionId,\n\t\t\t\tproviderId: identity.providerId,\n\t\t\t\tproviderName: identity.displayName,\n\t\t\t\tname: sessionName || undefined,\n\t\t\t\tstatus: 'idle',\n\t\t\t\tphase: getPhaseForStatus('idle'),\n\t\t\t\tphaseSince: now,\n\t\t\t\tpid: pid,\n\t\t\t\tlastActivity: now,\n\t\t\t\tisSubagent: false,\n\t\t\t\tworkspacePath: createdWorkspacePath,\n\t\t\t\tcwd: cwd,\n\t\t\t\tinitialCwd: initialCwd ?? cwd,\n\t\t\t\tplanFile: planFile,\n\t\t\t\tisInWorkspace: createdWorkspacePath != null ? true : (isInWorkspace ?? false),\n\t\t\t\tmodel: model,\n\t\t\t\tworktreePath: worktreePath != null ? normalizePath(worktreePath) : undefined,\n\t\t\t\tvisitedWorktreePaths: unionVisited(undefined, visitedWorktreePaths, worktreePath),\n\t\t\t});\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.ensureSession: implicitly created ${this.sessionTag(sessionId, sessionName ?? 'unnamed')}`,\n\t\t\t);\n\t\t\tif (worktreePath != null) {\n\t\t\t\tthis.getBookkeeping(sessionId).cliSeatedWorktree = true;\n\t\t\t}\n\t\t\tthis._onDidChangeSessions.fire();\n\n\t\t\tif (cwd != null) {\n\t\t\t\tvoid this.resolveGitInfo(sessionId, cwd);\n\t\t\t}\n\t\t\tvoid this.resolveTranscriptTitles(sessionId, cwd);\n\t\t\treturn { index: index, changed: true };\n\t\t}\n\n\t\tconst existing = this._sessions[index];\n\t\tconst updatedPid = pid != null && existing.pid == null ? pid : existing.pid;\n\t\tconst updatedPlanFile = planFile ?? existing.planFile;\n\t\tconst updatedName = sessionName || existing.name;\n\t\tconst updatedModel = model || existing.model;\n\t\tconst updatedCwd = cwd ?? existing.cwd;\n\t\t// Prefer the CLI's authoritative `initialCwd` (the true launch dir it captured first-hand,\n\t\t// even for sessions that started before this window opened); otherwise keep whatever we\n\t\t// already captured, and only as a last resort backfill from the current cwd (older CLIs that\n\t\t// don't send `initialCwd`, or a cold-create before any cwd was known). Comparing live `cwd`\n\t\t// against `initialCwd` is how consumers detect launch-vs-current drift, so it stays stable.\n\t\tconst updatedInitialCwd = initialCwd ?? existing.initialCwd ?? cwd;\n\t\t// The CLI resolves this at hook time and sends it on every event — authoritative when\n\t\t// present, so it seats ahead of the `resolveGitInfo` probe below (which still fills\n\t\t// `commonPath` and remains the fallback for older CLIs that don't send `cwdTimeline`).\n\t\tconst updatedWorktreePath = worktreePath != null ? normalizePath(worktreePath) : existing.worktreePath;\n\t\tconst updatedVisitedWorktreePaths = unionVisited(\n\t\t\texisting.visitedWorktreePaths,\n\t\t\tvisitedWorktreePaths,\n\t\t\tupdatedWorktreePath,\n\t\t);\n\t\t// Workspace membership follows the ATTRIBUTION, not the raw cwd: a scratch-dir excursion\n\t\t// (cwd in /tmp, worktree kept) stays in-workspace via its worktree, while a genuine move to\n\t\t// a repo outside the workspace honestly drops membership when events carry a cwd.\n\t\tconst updatedWorkspacePath =\n\t\t\tworkspacePath ??\n\t\t\tthis.resolveWorkspacePath(updatedWorktreePath) ??\n\t\t\t(cwd == null ? existing.workspacePath : undefined);\n\t\tconst updatedIsInWorkspace = cwd == null ? existing.isInWorkspace : updatedWorkspacePath != null;\n\n\t\tconst cwdMoved = cwd != null && updatedCwd !== existing.cwd;\n\t\tconst worktreeMoved =\n\t\t\tupdatedWorktreePath != null &&\n\t\t\texisting.worktreePath != null &&\n\t\t\tupdatedWorktreePath !== existing.worktreePath;\n\n\t\t// The CLI explaining the location owns attribution; a move it didn't explain hands it back to\n\t\t// the probe.\n\t\tif (worktreePath != null) {\n\t\t\tthis.getBookkeeping(sessionId).cliSeatedWorktree = true;\n\t\t} else if (cwdMoved) {\n\t\t\tthis.getBookkeeping(sessionId).cliSeatedWorktree = false;\n\t\t}\n\n\t\tlet changed = false;\n\t\tif (\n\t\t\tupdatedPid !== existing.pid ||\n\t\t\tupdatedWorkspacePath !== existing.workspacePath ||\n\t\t\tupdatedIsInWorkspace !== existing.isInWorkspace ||\n\t\t\tupdatedPlanFile !== existing.planFile ||\n\t\t\tupdatedName !== existing.name ||\n\t\t\tupdatedModel !== existing.model ||\n\t\t\tupdatedCwd !== existing.cwd ||\n\t\t\tupdatedInitialCwd !== existing.initialCwd ||\n\t\t\tupdatedWorktreePath !== existing.worktreePath ||\n\t\t\tupdatedVisitedWorktreePaths !== existing.visitedWorktreePaths\n\t\t) {\n\t\t\tthis._sessions[index] = {\n\t\t\t\t...existing,\n\t\t\t\tname: updatedName,\n\t\t\t\tmodel: updatedModel,\n\t\t\t\tpid: updatedPid,\n\t\t\t\tworkspacePath: updatedWorkspacePath,\n\t\t\t\tcwd: updatedCwd,\n\t\t\t\tinitialCwd: updatedInitialCwd,\n\t\t\t\tplanFile: updatedPlanFile,\n\t\t\t\tisInWorkspace: updatedIsInWorkspace,\n\t\t\t\tworktreePath: updatedWorktreePath,\n\t\t\t\tvisitedWorktreePaths: updatedVisitedWorktreePaths,\n\t\t\t\t// A worktree move can cross repos, and the spread would otherwise carry the old repo\n\t\t\t\t// identity forward — which consumers prefer over the new worktree, pinning the card to\n\t\t\t\t// the wrong repo. Drop it; the probe below refills it. Mirrors the poll's ended-record\n\t\t\t\t// re-seat.\n\t\t\t\tcommonPath: worktreeMoved ? undefined : existing.commonPath,\n\t\t\t};\n\t\t\tchanged = true;\n\t\t}\n\n\t\t// Re-fire `resolveGitInfo` if the session is missing either `worktreePath` or `commonPath`.\n\t\t// Peer-synced sessions arrive with `worktreePath` already set (from the peer that owns the\n\t\t// hook flow) but may lack `commonPath` if the peer was running pre-commonPath code; this\n\t\t// gives us a chance to fill it in locally. Idempotent — `resolveGitInfo` only mutates the\n\t\t// session when one of `cwd`/`worktreePath`/`commonPath` actually changes. The\n\t\t// `gitInfoUnresolvable` bookkeeping flag (see `SessionBookkeeping`) is set once\n\t\t// `resolveGitInfo` confirms the cwd isn't a git repo, preventing a retry storm on every\n\t\t// hook event for non-git-repo cwds. The flag is cleared on cwd change (`CwdChanged`) and\n\t\t// on `resetBookkeeping` (Stop/SessionStart) so re-resolution can happen when warranted.\n\t\t// A cwd move re-resolves too. `worktreePath`/`commonPath` are resolved from whichever cwd was\n\t\t// seen first, so an agent that moves between worktrees would otherwise stay pinned to its\n\t\t// launch repo — attaching to the wrong WIP row and leaving its real worktree showing no\n\t\t// agents at all. `CwdChanged` covers the move the CLI announces; this covers an ordinary\n\t\t// event that simply arrives carrying a new cwd.\n\t\t//\n\t\t// A cwd the CLI already attributed to the same worktree needs no probe at all — that's the\n\t\t// common case (an agent `cd`-ing around inside its own tree), and probing it would spawn a git\n\t\t// call per hook event for an answer we already have. A first seat (no prior worktree) still\n\t\t// counts as a location change: the move may be out of a non-git dir whose probe latched\n\t\t// `gitInfoUnresolvable`, and `commonPath` still needs the probe.\n\t\t//\n\t\t// A worktree move is a location change on its own, even with the SAME cwd (cwdTimeline\n\t\t// updated, cwd unchanged) — the `commonPath` drop above (`worktreeMoved ? undefined : …`)\n\t\t// needs the probe to refill it, and without `worktreeMoved` here nothing else would fire it.\n\t\tconst locationNeedsProbe =\n\t\t\tworktreeMoved || (cwdMoved && (worktreePath == null || existing.worktreePath == null));\n\t\tif (locationNeedsProbe) {\n\t\t\tthis.getBookkeeping(sessionId).gitInfoUnresolvable = false;\n\t\t}\n\n\t\tif (\n\t\t\tcwd != null &&\n\t\t\t(locationNeedsProbe || existing.worktreePath == null || existing.commonPath == null) &&\n\t\t\t!this.getBookkeeping(sessionId).gitInfoUnresolvable\n\t\t) {\n\t\t\tvoid this.resolveGitInfo(sessionId, cwd);\n\t\t}\n\n\t\treturn { index: index, changed: changed };\n\t}\n\n\tprivate async resolveGitInfo(sessionId: string, cwd: string): Promise<void> {\n\t\tconst resolveGitInfo = this.callbacks.resolveGitInfo;\n\t\tif (resolveGitInfo == null) return;\n\n\t\t// Dedupe concurrent calls for the same session — every hook event (PreToolUse, PostToolUse,\n\t\t// UserPromptSubmit, etc.) flows through `ensureSession`, which retries `resolveGitInfo`\n\t\t// whenever `commonPath`/`worktreePath` is missing. Without this guard a non-git-repo cwd\n\t\t// would spawn a fresh git probe per hook event. The `gitInfoUnresolvable` bookkeeping flag\n\t\t// (set below when `info == null`) is the long-lived suppressor across hook events; this\n\t\t// in-flight set only dedupes concurrent overlapping probes within a single resolution.\n\t\t//\n\t\t// Keyed by cwd as well: a probe for the SAME cwd is genuinely redundant, but one for a\n\t\t// different cwd (a missed `CwdChanged` corrected off the durable record, say) must not be\n\t\t// swallowed — the in-flight answer describes the old directory. Record it as pending so the\n\t\t// running probe hands off to it, and discard the stale answer below.\n\t\tconst inFlightCwd = this._resolveGitInfoInFlight.get(sessionId);\n\t\tif (inFlightCwd != null) {\n\t\t\tif (inFlightCwd !== cwd) {\n\t\t\t\tthis._resolveGitInfoPending.set(sessionId, cwd);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._resolveGitInfoInFlight.set(sessionId, cwd);\n\t\ttry {\n\t\t\tlet info: Awaited<ReturnType<typeof resolveGitInfo>> | undefined;\n\t\t\tlet failed = false;\n\t\t\ttry {\n\t\t\t\tinfo = await resolveGitInfo(cwd);\n\t\t\t} catch {\n\t\t\t\t// A transient git/spawn failure, distinct from a confirmed \"not a repo\" (`info ==\n\t\t\t\t// null` below). Must not latch `gitInfoUnresolvable` — the next hook event retries\n\t\t\t\t// via `ensureSession`'s `commonPath == null` check.\n\t\t\t\tfailed = true;\n\t\t\t\tinfo = undefined;\n\t\t\t}\n\n\t\t\tconst index = this._sessions.findIndex(s => s.id === sessionId);\n\t\t\tif (index < 0) return;\n\n\t\t\t// Superseded while we were probing: this answer describes a directory the session has\n\t\t\t// already left, so applying it would undo the newer location. Drop it — the `finally`\n\t\t\t// below re-runs for the newest cwd.\n\t\t\tif (this._resolveGitInfoPending.has(sessionId)) return;\n\n\t\t\tif (failed) return;\n\n\t\t\tconst session = this._sessions[index];\n\n\t\t\t// `workspacePath` stays as the matched workspace folder (or undefined). Repo identity\n\t\t\t// flows through `commonPath`, populated here from `info.repoRoot` at the same step as\n\t\t\t// `worktreePath` — both available together from `resolveGitInfo`, much earlier than the\n\t\t\t// follow-on worktree-name refresh (which needs `getWorktrees()` on the parent repo).\n\t\t\t//\n\t\t\t// When `info == null` (cwd is not inside any git repo), set the `gitInfoUnresolvable`\n\t\t\t// bookkeeping flag so subsequent `ensureSession`/peer-sync retry checks skip re-firing.\n\t\t\t// We deliberately do NOT write a tombstone onto the session DTO — keeping `commonPath`\n\t\t\t// as `undefined` (a) keeps the wire-shape unambiguous for peers, (b) lets consumers\n\t\t\t// safely treat undefined as \"no repo identity\", and (c) means peers can still attempt\n\t\t\t// their own local resolution. The flag is cleared on cwd change (`CwdChanged`) and on\n\t\t\t// `resetBookkeeping` so re-resolution happens when warranted (e.g. user runs `git init`\n\t\t\t// followed by a new session start).\n\t\t\tif (info == null) {\n\t\t\t\tthis.getBookkeeping(sessionId).gitInfoUnresolvable = true;\n\n\t\t\t\t// The cwd itself isn't a repo, but a CLI-seated worktree (from `cwdTimeline`, see\n\t\t\t\t// `worktreeFromEvent`) may still name one — e.g. a scratch cwd like `/tmp/x` whose\n\t\t\t\t// session the CLI attributed to a real worktree. Probe the worktree root inline, in\n\t\t\t\t// the same in-flight window, so a scratch cwd doesn't leave `commonPath` permanently\n\t\t\t\t// unresolved.\n\t\t\t\tlet worktreeInfo: Awaited<ReturnType<typeof resolveGitInfo>> | undefined;\n\t\t\t\tlet liveIndex = index;\n\t\t\t\tlet liveSession = session;\n\t\t\t\tif (session.worktreePath != null && session.worktreePath !== cwd && session.commonPath == null) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tworktreeInfo = await resolveGitInfo(session.worktreePath);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tworktreeInfo = undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Re-find and re-read after this second await, for both the success and\n\t\t\t\t\t// fall-through writes below — the array can have been reassigned/spliced (e.g.\n\t\t\t\t\t// `pruneDeadSessions`), or the session's own fields updated, while the probe ran.\n\t\t\t\t\tliveIndex = this._sessions.findIndex(s => s.id === sessionId);\n\t\t\t\t\tif (liveIndex < 0) return;\n\n\t\t\t\t\tif (this._resolveGitInfoPending.has(sessionId)) return;\n\n\t\t\t\t\tliveSession = this._sessions[liveIndex];\n\t\t\t\t}\n\n\t\t\t\tif (worktreeInfo != null) {\n\t\t\t\t\tconst worktreeFirstResolve = liveSession.initialCommonPath == null;\n\t\t\t\t\tthis._sessions[liveIndex] = {\n\t\t\t\t\t\t...liveSession,\n\t\t\t\t\t\tcwd: cwd,\n\t\t\t\t\t\tcommonPath: worktreeInfo.repoRoot,\n\t\t\t\t\t\tinitialWorktreePath: worktreeFirstResolve\n\t\t\t\t\t\t\t? liveSession.worktreePath\n\t\t\t\t\t\t\t: liveSession.initialWorktreePath,\n\t\t\t\t\t\tinitialCommonPath: worktreeFirstResolve ? worktreeInfo.repoRoot : liveSession.initialCommonPath,\n\t\t\t\t\t\tvisitedWorktreePaths: unionVisited(liveSession.visitedWorktreePaths, liveSession.worktreePath),\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (cwd !== liveSession.cwd) {\n\t\t\t\t\tthis._sessions[liveIndex] = { ...liveSession, cwd: cwd };\n\t\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A CLI-seated worktree wins over the probe's answer (see `cliSeatedWorktree`): the CLI\n\t\t\t// resolved it for this exact cwd, while the probe can name the parent worktree for a nested\n\t\t\t// one. `commonPath` always comes from the probe — the CLI doesn't resolve repo identity.\n\t\t\tconst effectiveWorktreePath =\n\t\t\t\tthis.getBookkeeping(sessionId).cliSeatedWorktree && session.worktreePath != null\n\t\t\t\t\t? session.worktreePath\n\t\t\t\t\t: info.worktreePath;\n\n\t\t\t// Capture the worktree/commonPath at the first successful resolve so consumers can\n\t\t\t// detect drift (e.g. an agent that `cd`'d into a sibling worktree after launch). Gated\n\t\t\t// on `initialCommonPath` — captured together with `initialWorktreePath` so a first\n\t\t\t// resolve where `info.worktreePath` happens to be undefined doesn't leave the latter\n\t\t\t// open to a later overwrite. Once set, never overwritten.\n\t\t\tconst firstResolve = session.initialCommonPath == null;\n\t\t\tconst updatedInitialWorktreePath = firstResolve ? effectiveWorktreePath : session.initialWorktreePath;\n\t\t\tconst updatedInitialCommonPath = firstResolve ? info.repoRoot : session.initialCommonPath;\n\n\t\t\tif (\n\t\t\t\tcwd !== session.cwd ||\n\t\t\t\teffectiveWorktreePath !== session.worktreePath ||\n\t\t\t\tinfo.repoRoot !== session.commonPath ||\n\t\t\t\tupdatedInitialWorktreePath !== session.initialWorktreePath ||\n\t\t\t\tupdatedInitialCommonPath !== session.initialCommonPath\n\t\t\t) {\n\t\t\t\tthis._sessions[index] = {\n\t\t\t\t\t...session,\n\t\t\t\t\tcwd: cwd,\n\t\t\t\t\tworktreePath: effectiveWorktreePath,\n\t\t\t\t\tcommonPath: info.repoRoot,\n\t\t\t\t\tinitialWorktreePath: updatedInitialWorktreePath,\n\t\t\t\t\tinitialCommonPath: updatedInitialCommonPath,\n\t\t\t\t\tvisitedWorktreePaths: unionVisited(session.visitedWorktreePaths, effectiveWorktreePath),\n\t\t\t\t};\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t}\n\t\t} finally {\n\t\t\tthis._resolveGitInfoInFlight.delete(sessionId);\n\n\t\t\t// Hand off to the newest cwd requested while this probe ran, so a move that arrived\n\t\t\t// mid-flight still resolves instead of being dropped by the dedupe.\n\t\t\tconst pendingCwd = this._resolveGitInfoPending.get(sessionId);\n\t\t\tif (pendingCwd != null) {\n\t\t\t\tthis._resolveGitInfoPending.delete(sessionId);\n\t\t\t\tvoid this.resolveGitInfo(sessionId, pendingCwd);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async resolveTranscriptTitles(sessionId: string, cwd: string | undefined): Promise<void> {\n\t\t// The reader only understands Claude Code's `~/.claude/projects/**` JSONL store, so for any\n\t\t// other agent this would be a guaranteed-miss directory scan on every event and poll.\n\t\tif (!this.supportsTranscripts(sessionId)) return;\n\n\t\tlet titles;\n\t\ttry {\n\t\t\ttitles = await this._transcriptReader.resolve(sessionId, cwd);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t\tif (titles == null) return;\n\n\t\tconst index = this._sessions.findIndex(s => s.id === sessionId);\n\t\tif (index < 0) return;\n\n\t\tconst session = this._sessions[index];\n\t\tconst prev = session.transcriptTitles;\n\t\tif (prev?.custom === titles.custom && prev?.ai === titles.ai && prev?.agent === titles.agent) return;\n\n\t\tthis._sessions[index] = {\n\t\t\t...session,\n\t\t\ttranscriptTitles: { custom: titles.custom, ai: titles.ai, agent: titles.agent },\n\t\t};\n\t\tthis._onDidChangeSessions.fire();\n\t}\n\n\t/** Transitions the session at `index` to the terminal `ended` state in place: keeps the row,\n\t * stamps `endedAt` as its activity time, clears transient state (statusDetail, pendingPermission,\n\t * subagents), and tears down its bookkeeping/timers. Shared by the live `SessionEnd` path and the\n\t * poll backstop for a `SessionEnd` the live path missed. Does not fire change events — the caller\n\t * batches those. */\n\tprivate endSession(index: number, endedAt: Date): void {\n\t\tconst prev = this._sessions[index];\n\t\tthis._sessions[index] = {\n\t\t\t...prev,\n\t\t\tstatus: 'ended',\n\t\t\tphase: 'ended',\n\t\t\tphaseSince: endedAt,\n\t\t\tlastActivity: endedAt,\n\t\t\tstatusDetail: undefined,\n\t\t\tpendingPermission: undefined,\n\t\t\tsubagents: undefined,\n\t\t};\n\t\t// Terminal teardown, owned here so every caller gets it — the live `SessionEnd` path does\n\t\t// this before calling us, but the poll's missed-SessionEnd transition doesn't: reject any\n\t\t// in-flight permission promise (otherwise a blocking request leaks until dispose) and cancel a\n\t\t// pending Stop→idle timer (otherwise it fires inside its window and revives this row to a\n\t\t// live zombie).\n\t\tconst pending = this._pendingPermissions.get(prev.id);\n\t\tif (pending != null) {\n\t\t\tthis.rejectAllPending(pending, new Error('Session ended'));\n\t\t\tthis._pendingPermissions.delete(prev.id);\n\t\t}\n\t\tthis.cancelPendingIdleTransition(prev.id);\n\n\t\tconst bk = this._sessionBookkeeping.get(prev.id);\n\t\tif (bk != null) {\n\t\t\tthis.cancelPendingFileClears(bk);\n\t\t\tthis.cancelPendingReadClears(bk);\n\t\t}\n\t\tthis._sessionBookkeeping.delete(prev.id);\n\t\tthis._transcriptReader.forget(prev.id);\n\t\tthis.noteTerminalTransition();\n\t}\n\n\tprivate pruneDeadSessions(): boolean {\n\t\tconst kept: AgentSession[] = [];\n\t\tconst removedIds: string[] = [];\n\t\tfor (const s of this._sessions) {\n\t\t\t// Ended sessions are terminal and durable — their PID is usually dead by design, so\n\t\t\t// liveness pruning must never drop them (they leave only via poll reconciliation).\n\t\t\tif (s.status === 'ended') {\n\t\t\t\tkept.push(s);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// An agent that multiplexes concurrent sessions in one process (Codex) reports the SAME\n\t\t\t// pid for all of them, so the pid answers \"is the host process alive\", not \"is this\n\t\t\t// session alive\" — in both directions. A live shared process would pin every session it\n\t\t\t// ever hosted, and a dead one would reap live siblings along with the finished session.\n\t\t\t// Neither is recoverable here, so pid liveness is not evidence for these rows at all:\n\t\t\t// keep them and let the paths that DO identify a session end them — a `SessionEnd`, or the\n\t\t\t// poll seeing the CLI's durable `ended` record (which the CLI writes for a stale session\n\t\t\t// of its own accord). The CLI takes the same position: for `pidSharingClients` a pid-only\n\t\t\t// match is a guess, so it keeps such an end revivable.\n\t\t\tif (getAgentCapabilitiesByProviderId(s.providerId)?.sharesPids === true) {\n\t\t\t\tkept.push(s);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// A session blocking on us for a permission decision is by definition alive,\n\t\t\t// even if `kill(pid, 0)` says otherwise (e.g. transient EPERM/ESRCH). Dropping\n\t\t\t// it here loses pendingPermission and lastPrompt; the next syncSessions then\n\t\t\t// re-adds it as a stale shell with `permission_requested` status but no detail.\n\t\t\tif (s.pid == null || isProcessAlive(s.pid) || this._pendingPermissions.has(s.id)) {\n\t\t\t\tkept.push(s);\n\t\t\t} else {\n\t\t\t\tremovedIds.push(s.id);\n\t\t\t}\n\t\t}\n\t\tif (removedIds.length === 0) return false;\n\n\t\tthis._sessions = kept;\n\t\tfor (const id of removedIds) {\n\t\t\tconst pending = this._pendingPermissions.get(id);\n\t\t\tif (pending != null) {\n\t\t\t\tthis.rejectAllPending(pending, new Error('Session pruned'));\n\t\t\t\tthis._pendingPermissions.delete(id);\n\t\t\t}\n\t\t\tthis.cancelPendingIdleTransition(id);\n\t\t\t// Cancel any in-flight decay-eviction timers before dropping the bookkeeping (mirrors\n\t\t\t// SessionEnd). A Stopped-then-killed session reaches here with armed cooldown timers\n\t\t\t// (settleBookkeeping leaves them running), so without this they'd leak until they fire.\n\t\t\tconst bk = this._sessionBookkeeping.get(id);\n\t\t\tif (bk != null) {\n\t\t\t\tthis.cancelPendingFileClears(bk);\n\t\t\t\tthis.cancelPendingReadClears(bk);\n\t\t\t}\n\t\t\tthis._sessionBookkeeping.delete(id);\n\t\t\tthis._transcriptReader.forget(id);\n\t\t}\n\t\tthis.noteTerminalTransition();\n\t\tLogger.debug(\n\t\t\t`GkAgentProvider.syncSessions: removed ${removedIds.length} stale session(s): ${removedIds.map(id => id.substring(0, 8)).join(', ')}`,\n\t\t);\n\t\treturn true;\n\t}\n\n\tprotected async syncSessions(options?: { gate?: boolean }): Promise<void> {\n\t\t// Recurring (gated) calls skip the CLI spawn when there's nothing to reconcile: no tracked\n\t\t// sessions AND no installed hooks. Sessions only ever appear via the IPC push path or a peer,\n\t\t// so an empty list with hooks off means no agents are reachable here. We still poll whenever\n\t\t// sessions exist — that's the only local backstop for pruning agents that die without firing\n\t\t// `SessionEnd`, and it keeps us correct even if hook detection is stale/wrong. The bootstrap\n\t\t// call in `ensureIpcServer` passes no options, so cold-start discovery always runs.\n\t\t// Deliberately counts ALL tracked sessions, ended included. An ended row is something\n\t\t// we have to reconcile — it's removed only when the CLI stops listing it (archived from\n\t\t// another window, or aged out) — and this poll is the sole mechanism that does so. It's also\n\t\t// what triggers the CLI's own 30-day retention sweep, which runs on `list-sessions` and\n\t\t// nothing else: no timer, no daemon. Gating it out to save a spawn wouldn't avoid work, it\n\t\t// would strand the rows on screen AND the records on disk until the window reloads.\n\t\tif (options?.gate && this._sessions.length === 0 && !this._hooksInstalled) return;\n\n\t\t// Narrowly: hooks off AND nothing running, i.e. we hold only terminal history. There's no\n\t\t// dying process to reap and no live state to correct — just rows to reconcile and the\n\t\t// retention sweep to trigger, neither of which needs quarter-hourly resolution. Back the\n\t\t// cadence off rather than stopping (window startup polls ungated, so a reload is current).\n\t\t// Hooks ON keeps the full cadence deliberately: there the tick is also the backstop for a\n\t\t// session whose hook events never reached our IPC server.\n\t\tif (\n\t\t\toptions?.gate &&\n\t\t\t!this._hooksInstalled &&\n\t\t\t!this._sessions.some(s => s.status !== 'ended') &&\n\t\t\tDate.now() - this._lastSyncAt < idleReconcileIntervalMs\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Stamped BEFORE the CLI call so the reconciliation below can tell \"this poll's snapshot was\n\t\t// taken after we ended the row\" from \"an in-flight poll that predates it\" — see the\n\t\t// ended-removal filter.\n\t\tconst pollStartedAt = Date.now();\n\t\tthis._lastSyncAt = pollStartedAt;\n\n\t\tlet sessions: SessionFileData[];\n\t\ttry {\n\t\t\tlet output: string;\n\t\t\ttry {\n\t\t\t\t// `--status active,ended` surfaces both live sessions and the CLI's durable ended records\n\t\t\t\t// (excluding `archived`). Newer CLIs default `list-sessions` to active-only, so the flag\n\t\t\t\t// is required to see ended sessions at all.\n\t\t\t\toutput = await this.callbacks.runCLICommand([\n\t\t\t\t\t'ai',\n\t\t\t\t\t'hook',\n\t\t\t\t\t'list-sessions',\n\t\t\t\t\t'--status',\n\t\t\t\t\t'active,ended',\n\t\t\t\t\t'--json',\n\t\t\t\t]);\n\t\t\t\tthis._statusFilterSupported = true;\n\t\t\t} catch (ex) {\n\t\t\t\t// Only retry on an unknown-flag error — a pre-3.1.69 CLI rejects `--status` but returns\n\t\t\t\t// all sessions unfiltered, so the flagless call is the correct legacy equivalent. Real\n\t\t\t\t// failures (CLI missing, spawn error) rethrow to the prune-and-return handler below.\n\t\t\t\tif (!isUnknownFlagError(ex)) throw ex;\n\n\t\t\t\tthis._statusFilterSupported = false;\n\t\t\t\toutput = await this.callbacks.runCLICommand(['ai', 'hook', 'list-sessions', '--json']);\n\t\t\t}\n\t\t\tsessions = JSON.parse(output) as SessionFileData[];\n\t\t} catch (ex) {\n\t\t\t// Expected whenever the CLI is missing or still installing, so not an error — but log it:\n\t\t\t// every session in the window silently stops reconciling until the next tick, and without\n\t\t\t// this the symptom (\"no agents anywhere\") is indistinguishable from having no agents.\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.syncSessions: poll skipped — ${ex instanceof Error ? ex.message : String(ex)}`,\n\t\t\t);\n\t\t\tif (this.pruneDeadSessions()) {\n\t\t\t\tthis._onDidChangeSessions.fire();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Snapshot what the live IPC path had already tracked, so we can detect drift between it and\n\t\t// what the poll returns. Ideally they match exactly — any difference means the live push path\n\t\t// missed an add (poll discovers it) or a teardown (poll no longer reports a session we track).\n\t\t// Drift is measured over *live* sessions only; ended sessions are durable history, so their\n\t\t// absence from `polledAlive` is expected and must not skew the discrepancy signal.\n\t\t//\n\t\t// Both maps carry the owning agent's `providerId` per session so the report below can be split\n\t\t// per agent: the two paths' reliability differs by agent (one may never reach the live path at\n\t\t// all), and one pooled number would average that away into noise.\n\t\tconst trackedLiveBefore = new Map(\n\t\t\tthis._sessions.filter(s => s.status !== 'ended').map(s => [s.id, s.providerId] as const),\n\t\t);\n\t\tconst polledAlive = new Map<string, string>();\n\t\t// Every id the poll returned (live *and* ended). Drives ended-session reconciliation:\n\t\t// a tracked ended session absent from this set was archived/purged by the CLI.\n\t\tconst polledIds = new Set<string>();\n\t\t// Accumulates ids already tracked or added during this poll, so the membership check is O(1)\n\t\t// and duplicate ids within a single response are only added once.\n\t\tconst known = new Set(this._sessions.map(s => s.id));\n\n\t\t// The CLI's durable store never revives a resumed session — once it moves a record to its\n\t\t// `ended` store, nothing moves it back, so a record reporting `ended` isn't proof the session\n\t\t// is over. The listing also repairs the two active-record cases that have no fresher hook state:\n\t\t// first discovery and synthesized, unresolvable permission asks. Fetched once per poll (not per\n\t\t// row); the host caches the underlying `claude agents --json` invocation behind a short TTL, so\n\t\t// this doesn't spawn a process per session.\n\t\tconst liveSessions = await this.callbacks.getLiveAgentSessions?.();\n\n\t\tlet changed = false;\n\t\tconst discoveredByAgent = new Map<string, number>();\n\t\tconst noteDiscovered = (providerId: string): void => {\n\t\t\tdiscoveredByAgent.set(providerId, (discoveredByAgent.get(providerId) ?? 0) + 1);\n\t\t};\n\t\t/** Ids kept alive against a stale `ended` record. Logged below — this path has no other\n\t\t * observability, and \"the agent isn't showing up\" is otherwise indistinguishable from\n\t\t * \"the listing never ran\". */\n\t\tconst keptAlive: string[] = [];\n\n\t\tfor (const data of sessions) {\n\t\t\tif (!data.sessionId) continue;\n\n\t\t\t// A record from a client we hold no descriptor for (the CLI supports more than this table\n\t\t\t// does). Must stay ahead of `polledIds`/`polledAlive`: an id in either would skew ended-row\n\t\t\t// reconciliation and the `onSyncDiscrepancy` drift signal below. Absent = `claude-code`,\n\t\t\t// matching the live path — older CLIs don't stamp it.\n\t\t\tconst capabilities = getAgentCapabilities(data.providerId ?? 'claude-code');\n\t\t\tif (capabilities == null) continue;\n\n\t\t\t// The record's `event` is the agent's native name. Canonicalize it so `deriveStatusFromEvent`\n\t\t\t// sees a vocabulary it knows — an unmapped native name falls through to `data.event`, which\n\t\t\t// that function's `default` already resolves to `idle`. Deliberately NOT a skip: unlike the\n\t\t\t// live path, nothing here switches exhaustively on the name, and dropping the record would\n\t\t\t// hide a real session whose last event simply has no canonical analogue.\n\t\t\t//\n\t\t\t// `data.hookInput` must be passed: an agent whose event name alone can't determine the\n\t\t\t// canonical event (OpenCode's `session.status`) is resolved from the payload, so withholding\n\t\t\t// it makes those names permanently unresolvable on this path — and the poll is the only way\n\t\t\t// a pre-existing session enters after a window reload.\n\t\t\tconst canonicalEvent = resolveCanonicalHookEvent(capabilities, data.event, data.hookInput) ?? data.event;\n\t\t\t// Same translation for the record's tool name — `classifyPermissionKind` and the display\n\t\t\t// detail expect canonical names.\n\t\t\tconst polledToolName =\n\t\t\t\tdata.toolName != null ? resolveCanonicalToolName(capabilities, data.toolName) : undefined;\n\n\t\t\tconst effectiveStatus = data.status ?? 'active';\n\n\t\t\t// Archived records are excluded by the `active,ended` query; guard anyway.\n\t\t\tif (effectiveStatus === 'archived') continue;\n\n\t\t\tif (effectiveStatus === 'ended') {\n\t\t\t\tpolledIds.add(data.sessionId);\n\t\t\t\tconst endedDate = new Date(data.endedAt ?? data.updatedAt);\n\t\t\t\tconst override = liveOverrideFor(liveSessions, data.sessionId);\n\t\t\t\tconst liveCwd = override?.live.cwd;\n\t\t\t\tconst currentCwd = liveCwd ?? data.cwd;\n\t\t\t\tconst liveCwdMoved = liveCwd != null && liveCwd !== data.cwd;\n\t\t\t\tconst recordWorktreeRoot = worktreeRootFromData(data);\n\t\t\t\tconst currentWorktreeRoot = liveCwdMoved ? undefined : recordWorktreeRoot;\n\n\t\t\t\tconst existingIndex = this._sessions.findIndex(s => s.id === data.sessionId);\n\t\t\t\tif (existingIndex >= 0) {\n\t\t\t\t\tconst bookkeeping = this.getBookkeeping(data.sessionId);\n\t\t\t\t\tif (liveCwdMoved) {\n\t\t\t\t\t\tbookkeeping.supersededRecordCwd = data.cwd;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tbookkeeping.supersededRecordCwd != null &&\n\t\t\t\t\t\tbookkeeping.supersededRecordCwd !== data.cwd\n\t\t\t\t\t) {\n\t\t\t\t\t\t// The CLI rewrote the record for the resumed run — it describes the session again.\n\t\t\t\t\t\tbookkeeping.supersededRecordCwd = undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\t// The record still names the cwd a resume superseded, and this poll no longer lists the\n\t\t\t\t\t// session live: the resumed process exited (or died) before the CLI rewrote the record,\n\t\t\t\t\t// so neither its cwd nor its `endedAt` describe where or when the session last ran.\n\t\t\t\t\tconst recordLocationStale = override == null && bookkeeping.supersededRecordCwd === data.cwd;\n\n\t\t\t\t\tif (override != null) {\n\t\t\t\t\t\tconst { live: liveSession, status: liveStatus } = override;\n\t\t\t\t\t\t// `claude agents --json` still lists this exact session id as live — the store's\n\t\t\t\t\t\t// `ended` record is stale. Keep the row alive instead of ending it, and prefer the\n\t\t\t\t\t\t// listing's pid — the record's own may already be dead, or reused. Background sessions\n\t\t\t\t\t\t// carry no pid at all, so fall back to whatever pid the row already has.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// The listing establishes LIVENESS, not status. It's a poll SAMPLE of a value that flips\n\t\t\t\t\t\t// many times per turn, so adopting it every poll stamps a row back to `idle` moments after\n\t\t\t\t\t\t// a hook event moved it to `tool_use`/`thinking` — the row then reads idle almost always\n\t\t\t\t\t\t// and working almost never. Hook events are strictly fresher, so the sample is only taken\n\t\t\t\t\t\t// when the row has nothing better: it was ended, and this poll is what revives it.\n\t\t\t\t\t\tconst trackedSession = this._sessions[existingIndex];\n\t\t\t\t\t\t// The listing's pid, or none. Never fall back to the pid we already hold: the listing\n\t\t\t\t\t\t// omits one only for background sessions, which have no process of their own, and the\n\t\t\t\t\t\t// pid on the row is the dead one whose exit produced the `ended` record. Carrying it\n\t\t\t\t\t\t// onto a live row makes `pruneDeadSessions` reap the row later in this same poll.\n\t\t\t\t\t\tconst nextPid = liveSession.pid;\n\t\t\t\t\t\tconst revived = trackedSession.status === 'ended';\n\t\t\t\t\t\tconst nextStatus = revived ? liveStatus : trackedSession.status;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttrackedSession.status !== nextStatus ||\n\t\t\t\t\t\t\ttrackedSession.pid !== nextPid ||\n\t\t\t\t\t\t\ttrackedSession.endReason != null ||\n\t\t\t\t\t\t\ttrackedSession.endedAt != null\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis._sessions[existingIndex] = {\n\t\t\t\t\t\t\t\t...trackedSession,\n\t\t\t\t\t\t\t\tstatus: nextStatus,\n\t\t\t\t\t\t\t\tphase: getPhaseForStatus(nextStatus),\n\t\t\t\t\t\t\t\t// Only re-stamp the phase/activity clocks on the revive itself; otherwise a poll\n\t\t\t\t\t\t\t\t// keeps resetting them under a row whose status it didn't change.\n\t\t\t\t\t\t\t\tphaseSince: revived ? new Date(pollStartedAt) : trackedSession.phaseSince,\n\t\t\t\t\t\t\t\tlastActivity: revived ? new Date(pollStartedAt) : trackedSession.lastActivity,\n\t\t\t\t\t\t\t\tpid: nextPid,\n\t\t\t\t\t\t\t\tstatusDetail: revived ? undefined : trackedSession.statusDetail,\n\t\t\t\t\t\t\t\tendReason: undefined,\n\t\t\t\t\t\t\t\tendedAt: undefined,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tkeptAlive.push(`${data.sessionId.substring(0, 8)}:${nextStatus}`);\n\t\t\t\t\t\tpolledAlive.set(data.sessionId, capabilities.providerId);\n\t\t\t\t\t} else if (this._sessions[existingIndex].status !== 'ended') {\n\t\t\t\t\t\t// Already tracked, and Claude no longer lists it as live. If the live path missed the\n\t\t\t\t\t\t// SessionEnd (e.g. `/clear` kept the PID alive under a new id), transition it to\n\t\t\t\t\t\t// ended now — otherwise a live-status row would linger as a zombie, since\n\t\t\t\t\t\t// pruneDeadSessions can't reap a live PID.\n\t\t\t\t\t\t// The record's `endedAt` can predate activity this window already observed — a\n\t\t\t\t\t\t// superseded record after a cwd move, or a same-cwd resume the CLI hasn't rewritten\n\t\t\t\t\t\t// the record for yet — so never move the row's clock backward.\n\t\t\t\t\t\tconst { lastActivity } = this._sessions[existingIndex];\n\t\t\t\t\t\tthis.endSession(\n\t\t\t\t\t\t\texistingIndex,\n\t\t\t\t\t\t\tlastActivity.getTime() > endedDate.getTime() ? lastActivity : endedDate,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Re-seat the row on its current location. The durable record is authoritative for a\n\t\t\t\t\t// terminal session, but an independent Claude listing can prove that record stale and\n\t\t\t\t\t// supply the resumed process's current cwd. Keep the prior worktree attribution until\n\t\t\t\t\t// the live cwd's git probe confirms a replacement — a resumed session can legitimately\n\t\t\t\t\t// sit in scratch space — but never let a later poll move it back to the ended record's\n\t\t\t\t\t// directory. A record already known superseded stays ignored until the CLI rewrites it,\n\t\t\t\t\t// so the row survives the resumed process exiting before that write lands. Prompts get a\n\t\t\t\t\t// hole-fill from the record below when nothing has been set yet; titles keep their own\n\t\t\t\t\t// on-demand transcript resolution, which holds richer values than the record does.\n\t\t\t\t\tconst existing = this._sessions[existingIndex];\n\t\t\t\t\tconst cwdChanged = !recordLocationStale && currentCwd !== existing.cwd;\n\t\t\t\t\t// Pre-`cwdTimeline` records carry no worktree data. If the cwd moved, whatever we hold\n\t\t\t\t\t// is no longer trustworthy — it may point into a different repo entirely — so drop it\n\t\t\t\t\t// rather than leave the card filed under the wrong branch, and re-resolve below. A cwd\n\t\t\t\t\t// supplied by the live listing is different: preserve the old attribution as a fallback\n\t\t\t\t\t// until the current cwd's probe succeeds.\n\t\t\t\t\tconst nextWorktreePath = recordLocationStale\n\t\t\t\t\t\t? existing.worktreePath\n\t\t\t\t\t\t: currentWorktreeRoot != null\n\t\t\t\t\t\t\t? normalizePath(currentWorktreeRoot)\n\t\t\t\t\t\t\t: cwdChanged && !liveCwdMoved\n\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t: existing.worktreePath;\n\t\t\t\t\tconst worktreeMoved = nextWorktreePath !== existing.worktreePath;\n\t\t\t\t\tif (cwdChanged || worktreeMoved) {\n\t\t\t\t\t\tconst workspacePath = this.resolveWorkspacePath(currentCwd);\n\t\t\t\t\t\tthis._sessions[existingIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tcwd: currentCwd,\n\t\t\t\t\t\t\tinitialCwd: existing.initialCwd ?? data.initialCwd ?? data.cwd,\n\t\t\t\t\t\t\tworktreePath: nextWorktreePath,\n\t\t\t\t\t\t\tworkspacePath: workspacePath,\n\t\t\t\t\t\t\tisInWorkspace: workspacePath != null,\n\t\t\t\t\t\t\t// A worktree move can cross repos, and the spread would otherwise carry the old\n\t\t\t\t\t\t\t// repo identity forward — which consumers PREFER over the freshly-resolved\n\t\t\t\t\t\t\t// worktree metadata, pinning the card to the wrong repo. Drop it and let the\n\t\t\t\t\t\t\t// host backfill from the new worktree.\n\t\t\t\t\t\t\tcommonPath: worktreeMoved ? undefined : existing.commonPath,\n\t\t\t\t\t\t\tvisitedWorktreePaths: unionVisited(\n\t\t\t\t\t\t\t\texisting.visitedWorktreePaths,\n\t\t\t\t\t\t\t\tvisitedFromTimeline(data.cwdTimeline),\n\t\t\t\t\t\t\t\tdata.worktrees,\n\t\t\t\t\t\t\t\tnextWorktreePath,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tchanged = true;\n\n\t\t\t\t\t\t// Nothing in the record to re-seat it with (older CLI), or the record names a\n\t\t\t\t\t\t// NEW worktree the drop above just cleared `commonPath` for — either way, resolve\n\t\t\t\t\t\t// the cwd once rather than leaving the row location-less until some later event\n\t\t\t\t\t\t// happens to change `cwd`/`worktreePath` again (a same-worktree poll afterward\n\t\t\t\t\t\t// skips this branch entirely, since `worktreeMoved` goes false).\n\t\t\t\t\t\tif (liveCwdMoved || nextWorktreePath == null || worktreeMoved) {\n\t\t\t\t\t\t\tthis.getBookkeeping(data.sessionId).cliSeatedWorktree = currentWorktreeRoot != null;\n\t\t\t\t\t\t\tvoid this.resolveGitInfo(data.sessionId, currentCwd);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prompts backfill-only: the record's prompt/firstPrompt sanitized the same way the\n\t\t\t\t\t// discovery path does. Never overwrites a value the hook path or a transcript resolve\n\t\t\t\t\t// already set.\n\t\t\t\t\tconst currentSession = this._sessions[existingIndex];\n\t\t\t\t\tconst nextLastPrompt = currentSession.lastPrompt ?? prepareStoredPrompt(data.prompt ?? undefined);\n\t\t\t\t\tconst nextFirstPrompt =\n\t\t\t\t\t\tcurrentSession.firstPrompt ?? prepareStoredPrompt(data.firstPrompt ?? undefined);\n\t\t\t\t\tif (\n\t\t\t\t\t\tnextLastPrompt !== currentSession.lastPrompt ||\n\t\t\t\t\t\tnextFirstPrompt !== currentSession.firstPrompt\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis._sessions[existingIndex] = {\n\t\t\t\t\t\t\t...currentSession,\n\t\t\t\t\t\t\tlastPrompt: nextLastPrompt,\n\t\t\t\t\t\t\tfirstPrompt: nextFirstPrompt,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst nextBookkeeping = this.getBookkeeping(data.sessionId);\n\t\t\t\t\tnextBookkeeping.polledAtLeastOnce = true;\n\t\t\t\t\t// `endSession` above drops the bookkeeping entry, but the latch has to outlive that\n\t\t\t\t\t// transition — otherwise the next poll finds none and re-seats the row onto the very\n\t\t\t\t\t// record this one already knew was superseded.\n\t\t\t\t\tnextBookkeeping.supersededRecordCwd = bookkeeping.supersededRecordCwd;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tknown.add(data.sessionId);\n\t\t\t\tconst workspacePath = this.resolveWorkspacePath(currentCwd);\n\n\t\t\t\tif (override != null) {\n\t\t\t\t\tconst { live: liveSession, status: liveStatus } = override;\n\t\t\t\t\t// This window is learning about the session for the first time via its `ended`\n\t\t\t\t\t// record, but `claude agents --json` still lists it as live — same override as the\n\t\t\t\t\t// tracked branch above, just pushing a fresh row instead of updating one in place. The\n\t\t\t\t\t// listing's cwd is current; the ended record's worktree remains only as a fallback until\n\t\t\t\t\t// the live cwd's git probe resolves it.\n\t\t\t\t\tthis._sessions.push({\n\t\t\t\t\t\tid: data.sessionId,\n\t\t\t\t\t\tproviderId: capabilities.providerId,\n\t\t\t\t\t\tproviderName: capabilities.displayName,\n\t\t\t\t\t\tname: data.sessionName || undefined,\n\t\t\t\t\t\tstatus: liveStatus,\n\t\t\t\t\t\tphase: getPhaseForStatus(liveStatus),\n\t\t\t\t\t\tphaseSince: new Date(pollStartedAt),\n\t\t\t\t\t\t// Listing's pid or none — never the record's, which is the dead process whose exit\n\t\t\t\t\t\t// wrote the `ended` record (see the tracked branch above).\n\t\t\t\t\t\tpid: liveSession.pid,\n\t\t\t\t\t\tlastActivity: new Date(pollStartedAt),\n\t\t\t\t\t\tisSubagent: false,\n\t\t\t\t\t\tworkspacePath: workspacePath,\n\t\t\t\t\t\tworktreePath: recordWorktreeRoot != null ? normalizePath(recordWorktreeRoot) : undefined,\n\t\t\t\t\t\tvisitedWorktreePaths: unionVisited(\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tvisitedFromTimeline(data.cwdTimeline),\n\t\t\t\t\t\t\tdata.worktrees,\n\t\t\t\t\t\t\trecordWorktreeRoot != null ? normalizePath(recordWorktreeRoot) : undefined,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcwd: currentCwd,\n\t\t\t\t\t\tinitialCwd: data.initialCwd ?? data.cwd,\n\t\t\t\t\t\tplanFile: data.planFile ?? undefined,\n\t\t\t\t\t\tisInWorkspace: workspacePath != null,\n\t\t\t\t\t\tlastPrompt: prepareStoredPrompt(data.prompt ?? undefined),\n\t\t\t\t\t\tfirstPrompt: prepareStoredPrompt(data.firstPrompt ?? undefined),\n\t\t\t\t\t\tmodel: data.model ?? undefined,\n\t\t\t\t\t});\n\t\t\t\t\tthis.getBookkeeping(data.sessionId).polledAtLeastOnce = true;\n\t\t\t\t\tthis.getBookkeeping(data.sessionId).cliSeatedWorktree = currentWorktreeRoot != null;\n\t\t\t\t\tif (liveCwdMoved) {\n\t\t\t\t\t\t// Latch the cwd this listing superseded, so a later poll that no longer finds the\n\t\t\t\t\t\t// session live doesn't re-seat the row back onto the not-yet-rewritten record.\n\t\t\t\t\t\tthis.getBookkeeping(data.sessionId).supersededRecordCwd = data.cwd;\n\t\t\t\t\t}\n\t\t\t\t\tchanged = true;\n\t\t\t\t\tnoteDiscovered(capabilities.providerId);\n\t\t\t\t\tkeptAlive.push(`${data.sessionId.substring(0, 8)}:${liveStatus}`);\n\t\t\t\t\tpolledAlive.set(data.sessionId, capabilities.providerId);\n\t\t\t\t\tif (liveCwdMoved || recordWorktreeRoot == null) {\n\t\t\t\t\t\tvoid this.resolveGitInfo(data.sessionId, currentCwd);\n\t\t\t\t\t}\n\t\t\t\t\tvoid this.resolveTranscriptTitles(data.sessionId, currentCwd);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._sessions.push({\n\t\t\t\t\tid: data.sessionId,\n\t\t\t\t\tproviderId: capabilities.providerId,\n\t\t\t\t\tproviderName: capabilities.displayName,\n\t\t\t\t\tname: data.sessionName || undefined,\n\t\t\t\t\tstatus: 'ended',\n\t\t\t\t\tphase: 'ended',\n\t\t\t\t\tphaseSince: endedDate,\n\t\t\t\t\tpid: data.pid,\n\t\t\t\t\tlastActivity: endedDate,\n\t\t\t\t\tisSubagent: false,\n\t\t\t\t\tworkspacePath: workspacePath,\n\t\t\t\t\t// Read straight from the CLI's durable record so ended sessions attach to branch\n\t\t\t\t\t// cards / WIP rows / the resume picker at any age, no git probe.\n\t\t\t\t\tworktreePath: recordWorktreeRoot != null ? normalizePath(recordWorktreeRoot) : undefined,\n\t\t\t\t\tvisitedWorktreePaths: unionVisited(\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tvisitedFromTimeline(data.cwdTimeline),\n\t\t\t\t\t\tdata.worktrees,\n\t\t\t\t\t\trecordWorktreeRoot != null ? normalizePath(recordWorktreeRoot) : undefined,\n\t\t\t\t\t),\n\t\t\t\t\tcwd: data.cwd,\n\t\t\t\t\tinitialCwd: data.initialCwd ?? data.cwd,\n\t\t\t\t\tplanFile: data.planFile ?? undefined,\n\t\t\t\t\tisInWorkspace: workspacePath != null,\n\t\t\t\t\tlastPrompt: prepareStoredPrompt(data.prompt ?? undefined),\n\t\t\t\t\tfirstPrompt: prepareStoredPrompt(data.firstPrompt ?? undefined),\n\t\t\t\t\tmodel: data.model ?? undefined,\n\t\t\t\t\tendReason: data.endReason ?? undefined,\n\t\t\t\t\tendedAt: data.endedAt != null ? new Date(data.endedAt).getTime() : undefined,\n\t\t\t\t\t// Subagents are meaningless once terminal.\n\t\t\t\t\tsubagents: undefined,\n\t\t\t\t});\n\t\t\t\tthis.getBookkeeping(data.sessionId).polledAtLeastOnce = true;\n\t\t\t\tchanged = true;\n\t\t\t\tthis.noteTerminalTransition();\n\t\t\t\t// Titles/prompts still resolve lazily via resolveEndedSessionDetails (a 30-day\n\t\t\t\t// cold-start must not fan out transcript reads). worktreePath comes from the record\n\t\t\t\t// above; only fall back to an eager git probe when the record predates that CLI field,\n\t\t\t\t// and only for the recent (WIP-window) tail so the fallback stays bounded.\n\t\t\t\tif (\n\t\t\t\t\trecordWorktreeRoot == null &&\n\t\t\t\t\tdata.cwd &&\n\t\t\t\t\tDate.now() - endedDate.getTime() < recentEndedGitResolveThresholdMs\n\t\t\t\t) {\n\t\t\t\t\tvoid this.resolveGitInfo(data.sessionId, data.cwd);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Active / legacy (absent-status) path — only genuinely-live processes are discoverable.\n\t\t\tif (!data.pid || !isProcessAlive(data.pid)) continue;\n\n\t\t\tpolledAlive.set(data.sessionId, capabilities.providerId);\n\t\t\tpolledIds.add(data.sessionId);\n\n\t\t\tif (known.has(data.sessionId)) {\n\t\t\t\t// Already tracked.\n\t\t\t\tconst existingIndex = this._sessions.findIndex(s => s.id === data.sessionId);\n\t\t\t\tif (existingIndex >= 0) {\n\t\t\t\t\tconst existing = this._sessions[existingIndex];\n\t\t\t\t\t// The status the CLI's last event implies — a resumed session may already be mid-work\n\t\t\t\t\t// (`PreToolUse` → tool_use, `UserPromptSubmit` → thinking), and hardcoding `idle` would\n\t\t\t\t\t// mislabel active work and risk a concurrent-write resume.\n\t\t\t\t\tconst polledStatus = deriveStatusFromEvent(canonicalEvent);\n\t\t\t\t\tconst isSynthesizedAsk =\n\t\t\t\t\t\texisting.status === 'permission_requested' && existing.pendingPermission?.resolvable === false;\n\t\t\t\t\tconst liveEntry = isSynthesizedAsk ? liveSessions?.get(data.sessionId) : undefined;\n\t\t\t\t\tconst liveStatus = liveEntry != null ? statusFromLiveSession(liveEntry) : undefined;\n\t\t\t\t\tif (isSynthesizedAsk && liveEntry != null && liveStatus == null) {\n\t\t\t\t\t\t// A terminal listing entry proves this active record is stale, even if its last event\n\t\t\t\t\t\t// advanced after the ask. It carries no authoritative terminal timestamp/details, so\n\t\t\t\t\t\t// remove the false live row and let the durable ended record restore it later. Run the\n\t\t\t\t\t\t// standard terminal teardown first so no timers or caches survive the row.\n\t\t\t\t\t\tthis.endSession(existingIndex, new Date(pollStartedAt));\n\t\t\t\t\t\tthis._sessions.splice(existingIndex, 1);\n\t\t\t\t\t\tpolledAlive.delete(data.sessionId);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (existing.status === 'ended') {\n\t\t\t\t\t\t// We hold it as `ended` but the CLI now reports it as a live process (a\n\t\t\t\t\t\t// resume the live SessionStart path missed) — revive it, the symmetric backstop\n\t\t\t\t\t\t// to the ended-branch's live→ended transition above. Leave genuinely-live\n\t\t\t\t\t\t// rows to the IPC path.\n\t\t\t\t\t\tconst revivedAt = new Date(data.updatedAt);\n\t\t\t\t\t\t// Only when the record is at least as new as the end. `SessionEnd` fires\n\t\t\t\t\t\t// while the process is still winding down, so a poll whose CLI call started\n\t\t\t\t\t\t// BEFORE it returns a snapshot that still says \"active\" with a live pid — reviving\n\t\t\t\t\t\t// off that stale record would resurrect the row, and `pruneDeadSessions` would\n\t\t\t\t\t\t// then delete it outright once the process exits, losing the ended row.\n\t\t\t\t\t\tif (revivedAt.getTime() < existing.phaseSince.getTime()) continue;\n\n\t\t\t\t\t\t// The poll has no blocking hook entry for this ask (it's discovered off the CLI's\n\t\t\t\t\t\t// durable record, not this window's IPC path) — synthesize an unresolvable one so\n\t\t\t\t\t\t// the row shows what it's waiting on instead of an empty \"Needs input\" card.\n\t\t\t\t\t\tconst revivedPendingPermission =\n\t\t\t\t\t\t\tpolledStatus === 'permission_requested'\n\t\t\t\t\t\t\t\t? synthesizeUnresolvableAsk(polledToolName, data.planFile ?? undefined)\n\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t// Seat worktreePath from the record, mirroring the ended-record re-seat above — the\n\t\t\t\t\t\t// existing row is otherwise stuck with whatever (or nothing) it had while ended.\n\t\t\t\t\t\tconst revivedWorktreeRoot = worktreeRootFromData(data);\n\t\t\t\t\t\t// No record worktree data (older CLI): KEEP the ended row's attribution. A\n\t\t\t\t\t\t// resume whose cwd is scratch space (e.g. /tmp) still belongs to its worktree —\n\t\t\t\t\t\t// re-rooting happens only when git affirmatively resolves a new one (the probe\n\t\t\t\t\t\t// below, on success). Attribution persists until something better is known.\n\t\t\t\t\t\tconst revivedWorktreePath =\n\t\t\t\t\t\t\trevivedWorktreeRoot != null ? normalizePath(revivedWorktreeRoot) : existing.worktreePath;\n\t\t\t\t\t\t// Membership follows the attribution, mirroring `ensureSession`: cwd first, the\n\t\t\t\t\t\t// kept worktree as the fallback for a scratch-dir resume.\n\t\t\t\t\t\tconst revivedWorkspacePath =\n\t\t\t\t\t\t\tthis.resolveWorkspacePath(data.cwd) ?? this.resolveWorkspacePath(revivedWorktreePath);\n\t\t\t\t\t\tthis._sessions[existingIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tstatus: polledStatus,\n\t\t\t\t\t\t\tphase: getPhaseForStatus(polledStatus),\n\t\t\t\t\t\t\tphaseSince: revivedAt,\n\t\t\t\t\t\t\tlastActivity: revivedAt,\n\t\t\t\t\t\t\t// Fresh pid from the CLI.\n\t\t\t\t\t\t\tpid: data.pid,\n\t\t\t\t\t\t\tpendingPermission: revivedPendingPermission,\n\t\t\t\t\t\t\t// The resume can be running somewhere else entirely, so take the record's\n\t\t\t\t\t\t\t// location rather than leaving the row filed under where it ended.\n\t\t\t\t\t\t\tcwd: data.cwd ?? existing.cwd,\n\t\t\t\t\t\t\tworkspacePath:\n\t\t\t\t\t\t\t\trevivedWorkspacePath ?? (data.cwd == null ? existing.workspacePath : undefined),\n\t\t\t\t\t\t\tisInWorkspace: data.cwd == null ? existing.isInWorkspace : revivedWorkspacePath != null,\n\t\t\t\t\t\t\tworktreePath: revivedWorktreePath,\n\t\t\t\t\t\t\tvisitedWorktreePaths: unionVisited(\n\t\t\t\t\t\t\t\texisting.visitedWorktreePaths,\n\t\t\t\t\t\t\t\tvisitedFromTimeline(data.cwdTimeline),\n\t\t\t\t\t\t\t\tdata.worktrees,\n\t\t\t\t\t\t\t\trevivedWorktreePath,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t// A worktree move can cross repos — drop the stale repo identity and let the\n\t\t\t\t\t\t\t// probe below refill it.\n\t\t\t\t\t\t\tcommonPath: revivedWorktreePath !== existing.worktreePath ? undefined : existing.commonPath,\n\t\t\t\t\t\t\t// No longer terminal: leaving these set makes the row read as ended to\n\t\t\t\t\t\t\t// consumers that key off them.\n\t\t\t\t\t\t\tendReason: undefined,\n\t\t\t\t\t\t\tendedAt: undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.resetBookkeeping(data.sessionId);\n\t\t\t\t\t\t// The record's worktree is the CLI's own resolution; without one the probe owns\n\t\t\t\t\t\t// attribution again.\n\t\t\t\t\t\tthis.getBookkeeping(data.sessionId).cliSeatedWorktree = revivedWorktreeRoot != null;\n\t\t\t\t\t\t// A revive whose worktree moved but whose cwd happens to equal the prior one still\n\t\t\t\t\t\t// dropped `commonPath` above and needs the probe to refill it.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdata.cwd != null &&\n\t\t\t\t\t\t\t(data.cwd !== existing.cwd || revivedWorktreePath !== existing.worktreePath)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tvoid this.resolveGitInfo(data.sessionId, data.cwd);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texisting.pendingPermission?.resolvable === false &&\n\t\t\t\t\t\tpolledStatus !== 'permission_requested' &&\n\t\t\t\t\t\tnew Date(data.updatedAt).getTime() > existing.lastActivity.getTime()\n\t\t\t\t\t) {\n\t\t\t\t\t\t// The record has moved past the ask this row still shows. Only a synthesized\n\t\t\t\t\t\t// (`resolvable: false`) ask is repairable this way — a routable one is bookkeeping-\n\t\t\t\t\t\t// owned and cleared by its own resolution paths, which the record can't see.\n\t\t\t\t\t\tthis._sessions[existingIndex] = {\n\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\tstatus: polledStatus,\n\t\t\t\t\t\t\tphase: getPhaseForStatus(polledStatus),\n\t\t\t\t\t\t\tphaseSince: new Date(data.updatedAt),\n\t\t\t\t\t\t\t// The detail described the ask's tool; carry the record's current tool for\n\t\t\t\t\t\t\t// tool_use, else clear — keeping it would show the answered ask's tool as\n\t\t\t\t\t\t\t// the active one.\n\t\t\t\t\t\t\tstatusDetail: polledStatus === 'tool_use' ? polledToolName : undefined,\n\t\t\t\t\t\t\tpendingPermission: undefined,\n\t\t\t\t\t\t\tlastActivity: new Date(data.updatedAt),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t} else if (isSynthesizedAsk) {\n\t\t\t\t\t\t// The record never moved past the ask it froze on — the ask was resolved while no\n\t\t\t\t\t\t// window was listening, so nothing ever advanced it — but Claude's own listing\n\t\t\t\t\t\t// says the session has moved on. Correct the row so it heals on the next poll\n\t\t\t\t\t\t// instead of waiting for a reload or fresh hook events. Only synthesized asks\n\t\t\t\t\t\t// are repairable here: a routable one is bookkeeping-owned and cleared by its\n\t\t\t\t\t\t// own resolution paths, which the listing must never preempt.\n\t\t\t\t\t\tif (liveStatus != null && liveStatus !== 'permission_requested') {\n\t\t\t\t\t\t\tthis._sessions[existingIndex] = {\n\t\t\t\t\t\t\t\t...existing,\n\t\t\t\t\t\t\t\tstatus: liveStatus,\n\t\t\t\t\t\t\t\tphase: getPhaseForStatus(liveStatus),\n\t\t\t\t\t\t\t\tphaseSince: new Date(pollStartedAt),\n\t\t\t\t\t\t\t\tpendingPermission: undefined,\n\t\t\t\t\t\t\t\tstatusDetail: undefined,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (existing.transcriptTitles?.ai == null && existing.transcriptTitles?.custom == null) {\n\t\t\t\t\t\t// A live session we discovered via the poll (another worktree/window owns its\n\t\t\t\t\t\t// hook flow) gets none of the local IPC re-resolves (SessionStart, idle). So one\n\t\t\t\t\t\t// discovered before Claude wrote its `ai-title` would show the repo slug forever.\n\t\t\t\t\t\t// Re-check the transcript each poll until a real title lands — cheap: the reader\n\t\t\t\t\t\t// tail-reads from its mtime cache and no-ops when the file hasn't grown.\n\t\t\t\t\t\tvoid this.resolveTranscriptTitles(data.sessionId, data.cwd);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tknown.add(data.sessionId);\n\n\t\t\tconst workspacePath = this.resolveWorkspacePath(data.cwd);\n\t\t\tconst isInWorkspace = workspacePath != null;\n\t\t\tconst activityDate = new Date(data.updatedAt);\n\t\t\tlet status = deriveStatusFromEvent(canonicalEvent);\n\t\t\tlet phaseSince = activityDate;\n\t\t\t// The record's last event can be arbitrarily stale — an ask answered while no window\n\t\t\t// was listening (e.g. mid-reload), or a session stopped right there, never advances it,\n\t\t\t// so every window start would re-seed the frozen state. Claude's own listing is\n\t\t\t// authoritative for what the session is doing right now — same contract as the\n\t\t\t// ended-record revival above. Absence from the listing (including its fail-soft empty\n\t\t\t// map on spawn failure) keeps record-derived status: absence must never mean dead.\n\t\t\tconst liveEntry = liveSessions?.get(data.sessionId);\n\t\t\tif (liveEntry != null) {\n\t\t\t\tconst liveStatus = statusFromLiveSession(liveEntry);\n\t\t\t\tif (liveStatus == null) {\n\t\t\t\t\tpolledAlive.delete(data.sessionId);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (liveStatus !== status) {\n\t\t\t\t\tstatus = liveStatus;\n\t\t\t\t\tphaseSince = new Date(pollStartedAt);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst phase = getPhaseForStatus(status);\n\t\t\t// Same rationale as the revived-session branch above: no blocking hook entry exists for a\n\t\t\t// poll-discovered ask, so synthesize an unresolvable one for the card.\n\t\t\tconst pendingPermission =\n\t\t\t\tstatus === 'permission_requested'\n\t\t\t\t\t? synthesizeUnresolvableAsk(polledToolName, data.planFile ?? undefined)\n\t\t\t\t\t: undefined;\n\t\t\t// Read straight from the CLI's durable record so the row attaches to the right branch\n\t\t\t// card/WIP row immediately, no git probe — mirrors the ended-session push below.\n\t\t\tconst worktreeRoot = worktreeRootFromData(data);\n\n\t\t\tconst subagents: AgentSession[] | undefined = data.subagents?.map(sub => ({\n\t\t\t\tid: sub.agentId,\n\t\t\t\tproviderId: capabilities.providerId,\n\t\t\t\tproviderName: capabilities.displayName,\n\t\t\t\tname: sub.agentType ?? subagentLabel,\n\t\t\t\tstatus: 'thinking',\n\t\t\t\tphase: 'working' as const,\n\t\t\t\tphaseSince: activityDate,\n\t\t\t\tlastActivity: activityDate,\n\t\t\t\tisSubagent: true,\n\t\t\t\tparentId: data.sessionId,\n\t\t\t\tisInWorkspace: isInWorkspace,\n\t\t\t}));\n\n\t\t\tthis._sessions.push({\n\t\t\t\tid: data.sessionId,\n\t\t\t\tproviderId: capabilities.providerId,\n\t\t\t\tproviderName: capabilities.displayName,\n\t\t\t\tname: data.sessionName || undefined,\n\t\t\t\tstatus: status,\n\t\t\t\tphase: phase,\n\t\t\t\tphaseSince: phaseSince,\n\t\t\t\tpid: data.pid,\n\t\t\t\tlastActivity: activityDate,\n\t\t\t\tisSubagent: false,\n\t\t\t\tworkspacePath: workspacePath,\n\t\t\t\tcwd: data.cwd,\n\t\t\t\t// Prefer the CLI's launch dir; fall back to the snapshot's (possibly drifted) cwd on\n\t\t\t\t// older CLIs that don't record it. Without this, a window that cold-starts after the\n\t\t\t\t// agent drifted would stamp the drifted cwd as the launch dir.\n\t\t\t\tinitialCwd: data.initialCwd ?? data.cwd,\n\t\t\t\tplanFile: data.planFile ?? undefined,\n\t\t\t\tisInWorkspace: isInWorkspace,\n\t\t\t\tlastPrompt: prepareStoredPrompt(data.prompt ?? undefined),\n\t\t\t\tfirstPrompt: prepareStoredPrompt(data.firstPrompt ?? undefined),\n\t\t\t\tmodel: data.model ?? undefined,\n\t\t\t\tsubagents: subagents,\n\t\t\t\tpendingPermission: pendingPermission,\n\t\t\t\tworktreePath: worktreeRoot != null ? normalizePath(worktreeRoot) : undefined,\n\t\t\t\tvisitedWorktreePaths: unionVisited(\n\t\t\t\t\tundefined,\n\t\t\t\t\tvisitedFromTimeline(data.cwdTimeline),\n\t\t\t\t\tdata.worktrees,\n\t\t\t\t\tworktreeRoot != null ? normalizePath(worktreeRoot) : undefined,\n\t\t\t\t),\n\t\t\t});\n\t\t\tchanged = true;\n\t\t\tnoteDiscovered(capabilities.providerId);\n\n\t\t\t// The record's worktree is the CLI's own resolution — mark it seated so the probe below\n\t\t\t// (still wanted for `commonPath`) can't clobber it for a nested worktree. Mirrors the\n\t\t\t// revival branch above.\n\t\t\tthis.getBookkeeping(data.sessionId).cliSeatedWorktree = worktreeRoot != null;\n\t\t\tif (data.cwd) {\n\t\t\t\tvoid this.resolveGitInfo(data.sessionId, data.cwd);\n\t\t\t}\n\t\t\tvoid this.resolveTranscriptTitles(data.sessionId, data.cwd);\n\t\t}\n\n\t\t// The poll is authoritative for ended-session removal (archived elsewhere or 30-day-purged).\n\t\t// Only remove ones a prior poll confirmed present — never a session the live SessionEnd path just\n\t\t// transitioned, which an already-in-flight poll can legitimately miss (guarded by polledAtLeastOnce).\n\t\t// On a legacy CLI (no `--status`) no poll can ever confirm an ended row, so the guard would\n\t\t// instead pin it forever — there, absence from the poll is the confirmation.\n\t\tconst staleEnded = this._sessions.filter(\n\t\t\ts =>\n\t\t\t\ts.status === 'ended' &&\n\t\t\t\t!polledIds.has(s.id) &&\n\t\t\t\t(!this._statusFilterSupported ||\n\t\t\t\t\tthis._sessionBookkeeping.get(s.id)?.polledAtLeastOnce === true ||\n\t\t\t\t\t// Or this poll's snapshot postdates the end, so its absence is authoritative.\n\t\t\t\t\t// `polledAtLeastOnce` alone can never be set for a session whose record disappeared\n\t\t\t\t\t// (archived from another window, or purged) before any poll observed it — and\n\t\t\t\t\t// `endSession` drops the bookkeeping — so without this the row is unremovable for\n\t\t\t\t\t// the window's lifetime. The timestamp answers the same question the flag was proxying:\n\t\t\t\t\t// could this poll have seen it? The grace keeps a just-ended row out of reach of\n\t\t\t\t\t// an absence that's really a not-yet-visible record.\n\t\t\t\t\ts.phaseSince.getTime() < pollStartedAt - endedRemovalGraceMs),\n\t\t);\n\t\tif (staleEnded.length > 0) {\n\t\t\tconst staleIds = new Set(staleEnded.map(s => s.id));\n\t\t\tthis._sessions = this._sessions.filter(s => !staleIds.has(s.id));\n\t\t\tfor (const s of staleEnded) {\n\t\t\t\tthis._sessionBookkeeping.delete(s.id);\n\t\t\t\tthis._transcriptReader.forget(s.id);\n\t\t\t}\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (liveSessions != null) {\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.syncSessions: Claude lists ${liveSessions.size} session(s); kept ${keptAlive.length} alive against a stale ended record${\n\t\t\t\t\tkeptAlive.length > 0 ? `: ${keptAlive.join(', ')}` : ''\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tif (this.pruneDeadSessions()) {\n\t\t\tchanged = true;\n\t\t}\n\n\t\tif (changed) {\n\t\t\tthis._onDidChangeSessions.fire();\n\t\t}\n\n\t\t// Report any drift between the live-synced set and the poll. Only on the recurring (gated)\n\t\t// poll — the ungated bootstrap call runs before the live path has had a chance to receive\n\t\t// any events, so its discoveries are expected cold-start state, not drift. `missing` counts\n\t\t// live sessions we still track that the poll no longer reports alive (a teardown the live path\n\t\t// missed, e.g. an agent killed without firing `SessionEnd`).\n\t\tif (options?.gate) {\n\t\t\ttype Drift = { discovered: number; missing: number; polled: number; tracked: number };\n\t\t\tconst driftByAgent = new Map<string, Drift>();\n\t\t\tconst driftFor = (providerId: string): Drift => {\n\t\t\t\tlet drift = driftByAgent.get(providerId);\n\t\t\t\tif (drift == null) {\n\t\t\t\t\tdrift = { discovered: 0, missing: 0, polled: 0, tracked: 0 };\n\t\t\t\t\tdriftByAgent.set(providerId, drift);\n\t\t\t\t}\n\t\t\t\treturn drift;\n\t\t\t};\n\n\t\t\tfor (const [providerId, count] of discoveredByAgent) {\n\t\t\t\tdriftFor(providerId).discovered += count;\n\t\t\t}\n\t\t\tfor (const [id, providerId] of trackedLiveBefore) {\n\t\t\t\tconst drift = driftFor(providerId);\n\t\t\t\tdrift.tracked++;\n\t\t\t\tif (!polledAlive.has(id)) {\n\t\t\t\t\tdrift.missing++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const providerId of polledAlive.values()) {\n\t\t\t\tdriftFor(providerId).polled++;\n\t\t\t}\n\n\t\t\t// One report per agent, not one pooled report: the counts describe how well the live path\n\t\t\t// and the poll agree, which is a per-agent property. A single agent's numbers are unchanged\n\t\t\t// from the pre-multi-agent shape.\n\t\t\tfor (const [providerId, drift] of driftByAgent) {\n\t\t\t\tif (drift.discovered === 0 && drift.missing === 0) continue;\n\n\t\t\t\tthis.callbacks.onSyncDiscrepancy?.({ provider: providerId, ...drift });\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Relays an open-session request to whichever GitLens window hosts `sessionId`, via the GK\n\t * CLI's `gk ai hook open-session` relay — the CLI resolves the target window itself from its\n\t * own discovery-file view of every publishing GitLens window, so this process never scans for\n\t * peers directly. `--exclude-address` keeps the CLI from routing the request back to this\n\t * window when it also (redundantly) claims the session. Resolves to `false` on any spawn or\n\t * parse failure, or when the CLI predates the `open-session` hook command — never throws, and\n\t * never falls back to a direct peer HTTP call. */\n\tasync relayOpenSession(sessionId: string, path: string): Promise<boolean> {\n\t\tconst args = ['ai', 'hook', 'open-session', sessionId, '--path', path];\n\t\tconst ownAddress = this.callbacks.ipc.address;\n\t\tif (ownAddress != null) {\n\t\t\targs.push('--exclude-address', ownAddress);\n\t\t}\n\t\targs.push('--json');\n\n\t\tlet output: string;\n\t\ttry {\n\t\t\toutput = await this.callbacks.runCLICommand(args);\n\t\t} catch (ex) {\n\t\t\tif (isUnknownFlagError(ex)) {\n\t\t\t\tLogger.debug('GkAgentProvider.relayOpenSession: CLI does not support `open-session` (older gk)');\n\t\t\t} else {\n\t\t\t\tLogger.debug(`GkAgentProvider.relayOpenSession: ${ex instanceof Error ? ex.message : String(ex)}`);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = JSON.parse(output) as { delivered?: boolean };\n\t\t\treturn result.delivered === true;\n\t\t} catch (ex) {\n\t\t\tLogger.debug(\n\t\t\t\t`GkAgentProvider.relayOpenSession: failed to parse CLI response: ${\n\t\t\t\t\tex instanceof Error ? ex.message : String(ex)\n\t\t\t\t}`,\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\t}\n}\n"],"mappings":"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"}