@gitkraken/core-gitlens 0.5.113 → 0.5.114

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 (241) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/git/cache.d.ts +4 -0
  3. package/dist/git/cache.d.ts.map +1 -1
  4. package/dist/git/cache.js +33 -0
  5. package/dist/git/cache.js.map +1 -1
  6. package/dist/git/context.d.ts +10 -0
  7. package/dist/git/context.d.ts.map +1 -1
  8. package/dist/git/context.js.map +1 -1
  9. package/dist/git/errors.d.ts +6 -3
  10. package/dist/git/errors.d.ts.map +1 -1
  11. package/dist/git/errors.js +9 -1
  12. package/dist/git/errors.js.map +1 -1
  13. package/dist/git/features.d.ts +1 -1
  14. package/dist/git/features.d.ts.map +1 -1
  15. package/dist/git/features.js +38 -0
  16. package/dist/git/features.js.map +1 -1
  17. package/dist/git/gitHealth.d.ts +153 -0
  18. package/dist/git/gitHealth.d.ts.map +1 -0
  19. package/dist/git/gitHealth.js +353 -0
  20. package/dist/git/gitHealth.js.map +1 -0
  21. package/dist/git/models/search.d.ts +6 -3
  22. package/dist/git/models/search.d.ts.map +1 -1
  23. package/dist/git/models/search.js +5 -1
  24. package/dist/git/models/search.js.map +1 -1
  25. package/dist/git/parsers/diffParser.d.ts +8 -2
  26. package/dist/git/parsers/diffParser.d.ts.map +1 -1
  27. package/dist/git/parsers/diffParser.js +27 -4
  28. package/dist/git/parsers/diffParser.js.map +1 -1
  29. package/dist/git/providers/config.d.ts +36 -3
  30. package/dist/git/providers/config.d.ts.map +1 -1
  31. package/dist/git/providers/graph.d.ts +9 -0
  32. package/dist/git/providers/graph.d.ts.map +1 -1
  33. package/dist/git/providers/maintenance.d.ts +222 -0
  34. package/dist/git/providers/maintenance.d.ts.map +1 -0
  35. package/dist/git/providers/maintenance.js +20 -0
  36. package/dist/git/providers/maintenance.js.map +1 -0
  37. package/dist/git/providers/operations.d.ts +10 -0
  38. package/dist/git/providers/operations.d.ts.map +1 -1
  39. package/dist/git/providers/pausedOperations.d.ts +3 -0
  40. package/dist/git/providers/pausedOperations.d.ts.map +1 -1
  41. package/dist/git/providers/provider.d.ts +2 -0
  42. package/dist/git/providers/provider.d.ts.map +1 -1
  43. package/dist/git/providers/tags.d.ts +3 -0
  44. package/dist/git/providers/tags.d.ts.map +1 -1
  45. package/dist/git/repositoryService.d.ts +1 -0
  46. package/dist/git/repositoryService.d.ts.map +1 -1
  47. package/dist/git/repositoryService.js.map +1 -1
  48. package/dist/git/run.types.d.ts +8 -0
  49. package/dist/git/run.types.d.ts.map +1 -1
  50. package/dist/git/service.js +3 -0
  51. package/dist/git/service.js.map +1 -1
  52. package/dist/git/utils/search.utils.d.ts.map +1 -1
  53. package/dist/git/utils/search.utils.js +112 -5
  54. package/dist/git/utils/search.utils.js.map +1 -1
  55. package/dist/git/watching/watchService.d.ts +3 -0
  56. package/dist/git/watching/watchService.d.ts.map +1 -1
  57. package/dist/git/watching/watchService.js +8 -0
  58. package/dist/git/watching/watchService.js.map +1 -1
  59. package/dist/git-cli/cliGitProvider.d.ts +11 -0
  60. package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
  61. package/dist/git-cli/cliGitProvider.js +12 -0
  62. package/dist/git-cli/cliGitProvider.js.map +1 -1
  63. package/dist/git-cli/exec/git.d.ts +23 -1
  64. package/dist/git-cli/exec/git.d.ts.map +1 -1
  65. package/dist/git-cli/exec/git.js +83 -8
  66. package/dist/git-cli/exec/git.js.map +1 -1
  67. package/dist/git-cli/exec/gitQueue.d.ts +2 -0
  68. package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
  69. package/dist/git-cli/exec/gitQueue.js +19 -17
  70. package/dist/git-cli/exec/gitQueue.js.map +1 -1
  71. package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
  72. package/dist/git-cli/parsers/logParser.js +4 -1
  73. package/dist/git-cli/parsers/logParser.js.map +1 -1
  74. package/dist/git-cli/providers/blame.d.ts.map +1 -1
  75. package/dist/git-cli/providers/blame.js +4 -7
  76. package/dist/git-cli/providers/blame.js.map +1 -1
  77. package/dist/git-cli/providers/branches.d.ts.map +1 -1
  78. package/dist/git-cli/providers/branches.js +13 -3
  79. package/dist/git-cli/providers/branches.js.map +1 -1
  80. package/dist/git-cli/providers/commits.d.ts.map +1 -1
  81. package/dist/git-cli/providers/commits.js +34 -3
  82. package/dist/git-cli/providers/commits.js.map +1 -1
  83. package/dist/git-cli/providers/config.d.ts +27 -0
  84. package/dist/git-cli/providers/config.d.ts.map +1 -1
  85. package/dist/git-cli/providers/config.js +31 -6
  86. package/dist/git-cli/providers/config.js.map +1 -1
  87. package/dist/git-cli/providers/graph.d.ts +8 -0
  88. package/dist/git-cli/providers/graph.d.ts.map +1 -1
  89. package/dist/git-cli/providers/graph.js +85 -6
  90. package/dist/git-cli/providers/graph.js.map +1 -1
  91. package/dist/git-cli/providers/maintenance.d.ts +306 -0
  92. package/dist/git-cli/providers/maintenance.d.ts.map +1 -0
  93. package/dist/git-cli/providers/maintenance.js +2129 -0
  94. package/dist/git-cli/providers/maintenance.js.map +1 -0
  95. package/dist/git-cli/providers/operations.d.ts +1 -0
  96. package/dist/git-cli/providers/operations.d.ts.map +1 -1
  97. package/dist/git-cli/providers/operations.js +8 -0
  98. package/dist/git-cli/providers/operations.js.map +1 -1
  99. package/dist/git-cli/providers/pausedOperations.d.ts +1 -0
  100. package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
  101. package/dist/git-cli/providers/pausedOperations.js +1 -1
  102. package/dist/git-cli/providers/pausedOperations.js.map +1 -1
  103. package/dist/git-cli/providers/tags.d.ts +3 -0
  104. package/dist/git-cli/providers/tags.d.ts.map +1 -1
  105. package/dist/git-cli/providers/tags.js +23 -1
  106. package/dist/git-cli/providers/tags.js.map +1 -1
  107. package/dist/plus/agents/agentCapabilities.d.ts +77 -0
  108. package/dist/plus/agents/agentCapabilities.d.ts.map +1 -0
  109. package/dist/plus/agents/agentCapabilities.js +197 -0
  110. package/dist/plus/agents/agentCapabilities.js.map +1 -0
  111. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +77 -13
  112. package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
  113. package/dist/plus/agents/providers/claudeCodeTranscript.js +263 -55
  114. package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
  115. package/dist/plus/agents/providers/{claudeCodeProvider.d.ts → gkAgentProvider.d.ts} +52 -19
  116. package/dist/plus/agents/providers/gkAgentProvider.d.ts.map +1 -0
  117. package/dist/plus/agents/providers/{claudeCodeProvider.js → gkAgentProvider.js} +935 -262
  118. package/dist/plus/agents/providers/gkAgentProvider.js.map +1 -0
  119. package/dist/plus/agents/types.d.ts +113 -35
  120. package/dist/plus/agents/types.d.ts.map +1 -1
  121. package/dist/plus/agents/types.js +7 -4
  122. package/dist/plus/agents/types.js.map +1 -1
  123. package/dist/plus/ai/models/promptTemplates.d.ts +1 -1
  124. package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
  125. package/dist/plus/ai/prompts.d.ts +4 -0
  126. package/dist/plus/ai/prompts.d.ts.map +1 -1
  127. package/dist/plus/ai/prompts.js +59 -4
  128. package/dist/plus/ai/prompts.js.map +1 -1
  129. package/dist/plus/git-github/api/github.d.ts +44 -1
  130. package/dist/plus/git-github/api/github.d.ts.map +1 -1
  131. package/dist/plus/git-github/api/github.js +318 -25
  132. package/dist/plus/git-github/api/github.js.map +1 -1
  133. package/dist/plus/git-github/api/issueSearchQuery.d.ts +13 -0
  134. package/dist/plus/git-github/api/issueSearchQuery.d.ts.map +1 -1
  135. package/dist/plus/git-github/api/issueSearchQuery.js +41 -0
  136. package/dist/plus/git-github/api/issueSearchQuery.js.map +1 -1
  137. package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
  138. package/dist/plus/git-github/providers/github/blame.js +2 -1
  139. package/dist/plus/git-github/providers/github/blame.js.map +1 -1
  140. package/dist/plus/integrations/integrationService.d.ts +11 -0
  141. package/dist/plus/integrations/integrationService.d.ts.map +1 -1
  142. package/dist/plus/integrations/integrationService.js +4 -0
  143. package/dist/plus/integrations/integrationService.js.map +1 -1
  144. package/dist/plus/integrations/manager.d.ts +26 -0
  145. package/dist/plus/integrations/manager.d.ts.map +1 -1
  146. package/dist/plus/integrations/models/gitHostIntegration.d.ts +31 -0
  147. package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
  148. package/dist/plus/integrations/models/gitHostIntegration.js +31 -0
  149. package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
  150. package/dist/plus/integrations/models/integration.d.ts +1 -1
  151. package/dist/plus/integrations/models/integration.d.ts.map +1 -1
  152. package/dist/plus/integrations/models/integration.js.map +1 -1
  153. package/dist/plus/integrations/providers/github.d.ts +9 -0
  154. package/dist/plus/integrations/providers/github.d.ts.map +1 -1
  155. package/dist/plus/integrations/providers/github.js +7 -0
  156. package/dist/plus/integrations/providers/github.js.map +1 -1
  157. package/dist/plus/integrations/reads/broaden.d.ts +47 -10
  158. package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
  159. package/dist/plus/integrations/reads/broaden.js +144 -33
  160. package/dist/plus/integrations/reads/broaden.js.map +1 -1
  161. package/dist/plus/integrations/reads/filters.d.ts +18 -0
  162. package/dist/plus/integrations/reads/filters.d.ts.map +1 -1
  163. package/dist/plus/integrations/reads/filters.js +37 -1
  164. package/dist/plus/integrations/reads/filters.js.map +1 -1
  165. package/dist/plus/integrations/reads/issueBatch.d.ts +51 -0
  166. package/dist/plus/integrations/reads/issueBatch.d.ts.map +1 -0
  167. package/dist/plus/integrations/reads/issueBatch.js +91 -0
  168. package/dist/plus/integrations/reads/issueBatch.js.map +1 -0
  169. package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -1
  170. package/dist/plus/integrations/reads/sweeps.js +5 -3
  171. package/dist/plus/integrations/reads/sweeps.js.map +1 -1
  172. package/dist/utils/promiseCache.d.ts +19 -0
  173. package/dist/utils/promiseCache.d.ts.map +1 -1
  174. package/dist/utils/promiseCache.js +30 -0
  175. package/dist/utils/promiseCache.js.map +1 -1
  176. package/dist/utils/resourceUsage.d.ts +5 -0
  177. package/dist/utils/resourceUsage.d.ts.map +1 -0
  178. package/dist/utils/resourceUsage.js +2 -0
  179. package/dist/utils/resourceUsage.js.map +1 -0
  180. package/dist/utils/string.d.ts +12 -0
  181. package/dist/utils/string.d.ts.map +1 -1
  182. package/dist/utils/string.js +36 -1
  183. package/dist/utils/string.js.map +1 -1
  184. package/docs/integrations.md +29 -25
  185. package/docs/kepler-read-api-parity.md +12 -4
  186. package/package.json +11 -3
  187. package/src/git/cache.ts +36 -0
  188. package/src/git/context.ts +11 -0
  189. package/src/git/errors.ts +13 -1
  190. package/src/git/features.ts +51 -0
  191. package/src/git/gitHealth.ts +522 -0
  192. package/src/git/models/search.ts +19 -4
  193. package/src/git/parsers/diffParser.ts +27 -4
  194. package/src/git/providers/config.ts +42 -1
  195. package/src/git/providers/graph.ts +12 -0
  196. package/src/git/providers/maintenance.ts +224 -0
  197. package/src/git/providers/operations.ts +10 -0
  198. package/src/git/providers/pausedOperations.ts +3 -0
  199. package/src/git/providers/provider.ts +2 -0
  200. package/src/git/providers/tags.ts +1 -0
  201. package/src/git/repositoryService.ts +1 -0
  202. package/src/git/run.types.ts +8 -0
  203. package/src/git/service.ts +3 -0
  204. package/src/git/utils/search.utils.ts +129 -5
  205. package/src/git/watching/watchService.ts +10 -0
  206. package/src/git-cli/cliGitProvider.ts +25 -0
  207. package/src/git-cli/exec/git.ts +120 -6
  208. package/src/git-cli/exec/gitQueue.ts +19 -17
  209. package/src/git-cli/parsers/logParser.ts +4 -1
  210. package/src/git-cli/providers/blame.ts +3 -8
  211. package/src/git-cli/providers/branches.ts +28 -8
  212. package/src/git-cli/providers/commits.ts +34 -2
  213. package/src/git-cli/providers/config.ts +38 -6
  214. package/src/git-cli/providers/graph.ts +107 -7
  215. package/src/git-cli/providers/maintenance.ts +2599 -0
  216. package/src/git-cli/providers/operations.ts +11 -0
  217. package/src/git-cli/providers/pausedOperations.ts +7 -2
  218. package/src/git-cli/providers/tags.ts +36 -1
  219. package/src/plus/agents/agentCapabilities.ts +286 -0
  220. package/src/plus/agents/providers/claudeCodeTranscript.ts +313 -58
  221. package/src/plus/agents/providers/{claudeCodeProvider.ts → gkAgentProvider.ts} +1123 -277
  222. package/src/plus/agents/types.ts +137 -40
  223. package/src/plus/ai/models/promptTemplates.ts +1 -1
  224. package/src/plus/ai/prompts.ts +62 -4
  225. package/src/plus/git-github/api/github.ts +353 -24
  226. package/src/plus/git-github/api/issueSearchQuery.ts +49 -1
  227. package/src/plus/git-github/providers/github/blame.ts +2 -1
  228. package/src/plus/integrations/integrationService.ts +15 -0
  229. package/src/plus/integrations/manager.ts +26 -0
  230. package/src/plus/integrations/models/gitHostIntegration.ts +48 -0
  231. package/src/plus/integrations/models/integration.ts +1 -0
  232. package/src/plus/integrations/providers/github.ts +18 -0
  233. package/src/plus/integrations/reads/broaden.ts +282 -70
  234. package/src/plus/integrations/reads/filters.ts +39 -1
  235. package/src/plus/integrations/reads/issueBatch.ts +197 -0
  236. package/src/plus/integrations/reads/sweeps.ts +19 -12
  237. package/src/utils/promiseCache.ts +43 -0
  238. package/src/utils/resourceUsage.ts +5 -0
  239. package/src/utils/string.ts +38 -1
  240. package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +0 -1
  241. package/dist/plus/agents/providers/claudeCodeProvider.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { createReadStream } from 'fs';
