@gitkraken/core-gitlens 0.5.113 → 0.5.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -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 +355 -62
- 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/collectionMetadata.d.ts +2 -0
- package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -1
- package/dist/plus/integrations/collectionMetadata.js +17 -1
- package/dist/plus/integrations/collectionMetadata.js.map +1 -1
- package/dist/plus/integrations/context.d.ts +4 -1
- package/dist/plus/integrations/context.d.ts.map +1 -1
- package/dist/plus/integrations/index.d.ts +1 -0
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +20 -1
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +12 -4
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/manager.d.ts +48 -0
- package/dist/plus/integrations/manager.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +53 -26
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +123 -47
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +10 -1
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js +52 -19
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/models/issueCache.d.ts +16 -0
- package/dist/plus/integrations/models/issueCache.d.ts.map +1 -0
- package/dist/plus/integrations/models/issueCache.js +9 -0
- package/dist/plus/integrations/models/issueCache.js.map +1 -0
- package/dist/plus/integrations/models/issueReads.d.ts +13 -0
- package/dist/plus/integrations/models/issueReads.d.ts.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.d.ts +11 -13
- package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.js +15 -1
- package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.d.ts +3 -5
- package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.js +9 -8
- package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.d.ts +3 -5
- package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.js +2 -2
- package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.d.ts +3 -5
- package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.js +2 -1
- package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +12 -5
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +10 -3
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab.d.ts +3 -5
- package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab.js +2 -2
- package/dist/plus/integrations/providers/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/jira.d.ts +3 -7
- package/dist/plus/integrations/providers/jira.d.ts.map +1 -1
- package/dist/plus/integrations/providers/jira.js +35 -22
- package/dist/plus/integrations/providers/jira.js.map +1 -1
- package/dist/plus/integrations/providers/jiraIssueByKey.d.ts +7 -0
- package/dist/plus/integrations/providers/jiraIssueByKey.d.ts.map +1 -0
- package/dist/plus/integrations/providers/jiraIssueByKey.js +102 -0
- package/dist/plus/integrations/providers/jiraIssueByKey.js.map +1 -0
- package/dist/plus/integrations/providers/linear.d.ts +3 -7
- package/dist/plus/integrations/providers/linear.d.ts.map +1 -1
- package/dist/plus/integrations/providers/linear.js +23 -22
- package/dist/plus/integrations/providers/linear.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts +3 -1
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +10 -4
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/providers/providerErrors.d.ts +7 -0
- package/dist/plus/integrations/providers/providerErrors.d.ts.map +1 -0
- package/dist/plus/integrations/providers/providerErrors.js +91 -0
- package/dist/plus/integrations/providers/providerErrors.js.map +1 -0
- package/dist/plus/integrations/providers/providersApi.d.ts +3 -2
- package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -1
- package/dist/plus/integrations/providers/providersApi.js +18 -52
- package/dist/plus/integrations/providers/providersApi.js.map +1 -1
- package/dist/plus/integrations/providers/trello.d.ts +2 -7
- package/dist/plus/integrations/providers/trello.d.ts.map +1 -1
- package/dist/plus/integrations/providers/trello.js +3 -1
- package/dist/plus/integrations/providers/trello.js.map +1 -1
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts +2 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -1
- package/dist/plus/integrations/providers/utils/providerPaging.js +12 -7
- package/dist/plus/integrations/providers/utils/providerPaging.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/issueTracker.d.ts.map +1 -1
- package/dist/plus/integrations/reads/issueTracker.js +23 -17
- package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
- 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/plus/integrations/reads/trackerIssue.d.ts +21 -0
- package/dist/plus/integrations/reads/trackerIssue.d.ts.map +1 -0
- package/dist/plus/integrations/reads/trackerIssue.js +51 -0
- package/dist/plus/integrations/reads/trackerIssue.js.map +1 -0
- package/dist/plus/integrations/reads/warnings.d.ts +2 -15
- package/dist/plus/integrations/reads/warnings.d.ts.map +1 -1
- package/dist/plus/integrations/reads/warnings.js +19 -1
- package/dist/plus/integrations/reads/warnings.js.map +1 -1
- package/dist/plus/integrations/results.d.ts +4 -20
- package/dist/plus/integrations/results.d.ts.map +1 -1
- package/dist/plus/integrations/results.js.map +1 -1
- package/dist/utils/promise.d.ts +2 -0
- package/dist/utils/promise.d.ts.map +1 -1
- package/dist/utils/promise.js +11 -0
- package/dist/utils/promise.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 +48 -33
- package/docs/kepler-read-api-parity.md +25 -4
- package/package.json +12 -4
- 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 +404 -82
- 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/collectionMetadata.ts +23 -1
- package/src/plus/integrations/context.ts +1 -1
- package/src/plus/integrations/index.ts +1 -0
- package/src/plus/integrations/integrationService.ts +29 -4
- package/src/plus/integrations/manager.ts +48 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +165 -129
- package/src/plus/integrations/models/integration.ts +57 -22
- package/src/plus/integrations/models/issueCache.ts +29 -0
- package/src/plus/integrations/models/issueReads.ts +15 -0
- package/src/plus/integrations/models/issuesIntegration.ts +38 -8
- package/src/plus/integrations/providers/azureDevOps.ts +16 -13
- package/src/plus/integrations/providers/bitbucket-server.ts +4 -6
- package/src/plus/integrations/providers/bitbucket.ts +3 -4
- package/src/plus/integrations/providers/github.ts +23 -7
- package/src/plus/integrations/providers/gitlab.ts +4 -6
- package/src/plus/integrations/providers/jira.ts +52 -26
- package/src/plus/integrations/providers/jiraIssueByKey.ts +155 -0
- package/src/plus/integrations/providers/linear.ts +38 -25
- package/src/plus/integrations/providers/models.ts +17 -5
- package/src/plus/integrations/providers/providerErrors.ts +115 -0
- package/src/plus/integrations/providers/providersApi.ts +26 -68
- package/src/plus/integrations/providers/trello.ts +5 -4
- package/src/plus/integrations/providers/utils/providerPaging.ts +14 -7
- 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/issueTracker.ts +26 -24
- package/src/plus/integrations/reads/sweeps.ts +19 -12
- package/src/plus/integrations/reads/trackerIssue.ts +105 -0
- package/src/plus/integrations/reads/warnings.ts +23 -17
- package/src/plus/integrations/results.ts +4 -20
- package/src/utils/promise.ts +15 -0
- 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
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { AgentHookEvent } from './types.js';
|
|
2
|
+
/** `gk ai hook` client id — the id the GitKraken CLI stamps onto every relayed hook event. NOT
|
|
3
|
+
* the same namespace as {@link AgentProviderId}. */
|
|
4
|
+
export type AgentHookClientId = 'claude-code' | 'codex' | 'copilot' | 'opencode';
|
|
5
|
+
/** GitLens session provider id — what lands on `AgentSession.providerId` and in telemetry. NOT
|
|
6
|
+
* the same namespace as {@link AgentHookClientId}. */
|
|
7
|
+
export type AgentProviderId = 'claudeCode' | 'codex' | 'copilot' | 'opencode';
|
|
8
|
+
/** Icon-font glyph name used to badge the agent in the UI. Every member must name a `ThemeIcon` id
|
|
9
|
+
* that actually exists: either a codicon glyph name (`codicons-map.ts` is generated from VS Code's
|
|
10
|
+
* own font, so it isn't ours to extend) or a GitLens-contributed `gitlens-*` id from the `glicons`
|
|
11
|
+
* font, built from SVGs in `images/icons/`. An agent with no mark of its own uses `robot` — a name
|
|
12
|
+
* with no glyph renders as tofu, it does not fall back. */
|
|
13
|
+
export type AgentIconName = 'claude' | 'openai' | 'copilot' | 'gitlens-provider-opencode' | 'robot';
|
|
14
|
+
/**
|
|
15
|
+
* Flat, data-only description of one supported `gk ai hook` client. Mirrors how the GitKraken CLI
|
|
16
|
+
* models its own clients (`internal/actions/aihook/events.json` + `registry.go`) so the two stay
|
|
17
|
+
* comparable: the CLI relays each agent's native event and tool names verbatim, and this table is
|
|
18
|
+
* what translates them into the canonical (Claude Code) vocabulary.
|
|
19
|
+
*/
|
|
20
|
+
export interface AgentCapabilities {
|
|
21
|
+
/** The `gk ai hook` client id events arrive stamped with. */
|
|
22
|
+
readonly hookClientId: AgentHookClientId;
|
|
23
|
+
/** The GitLens session provider id — see {@link AgentProviderId}. */
|
|
24
|
+
readonly providerId: AgentProviderId;
|
|
25
|
+
readonly displayName: string;
|
|
26
|
+
readonly icon: AgentIconName;
|
|
27
|
+
/** Native event name → canonical event. Omitted when the agent's native names are already
|
|
28
|
+
* canonical. */
|
|
29
|
+
readonly eventMap?: Readonly<Record<string, AgentHookEvent>>;
|
|
30
|
+
/** Escape hatch for the cases where the native event name alone can't determine the canonical
|
|
31
|
+
* event and the payload has to be consulted. Tried BEFORE {@link eventMap}; returning
|
|
32
|
+
* `undefined` falls through to it. `hookInput` is the ROOT of the JSON the agent piped to
|
|
33
|
+
* `gk ai hook run` (what the CLI relays verbatim as `hookInput`), not a pre-unwrapped payload —
|
|
34
|
+
* navigate the agent's own nesting from there. */
|
|
35
|
+
readonly resolveEvent?: (nativeEvent: string, hookInput: Record<string, unknown> | undefined) => AgentHookEvent | undefined;
|
|
36
|
+
/** Native tool name → canonical (Claude Code) tool name. Omitted when already canonical. */
|
|
37
|
+
readonly toolNameMap?: Readonly<Record<string, string>>;
|
|
38
|
+
/** Native event names to register as non-blocking hooks at install time. `undefined` means
|
|
39
|
+
* "pass no event flags and let `gk` apply its own per-client defaults". */
|
|
40
|
+
readonly installEvents?: readonly string[];
|
|
41
|
+
/** Native event names to register as blocking hooks at install time. `undefined` means
|
|
42
|
+
* "pass no event flags and let `gk` apply its own per-client defaults". */
|
|
43
|
+
readonly installBlockingEvents?: readonly string[];
|
|
44
|
+
/** The agent can be installed with blocking hooks, so GitLens can answer a permission ask. */
|
|
45
|
+
readonly supportsBlockingPermissions: boolean;
|
|
46
|
+
/** The agent writes an on-disk transcript GitLens can tail for titles/prompts. */
|
|
47
|
+
readonly supportsTranscripts: boolean;
|
|
48
|
+
/** A past session can be resumed from its cwd. */
|
|
49
|
+
readonly supportsResume: boolean;
|
|
50
|
+
/** The agent multiplexes concurrent sessions in one process, so a pid does not identify a
|
|
51
|
+
* session (matches the CLI's `pidSharingClients`). */
|
|
52
|
+
readonly sharesPids: boolean;
|
|
53
|
+
/** Extra step the agent's own host requires before installed hooks will actually fire. Undefined
|
|
54
|
+
* when installing is sufficient. Not a computed state — we cannot detect whether the step has been
|
|
55
|
+
* done, so consumers surface this unconditionally whenever hooks are installed. */
|
|
56
|
+
readonly manualActivation?: string;
|
|
57
|
+
}
|
|
58
|
+
/** Exported because Claude Code is the wire default: an event with no `providerId` comes from a CLI
|
|
59
|
+
* too old to stamp one, which predates every other client. */
|
|
60
|
+
export declare const claudeCodeCapabilities: AgentCapabilities;
|
|
61
|
+
/** Every supported hook client, in registry order. */
|
|
62
|
+
export declare const agentCapabilities: readonly AgentCapabilities[];
|
|
63
|
+
/** Looks up capabilities by `gk ai hook` client id. Returns `undefined` for clients GitLens has no
|
|
64
|
+
* descriptor for (the CLI supports more than this table does). */
|
|
65
|
+
export declare function getAgentCapabilities(hookClientId: string): AgentCapabilities | undefined;
|
|
66
|
+
/** Looks up capabilities by GitLens session provider id. */
|
|
67
|
+
export declare function getAgentCapabilitiesByProviderId(providerId: string): AgentCapabilities | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Translates an agent's native hook event name into the canonical vocabulary: `resolveEvent` first,
|
|
70
|
+
* then `eventMap`, then an identity pass-through for names that are already canonical. Returns
|
|
71
|
+
* `undefined` for anything else — unknown strings are never assumed to be canonical events.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveCanonicalHookEvent(capabilities: AgentCapabilities, nativeEvent: string, hookInput?: Record<string, unknown>): AgentHookEvent | undefined;
|
|
74
|
+
/** Translates an agent's native tool name into the canonical (Claude Code) tool name, falling back
|
|
75
|
+
* to the input unchanged when the agent has no alias for it. */
|
|
76
|
+
export declare function resolveCanonicalToolName(capabilities: AgentCapabilities, nativeToolName: string): string;
|
|
77
|
+
//# sourceMappingURL=agentCapabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentCapabilities.d.ts","sourceRoot":"","sources":["../../../src/plus/agents/agentCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD;qDACqD;AACrD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjF;uDACuD;AACvD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9E;;;;4DAI4D;AAC5D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,2BAA2B,GAAG,OAAO,CAAC;AAEpG;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B;qBACiB;IACjB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D;;;;uDAImD;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAC1C,cAAc,GAAG,SAAS,CAAC;IAChC,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAExD;gFAC4E;IAC5E,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;gFAC4E;IAC5E,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnD,8FAA8F;IAC9F,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;2DACuD;IACvD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;wFAEoF;IACpF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACnC;AAkBD;+DAC+D;AAC/D,eAAO,MAAM,sBAAsB,EAAE,iBAYpC,CAAC;AA+IF,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,iBAAiB,EAKzD,CAAC;AAEF;mEACmE;AACnE,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAExF;AAED,4DAA4D;AAC5D,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAElG;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,cAAc,GAAG,SAAS,CAQ5B;AAED;iEACiE;AACjE,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAExG"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { canonicalBlockingHookEvents, canonicalNonBlockingHookEvents } from './types.js';
|
|
2
|
+
const canonicalHookEvents = new Set([...canonicalNonBlockingHookEvents, ...canonicalBlockingHookEvents]);
|
|
3
|
+
function asRecord(value) {
|
|
4
|
+
return typeof value === 'object' && value != null ? value : undefined;
|
|
5
|
+
}
|
|
6
|
+
function isCanonicalHookEvent(event) {
|
|
7
|
+
return canonicalHookEvents.has(event);
|
|
8
|
+
}
|
|
9
|
+
/** Claude Code's install set: its full native vocabulary minus the worktree events, which the CLI
|
|
10
|
+
* also skips by default (`skippedDefaultEvents` in its `events.json`) and GitLens has no use for. */
|
|
11
|
+
const claudeCodeInstallEvents = canonicalNonBlockingHookEvents.filter(e => e !== 'WorktreeCreate' && e !== 'WorktreeRemove');
|
|
12
|
+
/** Exported because Claude Code is the wire default: an event with no `providerId` comes from a CLI
|
|
13
|
+
* too old to stamp one, which predates every other client. */
|
|
14
|
+
export const claudeCodeCapabilities = {
|
|
15
|
+
hookClientId: 'claude-code',
|
|
16
|
+
providerId: 'claudeCode',
|
|
17
|
+
displayName: 'Claude Code',
|
|
18
|
+
icon: 'claude',
|
|
19
|
+
// No `eventMap`/`toolNameMap` — Claude Code's vocabulary IS the canonical one.
|
|
20
|
+
installEvents: claudeCodeInstallEvents,
|
|
21
|
+
installBlockingEvents: canonicalBlockingHookEvents,
|
|
22
|
+
supportsBlockingPermissions: true,
|
|
23
|
+
supportsTranscripts: true,
|
|
24
|
+
supportsResume: true,
|
|
25
|
+
sharesPids: false,
|
|
26
|
+
};
|
|
27
|
+
const codexCapabilities = {
|
|
28
|
+
hookClientId: 'codex',
|
|
29
|
+
providerId: 'codex',
|
|
30
|
+
displayName: 'Codex',
|
|
31
|
+
icon: 'openai',
|
|
32
|
+
// No `eventMap` — Codex emits canonical event names already.
|
|
33
|
+
toolNameMap: {
|
|
34
|
+
apply_patch: 'Edit',
|
|
35
|
+
// `update_plan` is deliberately NOT mapped to `ExitPlanMode`: it's a todo-list update, not a
|
|
36
|
+
// plan-approval ask, and mapping it would classify routine progress as a permission prompt.
|
|
37
|
+
// Left unmapped so it falls through to the generic tool path.
|
|
38
|
+
},
|
|
39
|
+
// `undefined` install sets: let `gk` apply its per-client defaults for now. Blocking permissions
|
|
40
|
+
// are supported by the client but not requested until a later phase.
|
|
41
|
+
supportsBlockingPermissions: true,
|
|
42
|
+
supportsTranscripts: false,
|
|
43
|
+
supportsResume: false,
|
|
44
|
+
// The CLI lists codex in `pidSharingClients` — it multiplexes sessions in one process.
|
|
45
|
+
sharesPids: true,
|
|
46
|
+
// Verified empirically, not speculative: running an identical Codex session with
|
|
47
|
+
// `--dangerously-bypass-hook-trust` fires the installed hooks immediately (a session record
|
|
48
|
+
// appears); without that flag, zero records — Codex silently refuses to run command hooks it
|
|
49
|
+
// hasn't trusted yet, with no log line or warning of any kind. Trust is granted via `/hooks`
|
|
50
|
+
// inside interactive Codex and is bound to the hook's hash, so a reinstall invalidates it. There
|
|
51
|
+
// is no known way to detect trust state from outside Codex, so this hint is unconditional.
|
|
52
|
+
manualActivation: "Codex won't run these hooks until you trust them — run `/hooks` in Codex. You'll need to trust them again if the hooks are reinstalled.",
|
|
53
|
+
};
|
|
54
|
+
const copilotCapabilities = {
|
|
55
|
+
hookClientId: 'copilot',
|
|
56
|
+
providerId: 'copilot',
|
|
57
|
+
displayName: 'GitHub Copilot CLI',
|
|
58
|
+
icon: 'copilot',
|
|
59
|
+
eventMap: {
|
|
60
|
+
// Copilot's event names are otherwise canonical; `ErrorOccurred` is the one with no canonical
|
|
61
|
+
// equivalent, so it maps onto Claude's turn-ended-in-error event (which derives to `idle`).
|
|
62
|
+
ErrorOccurred: 'StopFailure',
|
|
63
|
+
},
|
|
64
|
+
// Copilot's own documented tool alias table.
|
|
65
|
+
toolNameMap: {
|
|
66
|
+
bash: 'Bash',
|
|
67
|
+
// `powershell` is deliberately absent. Aliasing it to `Bash` would only be worth the lost
|
|
68
|
+
// label fidelity (a PowerShell call rendering as `Bash(...)`) if it bought the command detail
|
|
69
|
+
// `describeToolInput` extracts for shells — and it can't: Copilot relays its args as
|
|
70
|
+
// `hookInput.toolInput` (camelCase), a key nothing here reads, so no tool input reaches us at
|
|
71
|
+
// all. Pure label loss today; revisit if Copilot's tool inputs ever become readable.
|
|
72
|
+
view: 'Read',
|
|
73
|
+
create: 'Write',
|
|
74
|
+
edit: 'Edit',
|
|
75
|
+
str_replace_editor: 'Edit',
|
|
76
|
+
apply_patch: 'Edit',
|
|
77
|
+
grep: 'Grep',
|
|
78
|
+
rg: 'Grep',
|
|
79
|
+
glob: 'Glob',
|
|
80
|
+
web_fetch: 'WebFetch',
|
|
81
|
+
web_search: 'WebSearch',
|
|
82
|
+
ask_user: 'AskUserQuestion',
|
|
83
|
+
},
|
|
84
|
+
supportsBlockingPermissions: true,
|
|
85
|
+
supportsTranscripts: false,
|
|
86
|
+
supportsResume: false,
|
|
87
|
+
sharesPids: false,
|
|
88
|
+
};
|
|
89
|
+
/** Reads the status type out of an OpenCode `session.status` hook input. The CLI's generated
|
|
90
|
+
* OpenCode plugin nests the raw SDK event under `hook_payload.event` (`buildHookInput` sets
|
|
91
|
+
* `hook_payload: payload`, and the generic event hook passes `{ event }`), so the full path from
|
|
92
|
+
* the hook-input root is `hook_payload.event.properties.status.type`. The payload is untyped JSON,
|
|
93
|
+
* so every hop is checked rather than cast. */
|
|
94
|
+
function getOpenCodeSessionStatusType(hookInput) {
|
|
95
|
+
const hookPayload = asRecord(hookInput?.hook_payload);
|
|
96
|
+
const event = asRecord(hookPayload?.event);
|
|
97
|
+
const properties = asRecord(event?.properties);
|
|
98
|
+
const status = asRecord(properties?.status);
|
|
99
|
+
const type = status?.type;
|
|
100
|
+
return typeof type === 'string' ? type : undefined;
|
|
101
|
+
}
|
|
102
|
+
const openCodeCapabilities = {
|
|
103
|
+
hookClientId: 'opencode',
|
|
104
|
+
providerId: 'opencode',
|
|
105
|
+
displayName: 'OpenCode',
|
|
106
|
+
icon: 'gitlens-provider-opencode',
|
|
107
|
+
eventMap: {
|
|
108
|
+
'session.created': 'SessionStart',
|
|
109
|
+
'session.deleted': 'SessionEnd',
|
|
110
|
+
// `session.idle` is deprecated in OpenCode's own source in favor of `session.status`, which is
|
|
111
|
+
// why both are handled — older builds still emit it.
|
|
112
|
+
'session.idle': 'Stop',
|
|
113
|
+
'session.error': 'StopFailure',
|
|
114
|
+
'session.compacted': 'PostCompact',
|
|
115
|
+
'permission.asked': 'PermissionRequest',
|
|
116
|
+
'permission.replied': 'ElicitationResult',
|
|
117
|
+
'tool.execute.before': 'PreToolUse',
|
|
118
|
+
'tool.execute.after': 'PostToolUse',
|
|
119
|
+
// `session.updated` is intentionally absent — it has no canonical analogue.
|
|
120
|
+
// `session.status` is resolved by `resolveEvent` below, since its meaning is in the payload.
|
|
121
|
+
},
|
|
122
|
+
// Only `idle` resolves. `busy` is deliberately unmapped, and so is everything else (`retry`
|
|
123
|
+
// included): the canonical event this returns doesn't just pick a status, it selects a branch of
|
|
124
|
+
// the provider's state-machine switch, so a mapping inherits that event's ENTIRE handler. Naming
|
|
125
|
+
// `PostToolUse` here would also clear a pending permission ask, decrement the parallel-tool
|
|
126
|
+
// refcount, and schedule file decorations away — all wrong for a tick OpenCode emits
|
|
127
|
+
// independently of any tool lifecycle, and the ask-clearing is visibly wrong (the agent is still
|
|
128
|
+
// blocked on it). There is no tool-free canonical event meaning "resumed working", and `busy`
|
|
129
|
+
// carries no tool semantics to justify inventing one.
|
|
130
|
+
resolveEvent: (nativeEvent, hookInput) => {
|
|
131
|
+
if (nativeEvent !== 'session.status')
|
|
132
|
+
return undefined;
|
|
133
|
+
return getOpenCodeSessionStatusType(hookInput) === 'idle' ? 'Stop' : undefined;
|
|
134
|
+
},
|
|
135
|
+
toolNameMap: {
|
|
136
|
+
bash: 'Bash',
|
|
137
|
+
read: 'Read',
|
|
138
|
+
write: 'Write',
|
|
139
|
+
edit: 'Edit',
|
|
140
|
+
grep: 'Grep',
|
|
141
|
+
glob: 'Glob',
|
|
142
|
+
webfetch: 'WebFetch',
|
|
143
|
+
websearch: 'WebSearch',
|
|
144
|
+
apply_patch: 'Edit',
|
|
145
|
+
},
|
|
146
|
+
// The CLI hard-errors when asked to install blocking events for opencode.
|
|
147
|
+
supportsBlockingPermissions: false,
|
|
148
|
+
supportsTranscripts: false,
|
|
149
|
+
supportsResume: false,
|
|
150
|
+
sharesPids: false,
|
|
151
|
+
// OpenCode's tool hooks carry no per-call cwd: the CLI's generated plugin supplies the
|
|
152
|
+
// plugin-init directory once, so a session's reported cwd is frozen at that value and never
|
|
153
|
+
// reflects later movement. Deliberately prose and NOT a capability flag — it was one, and
|
|
154
|
+
// nothing could be built on it. Every cwd-driven path in `gkAgentProvider` (the
|
|
155
|
+
// visited-worktree unions, `cwdTimeline` resolution, the `cliSeatedWorktree` unexplained-move
|
|
156
|
+
// clear) reacts only to an OBSERVED difference between successive cwds, so a frozen cwd
|
|
157
|
+
// degrades each one to its already-correct single-value no-op. A flag hands that code no fact
|
|
158
|
+
// it can act on: it explains why the diff never fires, it does not supply the directory the
|
|
159
|
+
// hooks never sent. Promote it back to a field if a surface ever needs to caveat the
|
|
160
|
+
// attribution to the user — that would be its first real consumer.
|
|
161
|
+
};
|
|
162
|
+
/** Every supported hook client, in registry order. */
|
|
163
|
+
export const agentCapabilities = [
|
|
164
|
+
claudeCodeCapabilities,
|
|
165
|
+
codexCapabilities,
|
|
166
|
+
copilotCapabilities,
|
|
167
|
+
openCodeCapabilities,
|
|
168
|
+
];
|
|
169
|
+
/** Looks up capabilities by `gk ai hook` client id. Returns `undefined` for clients GitLens has no
|
|
170
|
+
* descriptor for (the CLI supports more than this table does). */
|
|
171
|
+
export function getAgentCapabilities(hookClientId) {
|
|
172
|
+
return agentCapabilities.find(c => c.hookClientId === hookClientId);
|
|
173
|
+
}
|
|
174
|
+
/** Looks up capabilities by GitLens session provider id. */
|
|
175
|
+
export function getAgentCapabilitiesByProviderId(providerId) {
|
|
176
|
+
return agentCapabilities.find(c => c.providerId === providerId);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Translates an agent's native hook event name into the canonical vocabulary: `resolveEvent` first,
|
|
180
|
+
* then `eventMap`, then an identity pass-through for names that are already canonical. Returns
|
|
181
|
+
* `undefined` for anything else — unknown strings are never assumed to be canonical events.
|
|
182
|
+
*/
|
|
183
|
+
export function resolveCanonicalHookEvent(capabilities, nativeEvent, hookInput) {
|
|
184
|
+
const resolved = capabilities.resolveEvent?.(nativeEvent, hookInput);
|
|
185
|
+
if (resolved != null)
|
|
186
|
+
return resolved;
|
|
187
|
+
const mapped = capabilities.eventMap?.[nativeEvent];
|
|
188
|
+
if (mapped != null)
|
|
189
|
+
return mapped;
|
|
190
|
+
return isCanonicalHookEvent(nativeEvent) ? nativeEvent : undefined;
|
|
191
|
+
}
|
|
192
|
+
/** Translates an agent's native tool name into the canonical (Claude Code) tool name, falling back
|
|
193
|
+
* to the input unchanged when the agent has no alias for it. */
|
|
194
|
+
export function resolveCanonicalToolName(capabilities, nativeToolName) {
|
|
195
|
+
return capabilities.toolNameMap?.[nativeToolName] ?? nativeToolName;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=agentCapabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentCapabilities.js","sourceRoot":"","sources":["../../../src/plus/agents/agentCapabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,16 @@ export interface TranscriptSessionListing {
|
|
|
21
21
|
/** Every transcript in the directory, not just the summarized slice — drives "Showing N of M". */
|
|
22
22
|
readonly total: number;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
/** A transcript found outside the queried cwd's project directory, plus the directory Claude
|
|
25
|
+
* actually uses to resolve it for `--resume`. */
|
|
26
|
+
export interface ResumableTranscriptSessionSummary extends TranscriptSessionSummary {
|
|
27
|
+
readonly cwd: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ResumableTranscriptSessionListing {
|
|
30
|
+
readonly sessions: ResumableTranscriptSessionSummary[];
|
|
31
|
+
readonly total: number;
|
|
32
|
+
}
|
|
33
|
+
export interface EndedTranscriptDetails {
|
|
25
34
|
titles: TranscriptTitles;
|
|
26
35
|
firstPrompt?: string;
|
|
27
36
|
lastPrompt?: string;
|
|
@@ -42,15 +51,33 @@ export declare class ClaudeCodeTranscriptReader {
|
|
|
42
51
|
private readonly _cache;
|
|
43
52
|
private readonly _generations;
|
|
44
53
|
private readonly _listings;
|
|
54
|
+
/** Transcript file names per project directory — the readdir behind both the plain listing and
|
|
55
|
+
* the by-id scan, which sweeps every project directory. */
|
|
56
|
+
private readonly _names;
|
|
57
|
+
/** Project directories under {@link getProjectsRoot}, re-scanned by every by-id recovery. */
|
|
58
|
+
private _projectDirs;
|
|
45
59
|
/** Insertion-ordered LRU — re-inserted on hit, oldest key evicted past {@link summaryCacheLimit}. */
|
|
46
60
|
private readonly _summaries;
|
|
61
|
+
/** Resolved project path per transcript path, bounded like {@link _summaries}. */
|
|
62
|
+
private readonly _transcriptCwds;
|
|
47
63
|
private _nextGen;
|
|
64
|
+
/** Bumped by {@link invalidateListings}; async listing scans capture it at entry and skip their
|
|
65
|
+
* cache write when it moved, so a stale in-flight result can't re-seed a just-cleared cache. */
|
|
66
|
+
private _listingGen;
|
|
67
|
+
/** Drops the directory-listing caches (entries, names, project dirs) so the next listing re-reads
|
|
68
|
+
* the store. Called when a session ends or is removed: its transcript may have appeared inside
|
|
69
|
+
* the TTL window, and a cached listing would hide the new file from the very fetch meant to
|
|
70
|
+
* surface it. Summary and cwd caches are keyed by file identity and stay valid, so they're kept.
|
|
71
|
+
* The generation bump makes any in-flight listing skip its own cache write — otherwise a scan
|
|
72
|
+
* started before the invalidation would re-seed the caches with pre-end results, freshly
|
|
73
|
+
* timestamped (same discipline as `resolve`'s per-session generations). */
|
|
74
|
+
invalidateListings(): void;
|
|
48
75
|
resolve(sessionId: string, cwd: string | undefined): Promise<TranscriptTitles | undefined>;
|
|
49
76
|
forget(sessionId: string): void;
|
|
50
77
|
/**
|
|
51
|
-
* One-shot read for
|
|
78
|
+
* One-shot read for an *ended* (terminal, static) session: extracts the transcript titles plus
|
|
52
79
|
* the first and last user prompts. Unlike {@link resolve}, it bypasses the tail cache — a finished
|
|
53
|
-
* transcript never grows, so it's read once on demand (when
|
|
80
|
+
* transcript never grows, so it's read once on demand (when an ended row is opened) and the
|
|
54
81
|
* result applied to the session. `last-prompt` entries carry the prompt as of that point; the first
|
|
55
82
|
* one bearing a value is the session's opening prompt, the last its most recent. Returns `undefined`
|
|
56
83
|
* when no transcript is found (archived/purged) — the caller keeps whatever durable-store fields it
|
|
@@ -62,19 +89,20 @@ export declare class ClaudeCodeTranscriptReader {
|
|
|
62
89
|
* past any fixed head window, and a windowed read would then mistake a later prompt for the first,
|
|
63
90
|
* poisoning the derived session name.
|
|
64
91
|
*/
|
|
65
|
-
|
|
92
|
+
resolveEndedDetails(sessionId: string, cwd: string | undefined): Promise<EndedTranscriptDetails | undefined>;
|
|
66
93
|
/**
|
|
67
94
|
* Lists the transcripts of sessions whose working directory is `cwd`, most-recently-active first,
|
|
68
|
-
* summarizing until `limit` summarizable transcripts are found
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
95
|
+
* summarizing until `limit` summarizable transcripts are found — not just the first `limit` on
|
|
96
|
+
* disk, since junk transcripts (dropped below) would otherwise starve the result.
|
|
97
|
+
* `excludeSessionIds` is skipped before `limit` applies, and excluded entries are also dropped
|
|
98
|
+
* from `total` — they're already shown elsewhere (e.g. as live sessions), so a caller's "N of M"
|
|
99
|
+
* count must not double-count them.
|
|
73
100
|
*
|
|
74
|
-
* Claude homes a transcript under the directory encoding the
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
101
|
+
* Claude homes a transcript under the directory encoding the cwd from which the session started.
|
|
102
|
+
* That directory is authoritative for where `claude --resume <id>` can find the transcript, but
|
|
103
|
+
* Claude does not reliably move it when the session later changes worktrees. Callers that have a
|
|
104
|
+
* durable session-to-worktree association can recover those moved sessions with
|
|
105
|
+
* {@link listSessionsByIds}; this method intentionally remains the cheap legacy directory listing.
|
|
78
106
|
*
|
|
79
107
|
* Discovery (readdir + stat) covers the whole directory and is cheap; summarizing is not, so it's
|
|
80
108
|
* capped. Entries whose summary yields neither a title nor a prompt are dropped — those are aborted
|
|
@@ -84,12 +112,48 @@ export declare class ClaudeCodeTranscriptReader {
|
|
|
84
112
|
limit?: number;
|
|
85
113
|
excludeSessionIds?: ReadonlySet<string>;
|
|
86
114
|
}): Promise<TranscriptSessionListing>;
|
|
115
|
+
/**
|
|
116
|
+
* Finds a known set of session ids across every Claude project directory except `excludeCwd`'s.
|
|
117
|
+
* This is the recovery path for durable CLI records whose worktree changed after Claude chose the
|
|
118
|
+
* transcript's project directory. The caller supplies the association; transcript contents alone
|
|
119
|
+
* are deliberately not used to guess which current worktree owns an arbitrary old session.
|
|
120
|
+
*
|
|
121
|
+
* Each result carries the project path encoded by the directory that actually holds the transcript,
|
|
122
|
+
* so resuming it does not repeat discovery from the wrong worktree. Duplicate ids are counted once,
|
|
123
|
+
* with the newest transcript winning.
|
|
124
|
+
*/
|
|
125
|
+
listSessionsByIds(sessionIds: ReadonlySet<string>, options?: {
|
|
126
|
+
limit?: number;
|
|
127
|
+
excludeCwd?: string;
|
|
128
|
+
}): Promise<ResumableTranscriptSessionListing>;
|
|
87
129
|
/** Discovers every transcript in `dir`, newest first. The directory also holds one sibling
|
|
88
130
|
* subdirectory per session (`<uuid>/subagents`, `<uuid>/tool-results`), so entries must be filtered
|
|
89
131
|
* to files — a busy project has roughly as many subdirectories as transcripts. */
|
|
90
132
|
private listEntries;
|
|
133
|
+
/** Stats `names` in `dir`, dropping the ones that failed — a transcript can vanish (or be
|
|
134
|
+
* archived) between the readdir and the stat. Unsorted; callers order as they need.
|
|
135
|
+
* Protected (like {@link readSummary}) so tests can interleave against the listing flow. */
|
|
136
|
+
protected statEntries(dir: string, names: string[]): Promise<TranscriptSessionEntry[]>;
|
|
137
|
+
/** The `.jsonl` file names in `dir`, cached for {@link listingCacheTtlMs}. Failures propagate
|
|
138
|
+
* uncached: an unreadable directory means different things to different callers, and the next
|
|
139
|
+
* call must be free to get a real answer. */
|
|
140
|
+
private listTranscriptNames;
|
|
141
|
+
/** Every project directory under the projects root, cached for {@link listingCacheTtlMs} — a
|
|
142
|
+
* by-id recovery sweeps all of them, once per queried worktree. */
|
|
143
|
+
private listProjectDirs;
|
|
144
|
+
/** Scans project directory names once, then stats only requested transcript ids. */
|
|
145
|
+
private listEntriesByIds;
|
|
146
|
+
/** `exhausted` reports whether every candidate was scanned — an exhausted scan has proven the
|
|
147
|
+
* exact valid count, so callers can report it instead of an upper bound that would keep a
|
|
148
|
+
* "Show More" affordance alive with nothing left to show. */
|
|
149
|
+
private collectSessions;
|
|
91
150
|
/** Summarizes one transcript, reusing the cached result while its mtime and size are unchanged. */
|
|
92
151
|
private resolveSummary;
|
|
152
|
+
/** Recovers the project path represented by the transcript's containing directory. A resolved
|
|
153
|
+
* answer is cached: it's a line-scan of the whole transcript, and the directory holding a given
|
|
154
|
+
* path never changes. A miss isn't cached — a `cwd` line can still land on append. */
|
|
155
|
+
private resolveTranscriptCwd;
|
|
156
|
+
private rememberTranscriptCwd;
|
|
93
157
|
/**
|
|
94
158
|
* Reads a summary from the first and last {@link summaryWindowSize} bytes of the transcript.
|
|
95
159
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeCodeTranscript.d.ts","sourceRoot":"","sources":["../../../../src/plus/agents/providers/claudeCodeTranscript.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;yEACyE;AACzE,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,qGAAqG;AACrG,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACvE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC;IAC9C,kGAAkG;IAClG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"claudeCodeTranscript.d.ts","sourceRoot":"","sources":["../../../../src/plus/agents/providers/claudeCodeTranscript.ts"],"names":[],"mappings":"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"}
|