@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.
- package/CHANGELOG.md +17 -1
- package/dist/git/cache.d.ts +4 -0
- package/dist/git/cache.d.ts.map +1 -1
- package/dist/git/cache.js +33 -0
- package/dist/git/cache.js.map +1 -1
- package/dist/git/context.d.ts +10 -0
- package/dist/git/context.d.ts.map +1 -1
- package/dist/git/context.js.map +1 -1
- package/dist/git/errors.d.ts +6 -3
- package/dist/git/errors.d.ts.map +1 -1
- package/dist/git/errors.js +9 -1
- package/dist/git/errors.js.map +1 -1
- package/dist/git/features.d.ts +1 -1
- package/dist/git/features.d.ts.map +1 -1
- package/dist/git/features.js +38 -0
- package/dist/git/features.js.map +1 -1
- package/dist/git/gitHealth.d.ts +153 -0
- package/dist/git/gitHealth.d.ts.map +1 -0
- package/dist/git/gitHealth.js +353 -0
- package/dist/git/gitHealth.js.map +1 -0
- package/dist/git/models/search.d.ts +6 -3
- package/dist/git/models/search.d.ts.map +1 -1
- package/dist/git/models/search.js +5 -1
- package/dist/git/models/search.js.map +1 -1
- package/dist/git/parsers/diffParser.d.ts +8 -2
- package/dist/git/parsers/diffParser.d.ts.map +1 -1
- package/dist/git/parsers/diffParser.js +27 -4
- package/dist/git/parsers/diffParser.js.map +1 -1
- package/dist/git/providers/config.d.ts +36 -3
- package/dist/git/providers/config.d.ts.map +1 -1
- package/dist/git/providers/graph.d.ts +9 -0
- package/dist/git/providers/graph.d.ts.map +1 -1
- package/dist/git/providers/maintenance.d.ts +222 -0
- package/dist/git/providers/maintenance.d.ts.map +1 -0
- package/dist/git/providers/maintenance.js +20 -0
- package/dist/git/providers/maintenance.js.map +1 -0
- package/dist/git/providers/operations.d.ts +10 -0
- package/dist/git/providers/operations.d.ts.map +1 -1
- package/dist/git/providers/pausedOperations.d.ts +3 -0
- package/dist/git/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git/providers/provider.d.ts +2 -0
- package/dist/git/providers/provider.d.ts.map +1 -1
- package/dist/git/providers/tags.d.ts +3 -0
- package/dist/git/providers/tags.d.ts.map +1 -1
- package/dist/git/repositoryService.d.ts +1 -0
- package/dist/git/repositoryService.d.ts.map +1 -1
- package/dist/git/repositoryService.js.map +1 -1
- package/dist/git/run.types.d.ts +8 -0
- package/dist/git/run.types.d.ts.map +1 -1
- package/dist/git/service.js +3 -0
- package/dist/git/service.js.map +1 -1
- package/dist/git/utils/search.utils.d.ts.map +1 -1
- package/dist/git/utils/search.utils.js +112 -5
- package/dist/git/utils/search.utils.js.map +1 -1
- package/dist/git/watching/watchService.d.ts +3 -0
- package/dist/git/watching/watchService.d.ts.map +1 -1
- package/dist/git/watching/watchService.js +8 -0
- package/dist/git/watching/watchService.js.map +1 -1
- package/dist/git-cli/cliGitProvider.d.ts +11 -0
- package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
- package/dist/git-cli/cliGitProvider.js +12 -0
- package/dist/git-cli/cliGitProvider.js.map +1 -1
- package/dist/git-cli/exec/git.d.ts +23 -1
- package/dist/git-cli/exec/git.d.ts.map +1 -1
- package/dist/git-cli/exec/git.js +83 -8
- package/dist/git-cli/exec/git.js.map +1 -1
- package/dist/git-cli/exec/gitQueue.d.ts +2 -0
- package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
- package/dist/git-cli/exec/gitQueue.js +19 -17
- package/dist/git-cli/exec/gitQueue.js.map +1 -1
- package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/logParser.js +4 -1
- package/dist/git-cli/parsers/logParser.js.map +1 -1
- package/dist/git-cli/providers/blame.d.ts.map +1 -1
- package/dist/git-cli/providers/blame.js +4 -7
- package/dist/git-cli/providers/blame.js.map +1 -1
- package/dist/git-cli/providers/branches.d.ts.map +1 -1
- package/dist/git-cli/providers/branches.js +13 -3
- package/dist/git-cli/providers/branches.js.map +1 -1
- package/dist/git-cli/providers/commits.d.ts.map +1 -1
- package/dist/git-cli/providers/commits.js +34 -3
- package/dist/git-cli/providers/commits.js.map +1 -1
- package/dist/git-cli/providers/config.d.ts +27 -0
- package/dist/git-cli/providers/config.d.ts.map +1 -1
- package/dist/git-cli/providers/config.js +31 -6
- package/dist/git-cli/providers/config.js.map +1 -1
- package/dist/git-cli/providers/graph.d.ts +8 -0
- package/dist/git-cli/providers/graph.d.ts.map +1 -1
- package/dist/git-cli/providers/graph.js +85 -6
- package/dist/git-cli/providers/graph.js.map +1 -1
- package/dist/git-cli/providers/maintenance.d.ts +306 -0
- package/dist/git-cli/providers/maintenance.d.ts.map +1 -0
- package/dist/git-cli/providers/maintenance.js +2129 -0
- package/dist/git-cli/providers/maintenance.js.map +1 -0
- package/dist/git-cli/providers/operations.d.ts +1 -0
- package/dist/git-cli/providers/operations.d.ts.map +1 -1
- package/dist/git-cli/providers/operations.js +8 -0
- package/dist/git-cli/providers/operations.js.map +1 -1
- package/dist/git-cli/providers/pausedOperations.d.ts +1 -0
- package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git-cli/providers/pausedOperations.js +1 -1
- package/dist/git-cli/providers/pausedOperations.js.map +1 -1
- package/dist/git-cli/providers/tags.d.ts +3 -0
- package/dist/git-cli/providers/tags.d.ts.map +1 -1
- package/dist/git-cli/providers/tags.js +23 -1
- package/dist/git-cli/providers/tags.js.map +1 -1
- package/dist/plus/agents/agentCapabilities.d.ts +77 -0
- package/dist/plus/agents/agentCapabilities.d.ts.map +1 -0
- package/dist/plus/agents/agentCapabilities.js +197 -0
- package/dist/plus/agents/agentCapabilities.js.map +1 -0
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +77 -13
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.js +263 -55
- package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
- package/dist/plus/agents/providers/{claudeCodeProvider.d.ts → gkAgentProvider.d.ts} +52 -19
- package/dist/plus/agents/providers/gkAgentProvider.d.ts.map +1 -0
- package/dist/plus/agents/providers/{claudeCodeProvider.js → gkAgentProvider.js} +935 -262
- package/dist/plus/agents/providers/gkAgentProvider.js.map +1 -0
- package/dist/plus/agents/types.d.ts +113 -35
- package/dist/plus/agents/types.d.ts.map +1 -1
- package/dist/plus/agents/types.js +7 -4
- package/dist/plus/agents/types.js.map +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
- package/dist/plus/ai/prompts.d.ts +4 -0
- package/dist/plus/ai/prompts.d.ts.map +1 -1
- package/dist/plus/ai/prompts.js +59 -4
- package/dist/plus/ai/prompts.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +44 -1
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +318 -25
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/api/issueSearchQuery.d.ts +13 -0
- package/dist/plus/git-github/api/issueSearchQuery.d.ts.map +1 -1
- package/dist/plus/git-github/api/issueSearchQuery.js +41 -0
- package/dist/plus/git-github/api/issueSearchQuery.js.map +1 -1
- package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/blame.js +2 -1
- package/dist/plus/git-github/providers/github/blame.js.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +11 -0
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +4 -0
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/manager.d.ts +26 -0
- package/dist/plus/integrations/manager.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +31 -0
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +31 -0
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +1 -1
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +9 -0
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +7 -0
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/reads/broaden.d.ts +47 -10
- package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
- package/dist/plus/integrations/reads/broaden.js +144 -33
- package/dist/plus/integrations/reads/broaden.js.map +1 -1
- package/dist/plus/integrations/reads/filters.d.ts +18 -0
- package/dist/plus/integrations/reads/filters.d.ts.map +1 -1
- package/dist/plus/integrations/reads/filters.js +37 -1
- package/dist/plus/integrations/reads/filters.js.map +1 -1
- package/dist/plus/integrations/reads/issueBatch.d.ts +51 -0
- package/dist/plus/integrations/reads/issueBatch.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issueBatch.js +91 -0
- package/dist/plus/integrations/reads/issueBatch.js.map +1 -0
- package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -1
- package/dist/plus/integrations/reads/sweeps.js +5 -3
- package/dist/plus/integrations/reads/sweeps.js.map +1 -1
- package/dist/utils/promiseCache.d.ts +19 -0
- package/dist/utils/promiseCache.d.ts.map +1 -1
- package/dist/utils/promiseCache.js +30 -0
- package/dist/utils/promiseCache.js.map +1 -1
- package/dist/utils/resourceUsage.d.ts +5 -0
- package/dist/utils/resourceUsage.d.ts.map +1 -0
- package/dist/utils/resourceUsage.js +2 -0
- package/dist/utils/resourceUsage.js.map +1 -0
- package/dist/utils/string.d.ts +12 -0
- package/dist/utils/string.d.ts.map +1 -1
- package/dist/utils/string.js +36 -1
- package/dist/utils/string.js.map +1 -1
- package/docs/integrations.md +29 -25
- package/docs/kepler-read-api-parity.md +12 -4
- package/package.json +11 -3
- package/src/git/cache.ts +36 -0
- package/src/git/context.ts +11 -0
- package/src/git/errors.ts +13 -1
- package/src/git/features.ts +51 -0
- package/src/git/gitHealth.ts +522 -0
- package/src/git/models/search.ts +19 -4
- package/src/git/parsers/diffParser.ts +27 -4
- package/src/git/providers/config.ts +42 -1
- package/src/git/providers/graph.ts +12 -0
- package/src/git/providers/maintenance.ts +224 -0
- package/src/git/providers/operations.ts +10 -0
- package/src/git/providers/pausedOperations.ts +3 -0
- package/src/git/providers/provider.ts +2 -0
- package/src/git/providers/tags.ts +1 -0
- package/src/git/repositoryService.ts +1 -0
- package/src/git/run.types.ts +8 -0
- package/src/git/service.ts +3 -0
- package/src/git/utils/search.utils.ts +129 -5
- package/src/git/watching/watchService.ts +10 -0
- package/src/git-cli/cliGitProvider.ts +25 -0
- package/src/git-cli/exec/git.ts +120 -6
- package/src/git-cli/exec/gitQueue.ts +19 -17
- package/src/git-cli/parsers/logParser.ts +4 -1
- package/src/git-cli/providers/blame.ts +3 -8
- package/src/git-cli/providers/branches.ts +28 -8
- package/src/git-cli/providers/commits.ts +34 -2
- package/src/git-cli/providers/config.ts +38 -6
- package/src/git-cli/providers/graph.ts +107 -7
- package/src/git-cli/providers/maintenance.ts +2599 -0
- package/src/git-cli/providers/operations.ts +11 -0
- package/src/git-cli/providers/pausedOperations.ts +7 -2
- package/src/git-cli/providers/tags.ts +36 -1
- package/src/plus/agents/agentCapabilities.ts +286 -0
- package/src/plus/agents/providers/claudeCodeTranscript.ts +313 -58
- package/src/plus/agents/providers/{claudeCodeProvider.ts → gkAgentProvider.ts} +1123 -277
- package/src/plus/agents/types.ts +137 -40
- package/src/plus/ai/models/promptTemplates.ts +1 -1
- package/src/plus/ai/prompts.ts +62 -4
- package/src/plus/git-github/api/github.ts +353 -24
- package/src/plus/git-github/api/issueSearchQuery.ts +49 -1
- package/src/plus/git-github/providers/github/blame.ts +2 -1
- package/src/plus/integrations/integrationService.ts +15 -0
- package/src/plus/integrations/manager.ts +26 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +48 -0
- package/src/plus/integrations/models/integration.ts +1 -0
- package/src/plus/integrations/providers/github.ts +18 -0
- package/src/plus/integrations/reads/broaden.ts +282 -70
- package/src/plus/integrations/reads/filters.ts +39 -1
- package/src/plus/integrations/reads/issueBatch.ts +197 -0
- package/src/plus/integrations/reads/sweeps.ts +19 -12
- package/src/utils/promiseCache.ts +43 -0
- package/src/utils/resourceUsage.ts +5 -0
- package/src/utils/string.ts +38 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +0 -1
- 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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
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
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
-
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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 &&
|
|
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,
|
|
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
|
|
4
|
+
export declare class GkAgentProvider implements AgentSessionProvider {
|
|
4
5
|
private readonly callbacks;
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
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
|
|
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
|
-
*
|
|
39
|
-
* reverts to removing the session and reconciliation drops any
|
|
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
|
-
|
|
49
|
-
/** Reads
|
|
50
|
-
* directory
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
|
|
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
|
-
|
|
178
|
-
|
|
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 `
|
|
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
|
|
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=
|
|
243
|
+
//# sourceMappingURL=gkAgentProvider.d.ts.map
|