2
- import { open, readdir, stat } from 'fs/promises';
2
+ import { open, readdir, readFile, stat } from 'fs/promises';
3
3
  import { homedir } from 'os';
4
- import { basename, join } from 'path';
4
+ import { basename, dirname, join } from 'path';
5
5
  import { createInterface } from 'readline';
6
6
  /** Bytes read from each end of a transcript when summarizing. Titles and prompts cluster at both
7
7
  * extremes, and files run to tens of MB, so reading whole files is not an option. */
@@ -10,12 +10,12 @@ const summaryWindowSize = 64 * 1024;
10
10
  * Time-based rather than dir-mtime-based because appends move file mtimes without touching the dir. */
11
11
  const listingCacheTtlMs = 10 * 1000;
12
12
  /** Summaries are keyed by session, and a busy project has hundreds — unlike the per-live-session
13
- * title cache, this needs a ceiling. */
14
- const summaryCacheLimit = 200;
13
+ * title cache, this needs a ceiling. Sized to hold a whole junk-heavy store: the listing scan runs
14
+ * to exhaustion, and each entry is tiny (a path plus a few short strings), so a cap below the
15
+ * store's size would evict-and-re-read the junk tail on every listing instead of paying its
16
+ * windowed reads once. */
17
+ const summaryCacheLimit = 1000;
15
18
  const defaultListLimit = 50;
16
- /** How far past `limit` the top-up scan may read when transcripts turn out empty — a junk-filled
17
- * store reads at most `limit + listScanSlack` summaries, staying well under {@link summaryCacheLimit}. */
18
- const listScanSlack = 25;
19
19
  /**
20
20
  * Reads Claude Code transcript JSONL files at `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl`
21
21
  * to surface `custom-title`, `ai-title`, and `agent-name` entries as fallback session names.
@@ -32,9 +32,32 @@ export class ClaudeCodeTranscriptReader {
32
32
  _cache = new Map();
33
33
  _generations = new Map();
34
34
  _listings = new Map();
35
+ /** Transcript file names per project directory — the readdir behind both the plain listing and
36
+ * the by-id scan, which sweeps every project directory. */
37
+ _names = new Map();
38
+ /** Project directories under {@link getProjectsRoot}, re-scanned by every by-id recovery. */
39
+ _projectDirs;
35
40
  /** Insertion-ordered LRU — re-inserted on hit, oldest key evicted past {@link summaryCacheLimit}. */
36
41
  _summaries = new Map();
42
+ /** Resolved project path per transcript path, bounded like {@link _summaries}. */
43
+ _transcriptCwds = new Map();
37
44
  _nextGen = 0;
45
+ /** Bumped by {@link invalidateListings}; async listing scans capture it at entry and skip their
46
+ * cache write when it moved, so a stale in-flight result can't re-seed a just-cleared cache. */
47
+ _listingGen = 0;
48
+ /** Drops the directory-listing caches (entries, names, project dirs) so the next listing re-reads
49
+ * the store. Called when a session ends or is removed: its transcript may have appeared inside
50
+ * the TTL window, and a cached listing would hide the new file from the very fetch meant to
51
+ * surface it. Summary and cwd caches are keyed by file identity and stay valid, so they're kept.
52
+ * The generation bump makes any in-flight listing skip its own cache write — otherwise a scan
53
+ * started before the invalidation would re-seed the caches with pre-end results, freshly
54
+ * timestamped (same discipline as `resolve`'s per-session generations). */
55
+ invalidateListings() {
56
+ this._listingGen++;
57
+ this._listings.clear();
58
+ this._names.clear();
59
+ this._projectDirs = undefined;
60
+ }
38
61
  async resolve(sessionId, cwd) {
39
62
  const gen = ++this._nextGen;
40
63
  this._generations.set(sessionId, gen);
@@ -84,9 +107,9 @@ export class ClaudeCodeTranscriptReader {
84
107
  this._generations.delete(sessionId);
85
108
  }
86
109
  /**
87
- * One-shot read for a *completed* (terminal, static) session: extracts the transcript titles plus
110
+ * One-shot read for an *ended* (terminal, static) session: extracts the transcript titles plus
88
111
  * the first and last user prompts. Unlike {@link resolve}, it bypasses the tail cache — a finished
89
- * transcript never grows, so it's read once on demand (when a completed row is opened) and the
112
+ * transcript never grows, so it's read once on demand (when an ended row is opened) and the
90
113
  * result applied to the session. `last-prompt` entries carry the prompt as of that point; the first
91
114
  * one bearing a value is the session's opening prompt, the last its most recent. Returns `undefined`
92
115
  * when no transcript is found (archived/purged) — the caller keeps whatever durable-store fields it
@@ -98,7 +121,7 @@ export class ClaudeCodeTranscriptReader {
98
121
  * past any fixed head window, and a windowed read would then mistake a later prompt for the first,
99
122
  * poisoning the derived session name.
100
123
  */
101
- async resolveCompletedDetails(sessionId, cwd) {
124
+ async resolveEndedDetails(sessionId, cwd) {
102
125
  const path = await this.locateTranscript(sessionId, cwd);
103
126
  if (path == null)
104
127
  return undefined;
@@ -138,16 +161,17 @@ export class ClaudeCodeTranscriptReader {
138
161
  }
139
162
  /**
140
163
  * Lists the transcripts of sessions whose working directory is `cwd`, most-recently-active first,
141
- * summarizing until `limit` summarizable transcripts are found (bounded by a small scan slack)
142
- * not just the first `limit` on disk, since junk transcripts (dropped below) would otherwise starve
143
- * the result. `excludeSessionIds` is skipped before `limit` applies, and excluded entries are also
144
- * dropped from `total` — they're already shown elsewhere (e.g. as live sessions), so a caller's
145
- * "N of M" count must not double-count them.
164
+ * summarizing until `limit` summarizable transcripts are found not just the first `limit` on
165
+ * disk, since junk transcripts (dropped below) would otherwise starve the result.
166
+ * `excludeSessionIds` is skipped before `limit` applies, and excluded entries are also dropped
167
+ * from `total` — they're already shown elsewhere (e.g. as live sessions), so a caller's "N of M"
168
+ * count must not double-count them.
146
169
  *
147
- * Claude homes a transcript under the directory encoding the session's *current* cwd, migrating the
148
- * file if the session `cd`s — so this directory is exactly the set `claude --resume <id>` can find
149
- * when invoked from `cwd`, and every entry is resumable from there. The transcripts' own recorded
150
- * `cwd` is per-message and lags the move, so it must NOT be used to filter; the directory decides.
170
+ * Claude homes a transcript under the directory encoding the cwd from which the session started.
171
+ * That directory is authoritative for where `claude --resume <id>` can find the transcript, but
172
+ * Claude does not reliably move it when the session later changes worktrees. Callers that have a
173
+ * durable session-to-worktree association can recover those moved sessions with
174
+ * {@link listSessionsByIds}; this method intentionally remains the cheap legacy directory listing.
151
175
  *
152
176
  * Discovery (readdir + stat) covers the whole directory and is cheap; summarizing is not, so it's
153
177
  * capped. Entries whose summary yields neither a title nor a prompt are dropped — those are aborted
@@ -162,33 +186,45 @@ export class ClaudeCodeTranscriptReader {
162
186
  return { sessions: [], total: 0 };
163
187
  const limit = options?.limit ?? defaultListLimit;
164
188
  const exclude = options?.excludeSessionIds;
165
- const candidates = exclude?.size ? entries.filter(e => !exclude.has(e.sessionId)) : entries;
166
- const sessions = [];
167
- const pushSummaries = (settled) => {
168
- for (const result of settled) {
169
- if (result.status !== 'fulfilled')
170
- continue;
171
- const summary = result.value;
172
- if (summary == null || !hasSummaryContent(summary))
173
- continue;
174
- sessions.push(summary);
175
- }
176
- };
177
- // limit <= 0 means "no ceiling" summarize every candidate.
178
- if (limit <= 0) {
179
- pushSummaries(await Promise.allSettled(candidates.map(e => this.resolveSummary(e))));
180
- return { sessions: sessions, total: candidates.length };
181
- }
182
- const ceiling = Math.min(candidates.length, limit + listScanSlack);
183
- let cursor = 0;
184
- while (sessions.length < limit && cursor < ceiling) {
185
- // Clamped to the remaining ceiling budget too — a run of junk entries must not let a
186
- // need-sized batch read past `limit + listScanSlack`.
187
- const batch = candidates.slice(cursor, cursor + Math.min(limit - sessions.length, ceiling - cursor));
188
- cursor += batch.length;
189
- pushSummaries(await Promise.allSettled(batch.map(e => this.resolveSummary(e))));
190
- }
191
- return { sessions: sessions, total: candidates.length };
189
+ // Zero-byte transcripts can never summarize skip the read entirely and keep them out of
190
+ // `total`, which otherwise counts sessions no `limit` could ever surface.
191
+ const candidates = entries.filter(e => e.size > 0 && exclude?.has(e.sessionId) !== true);
192
+ const { sessions, exhausted } = await this.collectSessions(candidates, limit, async (entry) => {
193
+ const summary = await this.resolveSummary(entry);
194
+ return summary != null && hasSummaryContent(summary) ? summary : undefined;
195
+ });
196
+ // An exhausted scan proved the exact valid count; otherwise unscanned candidates keep
197
+ // `total` an upper bound so paging knows more MAY exist.
198
+ return { sessions: sessions, total: exhausted ? sessions.length : candidates.length };
199
+ }
200
+ /**
201
+ * Finds a known set of session ids across every Claude project directory except `excludeCwd`'s.
202
+ * This is the recovery path for durable CLI records whose worktree changed after Claude chose the
203
+ * transcript's project directory. The caller supplies the association; transcript contents alone
204
+ * are deliberately not used to guess which current worktree owns an arbitrary old session.
205
+ *
206
+ * Each result carries the project path encoded by the directory that actually holds the transcript,
207
+ * so resuming it does not repeat discovery from the wrong worktree. Duplicate ids are counted once,
208
+ * with the newest transcript winning.
209
+ */
210
+ async listSessionsByIds(sessionIds, options) {
211
+ if (sessionIds.size === 0)
212
+ return { sessions: [], total: 0 };
213
+ const excludeDir = await this.resolveProjectDir(options?.excludeCwd);
214
+ // Same zero-byte drop as `listSessions` — see the rationale there.
215
+ const entries = (await this.listEntriesByIds(sessionIds, excludeDir)).filter(e => e.size > 0);
216
+ if (entries.length === 0)
217
+ return { sessions: [], total: 0 };
218
+ const limit = options?.limit ?? defaultListLimit;
219
+ const { sessions, exhausted } = await this.collectSessions(entries, limit, async (entry) => {
220
+ const summary = await this.resolveSummary(entry);
221
+ if (summary == null || !hasSummaryContent(summary))
222
+ return undefined;
223
+ const cwd = await this.resolveTranscriptCwd(entry);
224
+ return cwd != null ? { ...summary, cwd: cwd } : undefined;
225
+ });
226
+ // Exhausted scans prove the exact count — see `listSessions`.
227
+ return { sessions: sessions, total: exhausted ? sessions.length : entries.length };
192
228
  }
193
229
  /** Discovers every transcript in `dir`, newest first. The directory also holds one sibling
194
230
  * subdirectory per session (`<uuid>/subagents`, `<uuid>/tool-results`), so entries must be filtered
@@ -197,14 +233,24 @@ export class ClaudeCodeTranscriptReader {
197
233
  const cached = this._listings.get(dir);
198
234
  if (cached != null && Date.now() - cached.resolvedAt < listingCacheTtlMs)
199
235
  return cached.entries;
236
+ const gen = this._listingGen;
200
237
  let names;
201
238
  try {
202
- const dirents = await readdir(dir, { withFileTypes: true });
203
- names = dirents.filter(d => d.isFile() && d.name.endsWith('.jsonl')).map(d => d.name);
239
+ names = await this.listTranscriptNames(dir);
204
240
  }
205
241
  catch {
206
242
  return [];
207
243
  }
244
+ const entries = (await this.statEntries(dir, names)).sort((a, b) => b.lastActivityMs - a.lastActivityMs);
245
+ if (gen === this._listingGen) {
246
+ this._listings.set(dir, { entries: entries, resolvedAt: Date.now() });
247
+ }
248
+ return entries;
249
+ }
250
+ /** Stats `names` in `dir`, dropping the ones that failed — a transcript can vanish (or be
251
+ * archived) between the readdir and the stat. Unsorted; callers order as they need.
252
+ * Protected (like {@link readSummary}) so tests can interleave against the listing flow. */
253
+ async statEntries(dir, names) {
208
254
  const settled = await Promise.allSettled(names.map(async (name) => {
209
255
  const path = join(dir, name);
210
256
  const stats = await stat(path);
@@ -215,17 +261,121 @@ export class ClaudeCodeTranscriptReader {
215
261
  size: stats.size,
216
262
  };
217
263
  }));
218
- const entries = settled
219
- .filter(r => r.status === 'fulfilled')
220
- .map(r => r.value)
221
- .sort((a, b) => b.lastActivityMs - a.lastActivityMs);
222
- this._listings.set(dir, { entries: entries, resolvedAt: Date.now() });
223
- return entries;
264
+ return settled.filter(r => r.status === 'fulfilled').map(r => r.value);
265
+ }
266
+ /** The `.jsonl` file names in `dir`, cached for {@link listingCacheTtlMs}. Failures propagate
267
+ * uncached: an unreadable directory means different things to different callers, and the next
268
+ * call must be free to get a real answer. */
269
+ async listTranscriptNames(dir) {
270
+ const cached = this._names.get(dir);
271
+ if (cached != null && Date.now() - cached.resolvedAt < listingCacheTtlMs)
272
+ return cached.names;
273
+ const gen = this._listingGen;
274
+ const dirents = await readdir(dir, { withFileTypes: true });
275
+ const names = dirents.filter(d => d.isFile() && d.name.endsWith('.jsonl')).map(d => d.name);
276
+ if (gen === this._listingGen) {
277
+ this._names.set(dir, { names: names, resolvedAt: Date.now() });
278
+ }
279
+ return names;
280
+ }
281
+ /** Every project directory under the projects root, cached for {@link listingCacheTtlMs} — a
282
+ * by-id recovery sweeps all of them, once per queried worktree. */
283
+ async listProjectDirs() {
284
+ const cached = this._projectDirs;
285
+ if (cached != null && Date.now() - cached.resolvedAt < listingCacheTtlMs)
286
+ return cached.dirs;
287
+ const gen = this._listingGen;
288
+ const root = this.getProjectsRoot();
289
+ const dirents = await readdir(root, { withFileTypes: true });
290
+ const dirs = dirents.filter(d => d.isDirectory()).map(d => join(root, d.name));
291
+ if (gen === this._listingGen) {
292
+ this._projectDirs = { dirs: dirs, resolvedAt: Date.now() };
293
+ }
294
+ return dirs;
295
+ }
296
+ /** Scans project directory names once, then stats only requested transcript ids. */
297
+ async listEntriesByIds(sessionIds, excludeDir) {
298
+ let idsToFind = sessionIds;
299
+ if (excludeDir != null) {
300
+ try {
301
+ const names = await this.listTranscriptNames(excludeDir);
302
+ const idsInExcludedDir = new Set(names.map(name => basename(name, '.jsonl')));
303
+ idsToFind = new Set([...sessionIds].filter(id => !idsInExcludedDir.has(id)));
304
+ if (idsToFind.size === 0)
305
+ return [];
306
+ }
307
+ catch {
308
+ // If the exact directory can't be inspected, don't risk returning a duplicate from a
309
+ // stale transcript copy elsewhere. The ordinary listing still owns the exact path.
310
+ return [];
311
+ }
312
+ }
313
+ let dirs;
314
+ try {
315
+ dirs = await this.listProjectDirs();
316
+ }
317
+ catch (ex) {
318
+ if (!isMissingEntry(ex))
319
+ throw ex;
320
+ return [];
321
+ }
322
+ const settledDirs = await Promise.allSettled(dirs.map(async (dir) => {
323
+ if (dir === excludeDir)
324
+ return [];
325
+ const names = (await this.listTranscriptNames(dir)).filter(name => idsToFind.has(basename(name, '.jsonl')));
326
+ return this.statEntries(dir, names);
327
+ }));
328
+ const bySessionId = new Map();
329
+ for (const settledDir of settledDirs) {
330
+ if (settledDir.status !== 'fulfilled')
331
+ continue;
332
+ for (const entry of settledDir.value) {
333
+ const existing = bySessionId.get(entry.sessionId);
334
+ if (existing == null || entry.lastActivityMs > existing.lastActivityMs) {
335
+ bySessionId.set(entry.sessionId, entry);
336
+ }
337
+ }
338
+ }
339
+ return [...bySessionId.values()].sort((a, b) => b.lastActivityMs - a.lastActivityMs);
340
+ }
341
+ /** `exhausted` reports whether every candidate was scanned — an exhausted scan has proven the
342
+ * exact valid count, so callers can report it instead of an upper bound that would keep a
343
+ * "Show More" affordance alive with nothing left to show. */
344
+ async collectSessions(candidates, limit, resolve) {
345
+ const sessions = [];
346
+ const pushResolved = (settled) => {
347
+ for (const result of settled) {
348
+ if (result.status !== 'fulfilled' || result.value == null)
349
+ continue;
350
+ sessions.push(result.value);
351
+ }
352
+ };
353
+ // limit <= 0 means "no ceiling" — resolve every candidate.
354
+ if (limit <= 0) {
355
+ pushResolved(await Promise.allSettled(candidates.map(resolve)));
356
+ return { sessions: sessions, exhausted: true };
357
+ }
358
+ // Scans until `limit` results or the candidates run out — a fixed scan ceiling would let a run
359
+ // of junk transcripts hide every older real session behind it (and the picker then claims there
360
+ // are none at all). The cost stays bounded: callers pre-drop zero-byte candidates read-free, and
361
+ // a junk summary is windowed, tiny, and LRU-cached, so the sweep is paid in syscalls, once.
362
+ let cursor = 0;
363
+ while (sessions.length < limit && cursor < candidates.length) {
364
+ // Batched by remaining need so a hit-rich head stops the scan early instead of resolving
365
+ // every candidate up front.
366
+ const batch = candidates.slice(cursor, cursor + (limit - sessions.length));
367
+ cursor += batch.length;
368
+ pushResolved(await Promise.allSettled(batch.map(resolve)));
369
+ }
370
+ return { sessions: sessions, exhausted: cursor >= candidates.length };
224
371
  }
225
372
  /** Summarizes one transcript, reusing the cached result while its mtime and size are unchanged. */
226
373
  async resolveSummary(entry) {
227
374
  const cached = this._summaries.get(entry.sessionId);
228
- if (cached != null && cached.mtimeMs === entry.lastActivityMs && cached.size === entry.size) {
375
+ if (cached != null &&
376
+ cached.path === entry.path &&
377
+ cached.mtimeMs === entry.lastActivityMs &&
378
+ cached.size === entry.size) {
229
379
  // Refresh recency for the LRU.
230
380
  this._summaries.delete(entry.sessionId);
231
381
  this._summaries.set(entry.sessionId, cached);
@@ -239,6 +389,7 @@ export class ClaudeCodeTranscriptReader {
239
389
  return undefined;
240
390
  }
241
391
  this._summaries.set(entry.sessionId, {
392
+ path: entry.path,
242
393
  mtimeMs: entry.lastActivityMs,
243
394
  size: entry.size,
244
395
  summary: summary,
@@ -251,6 +402,63 @@ export class ClaudeCodeTranscriptReader {
251
402
  }
252
403
  return summary;
253
404
  }
405
+ /** Recovers the project path represented by the transcript's containing directory. A resolved
406
+ * answer is cached: it's a line-scan of the whole transcript, and the directory holding a given
407
+ * path never changes. A miss isn't cached — a `cwd` line can still land on append. */
408
+ async resolveTranscriptCwd(entry) {
409
+ const cached = this._transcriptCwds.get(entry.path);
410
+ if (cached != null)
411
+ return cached;
412
+ const projectDir = dirname(entry.path);
413
+ const projectDirName = basename(projectDir);
414
+ const matchesProjectDir = (cwd) => encodeProjectDirName(cwd).toLowerCase() === projectDirName.toLowerCase();
415
+ try {
416
+ const index = JSON.parse(await readFile(join(projectDir, 'sessions-index.json'), 'utf8'));
417
+ if (Array.isArray(index.entries)) {
418
+ const indexed = index.entries.find(item => item?.sessionId === entry.sessionId);
419
+ if (typeof indexed?.projectPath === 'string' && matchesProjectDir(indexed.projectPath)) {
420
+ this.rememberTranscriptCwd(entry.path, indexed.projectPath);
421
+ return indexed.projectPath;
422
+ }
423
+ }
424
+ }
425
+ catch {
426
+ // The index is optional and can lag or be malformed. The transcript is authoritative below.
427
+ }
428
+ const rl = createInterface({ input: createReadStream(entry.path, { encoding: 'utf8' }), crlfDelay: Infinity });
429
+ try {
430
+ for await (const line of rl) {
431
+ if (!line.includes('"cwd"'))
432
+ continue;
433
+ let parsed;
434
+ try {
435
+ parsed = JSON.parse(line);
436
+ }
437
+ catch {
438
+ continue;
439
+ }
440
+ if (parsed.sessionId != null && parsed.sessionId !== entry.sessionId)
441
+ continue;
442
+ if (typeof parsed.cwd === 'string' && matchesProjectDir(parsed.cwd)) {
443
+ this.rememberTranscriptCwd(entry.path, parsed.cwd);
444
+ return parsed.cwd;
445
+ }
446
+ }
447
+ }
448
+ finally {
449
+ rl.close();
450
+ }
451
+ return undefined;
452
+ }
453
+ rememberTranscriptCwd(path, cwd) {
454
+ this._transcriptCwds.set(path, cwd);
455
+ if (this._transcriptCwds.size > summaryCacheLimit) {
456
+ const oldest = this._transcriptCwds.keys().next();
457
+ if (!oldest.done) {
458
+ this._transcriptCwds.delete(oldest.value);
459
+ }
460
+ }
461
+ }
254
462
  /**
255
463
  * Reads a summary from the first and last {@link summaryWindowSize} bytes of the transcript.
256
464
  *
@@ -1 +1 @@
1
- {"version":3,"file":"claudeCodeTranscript.js","sourceRoot":"","sources":["../../../../src/plus/agents/providers/claudeCodeTranscript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeCodeTranscript.js","sourceRoot":"","sources":["../../../../src/plus/agents/providers/claudeCodeTranscript.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
- import type { AgentProviderCallbacks, AgentSession, AgentSessionProvider, PermissionDecision, PermissionSuggestion, ResumableSessionsOptions, ResumableSessionsResult } from '../types.js';
1
+ import type { AgentProviderCallbacks, AgentSession, AgentSessionHistoryOptions, AgentSessionHistoryResult, AgentSessionProvider, AgentSessionResumeOutcome, AgentSessionResumeTarget, PermissionDecision, PermissionSuggestion } from '../types.js';
2
+ import type { EndedTranscriptDetails } from './claudeCodeTranscript.js';
2
3
  import { ClaudeCodeTranscriptReader } from './claudeCodeTranscript.js';
3
- export declare class ClaudeCodeProvider implements AgentSessionProvider {
4
+ export declare class GkAgentProvider implements AgentSessionProvider {
4
5
  private readonly callbacks;
5
- readonly id = "claudeCode";
6
- readonly name = "Claude Code";
6
+ /** Identifies the PROVIDER, not an agent: this one hosts every `gk ai hook` client GitLens has
7
+ * a descriptor for. A session's own agent identity lives on {@link AgentSession.providerId}
8
+ * (`claudeCode`, `codex`, …), sourced from {@link AgentCapabilities} — never from here. */
9
+ readonly id = "gkAgents";
10
+ readonly name = "Coding Agents";
7
11
  readonly icon = "robot";
12
+ readonly agentProviderIds: readonly string[];
8
13
  private readonly _onDidChangeSessions;
9
14
  readonly onDidChangeSessions: import("../../../utils/event.js").Event<void>;
10
15
  private _sessions;
@@ -29,33 +34,58 @@ export declare class ClaudeCodeProvider implements AgentSessionProvider {
29
34
  private _staleCheckTimer;
30
35
  /** When the last poll actually ran (gated or not) — paces the idle cadence above. */
31
36
  private _lastSyncAt;
32
- /** Whether Claude hooks are installed, pushed by the host via {@link setClaudeHooksInstalled}.
37
+ /** Whether agent hooks are installed, pushed by the host via {@link setHooksInstalled}.
33
38
  * Fail-open (`true`) until the first push lands so a fresh window with real hooks isn't
34
39
  * suppressed on its first ticks. Gates the reconciliation poll in {@link syncSessions}. */
35
- private _claudeHooksInstalled;
40
+ private _hooksInstalled;
36
41
  /** Whether the CLI supports `list-sessions --status` (and with it the durable ended-session
37
42
  * store). Optimistic until the poll's flagless fallback proves otherwise. When unsupported,
38
- * completed rows are untenable — no poll can ever confirm or archive one — so `SessionEnd`
39
- * reverts to removing the session and reconciliation drops any completed stragglers. */
43
+ * ended rows are untenable — no poll can ever confirm or archive one — so `SessionEnd`
44
+ * reverts to removing the session and reconciliation drops any ended stragglers. */
40
45
  private _statusFilterSupported;
41
46
  protected _transcriptReader: ClaudeCodeTranscriptReader;
47
+ private _terminalGeneration;
48
+ /** Ended-transcript detail results, cached forever per window — an ended transcript is
49
+ * immutable, so once resolved it never needs a second read. Keyed by session id. */
50
+ private readonly _sessionDetailsCache;
42
51
  constructor(callbacks: AgentProviderCallbacks);
43
52
  get sessions(): readonly AgentSession[];
53
+ get terminalGeneration(): number;
54
+ /** Single choke point for every terminal transition — a session ending, being removed on end
55
+ * (legacy path), being pruned, or a fresh ended record being discovered. Bumps the generation
56
+ * the host's history queries validate against (a transition mid-query means the answer may be
57
+ * missing a session) and drops the transcript listing caches, whose warm entries may predate
58
+ * the transcript the transition just left behind. */
59
+ private noteTerminalTransition;
44
60
  start(workspacePaths: string[]): void;
45
61
  stop(): void;
46
62
  sync(): Promise<void>;
47
63
  updateWorkspacePaths(workspacePaths: string[]): void;
48
- setClaudeHooksInstalled(installed: boolean): void;
49
- /** Reads past sessions out of Claude's transcript store. Claude homes each transcript under the
50
- * directory encoding the session's current cwd (migrating it if the session `cd`s), so the
51
- * directory for `cwd` is exactly what `claude --resume <id>` can find when invoked from there —
52
- * every session returned is resumable from `cwd`. */
53
- listResumableSessions(cwd: string, options?: ResumableSessionsOptions): Promise<ResumableSessionsResult>;
64
+ setHooksInstalled(installed: boolean): void;
65
+ /** Reads Claude history from its transcript store and tracked terminal records. The exact project
66
+ * directory preserves legacy sessions that predate the CLI's durable records. Recent ended
67
+ * records add an authoritative worktree-to-session association, so their ids are also recovered
68
+ * from other project directories when Claude left the transcript behind after a cwd/worktree
69
+ * move. A tracked record with no readable transcript remains visible and archivable, but does not
70
+ * advertise Resume. Archive filtering stays provider-local so ids from another harness cannot
71
+ * suppress Claude rows. `requireResume` drops the transcript-less tracked records, leaving only
72
+ * rows that carry a resume action — and a `total` counting only those. */
73
+ listSessionHistory(cwd: string, options?: AgentSessionHistoryOptions): Promise<AgentSessionHistoryResult>;
74
+ resumeSession(sessionId: string, cwd: string, target: AgentSessionResumeTarget, name?: string): Promise<AgentSessionResumeOutcome | false>;
54
75
  dispose(): void;
55
76
  [Symbol.dispose](): void;
56
77
  private ensureIpcServer;
57
78
  private handleSessionEvent;
58
79
  private sessionTag;
80
+ /** The owning agent's descriptor for a tracked session, resolved from the session's own
81
+ * `providerId`. `undefined` when the session isn't tracked (pruned/archived since) or carries a
82
+ * `providerId` the descriptor table doesn't know — callers pick their own fallback rather than
83
+ * silently assuming Claude Code. */
84
+ private getSessionCapabilities;
85
+ /** Whether the session's agent leaves a transcript on disk for {@link ClaudeCodeTranscriptReader}
86
+ * to tail. Fails OPEN when no descriptor resolves, so an unknown/absent `providerId` can never
87
+ * suppress the Claude path this reader exists for. */
88
+ private supportsTranscripts;
59
89
  private getBookkeeping;
60
90
  /** Returns the active decay window in milliseconds — the cooldown between PostToolUse and
61
91
  * dropping the path from the bookkeeping. Reads through the host callback every time so a
@@ -174,8 +204,11 @@ export declare class ClaudeCodeProvider implements AgentSessionProvider {
174
204
  * `archived` status filter. */
175
205
  getArchivedSessionIds(): Promise<string[]>;
176
206
  private fetchArchivedSessionIds;
177
- resolveCompletedSessionDetails(sessionId: string): void;
178
- private applyCompletedTranscriptDetails;
207
+ resolveEndedSessionDetails(sessionId: string): void;
208
+ /** No `_sessions` gate, unlike {@link resolveEndedSessionDetails} — must work for a
209
+ * transcript-only id this window never tracked live (past-session-sheet callers). */
210
+ resolveSessionDetails(sessionId: string, cwd?: string): Promise<EndedTranscriptDetails | undefined>;
211
+ private applyEndedTranscriptDetails;
179
212
  private matchesWorkspace;
180
213
  private resolveWorkspacePath;
181
214
  private updateSessionWithPermission;
@@ -183,12 +216,12 @@ export declare class ClaudeCodeProvider implements AgentSessionProvider {
183
216
  private ensureSession;
184
217
  private resolveGitInfo;
185
218
  private resolveTranscriptTitles;
186
- /** Transitions the session at `index` to the terminal `completed` state in place: keeps the row,
219
+ /** Transitions the session at `index` to the terminal `ended` state in place: keeps the row,
187
220
  * stamps `endedAt` as its activity time, clears transient state (statusDetail, pendingPermission,
188
221
  * subagents), and tears down its bookkeeping/timers. Shared by the live `SessionEnd` path and the
189
222
  * poll backstop for a `SessionEnd` the live path missed. Does not fire change events — the caller
190
223
  * batches those. */
191
- private completeSession;
224
+ private endSession;
192
225
  private pruneDeadSessions;
193
226
  protected syncSessions(options?: {
194
227
  gate?: boolean;
@@ -207,4 +240,4 @@ export declare class ClaudeCodeProvider implements AgentSessionProvider {
207
240
  * one. Best-effort: swallows scan, JSON-parse errors. */
208
241
  notifyPeerOpenSession(workspacePath: string, sessionId: string): Promise<boolean>;
209
242
  }
210
- //# sourceMappingURL=claudeCodeProvider.d.ts.map
243
+ //# sourceMappingURL=gkAgentProvider.d.ts.map