@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
package/docs/integrations.md
CHANGED
|
@@ -113,28 +113,34 @@ provider before calling the token backend; never reuse an id discovered under a
|
|
|
113
113
|
Every read returns `ProviderResult<T>` (`items` + `warnings` + `fetchFailed?`), and every paged read extends
|
|
114
114
|
it with `page` + `hasMore` + `cursor?`. **No read throws for a provider-side failure** — see §6.
|
|
115
115
|
|
|
116
|
-
| Method | Returns | Scope
|
|
117
|
-
| ---------------------------- | ------------------------- |
|
|
118
|
-
| `listOrgs` | `ProviderOrganization` | Orgs / workspaces / groups; issue-tracker resources (Jira sites, …).
|
|
119
|
-
| `listProjects` | `ProviderOrganization` | The project tier: Azure DevOps, and issue-tracker projects.
|
|
120
|
-
| `listRepos` | `ProviderRepositoryShape` | Repos of an `org`, or account-wide user-affiliated repos when `org` is omitted.
|
|
121
|
-
| `listPullRequestsPage` | `PullRequestShape` | With `repos`: those repos' PRs. Without: the user's PRs account-wide.
|
|
122
|
-
| `searchPullRequestsPage` | `PullRequestShape` | PRs involving the user that match structured criteria, optionally repo/org-scoped.
|
|
123
|
-
| `countPullRequests` | `PullRequestCountResult` | How many PRs match each scope, fetching none of them. See §5.1.
|
|
124
|
-
| `listIssuesPage` | `IssueShape` | Same split, for a **git host**'s issues.
|
|
125
|
-
| `searchIssuesPage` | `IssueShape` | Issues matching structured criteria over a repo/org scope — **no** `@me` binding.
|
|
126
|
-
| `countIssues` | `IssueCountResult` | How many match each scope, fetching none of them. See §5.1.
|
|
127
|
-
| `
|
|
128
|
-
| `
|
|
129
|
-
| `
|
|
130
|
-
| `
|
|
131
|
-
| `
|
|
132
|
-
| `
|
|
116
|
+
| Method | Returns | Scope |
|
|
117
|
+
| ---------------------------- | ------------------------- | --------------------------------------------------------------------------------------- |
|
|
118
|
+
| `listOrgs` | `ProviderOrganization` | Orgs / workspaces / groups; issue-tracker resources (Jira sites, …). |
|
|
119
|
+
| `listProjects` | `ProviderOrganization` | The project tier: Azure DevOps, and issue-tracker projects. |
|
|
120
|
+
| `listRepos` | `ProviderRepositoryShape` | Repos of an `org`, or account-wide user-affiliated repos when `org` is omitted. |
|
|
121
|
+
| `listPullRequestsPage` | `PullRequestShape` | With `repos`: those repos' PRs. Without: the user's PRs account-wide. |
|
|
122
|
+
| `searchPullRequestsPage` | `PullRequestShape` | PRs involving the user that match structured criteria, optionally repo/org-scoped. |
|
|
123
|
+
| `countPullRequests` | `PullRequestCountResult` | How many PRs match each scope, fetching none of them. See §5.1. |
|
|
124
|
+
| `listIssuesPage` | `IssueShape` | Same split, for a **git host**'s issues. |
|
|
125
|
+
| `searchIssuesPage` | `IssueShape` | Issues matching structured criteria over a repo/org scope — **no** `@me` binding. |
|
|
126
|
+
| `countIssues` | `IssueCountResult` | How many match each scope, fetching none of them. See §5.1. |
|
|
127
|
+
| `getIssuesBatch` | `IssueBatchResult` | Resolves N `(owner, repo, number)` coordinates in one request; an absence is proven. |
|
|
128
|
+
| `getTrackerIssue` | `TrackerIssueResult` | Resolves ONE tracker issue by key within a resource; an absence is proven. Jira/Linear. |
|
|
129
|
+
| `listIssueTrackerIssuesPage` | `IssueShape` | Jira / Linear / Trello (issues live under resource → project). |
|
|
130
|
+
| `sweepPullRequests` | `ProviderSweepResult` | Drains **every** page across providers (`maxPages`, default 100). |
|
|
131
|
+
| `sweepClosedPullRequests` | `ProviderSweepResult` | Same, pinned to `['closed','merged']`. |
|
|
132
|
+
| `broadenIssues` | `ProviderBroadenResult` | Per-org fan-out for every visible issue, unfiltered by assignee. |
|
|
133
|
+
| `resolveRepository` | `ResolveRepositoryResult` | Remote URL → canonical provider identity (the `gk repo resolve` equivalent). |
|
|
134
|
+
| `getSupportedFilters` | filter capability table | Static, connection-free. See §7. |
|
|
133
135
|
|
|
134
136
|
A provider that cannot serve a surface says so explicitly — a warning explaining that the operation is
|
|
135
137
|
unsupported plus `fetchFailed`, never a silent empty page. That distinction is the whole point of the result
|
|
136
138
|
shape: an empty `items` with no warning means "this account genuinely has nothing".
|
|
137
139
|
|
|
140
|
+
`getTrackerIssue` takes `resourceId` for both supported trackers. Jira also takes `resourceUrl`, the site URL
|
|
141
|
+
returned by `listOrgs`; the REST response only supplies an API `self` link, so the caller provides the already-known
|
|
142
|
+
site identity rather than making this point read perform resource discovery. Linear does not need it.
|
|
143
|
+
|
|
138
144
|
## 5. Paging
|
|
139
145
|
|
|
140
146
|
Two mechanisms live behind one shape, and they are **not** interchangeable:
|
|
@@ -330,7 +336,9 @@ on it without parsing `message`:
|
|
|
330
336
|
if (warning.omission != null) {
|
|
331
337
|
// The read SUCCEEDED — message it as incompleteness, not failure.
|
|
332
338
|
// Whether anything would fetch the rest is a separate question; see `recovery` below.
|
|
333
|
-
|
|
339
|
+
// Switch on the VALUE. `!== 'none'` is not "fetchable": `narrow-scope` is not.
|
|
340
|
+
if (warning.omission.recovery === 'page-budget') offerLoadMore(warning.omission);
|
|
341
|
+
else if (warning.omission.recovery === 'narrow-scope') suggestNarrowingTheScope(warning.omission);
|
|
334
342
|
}
|
|
335
343
|
```
|
|
336
344
|
|
|
@@ -360,19 +368,22 @@ mid-read left an unread tail too, but a retry may complete it — that one carri
|
|
|
360
368
|
a provider that gave no usable cursor are the same kind, but only the first can be fetched. Gate a "load more"
|
|
361
369
|
affordance on `recovery`, never on `kind`:
|
|
362
370
|
|
|
363
|
-
| `omission.recovery` | Means
|
|
364
|
-
| ------------------- |
|
|
365
|
-
| `none` | Nothing you can call returns the missing items.
|
|
366
|
-
| `page-budget` | Re-run the same read with a higher `maxPages` (sweep options).
|
|
371
|
+
| `omission.recovery` | Means | What a consumer does |
|
|
372
|
+
| ------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
373
|
+
| `none` | Nothing you can call returns the missing items. | Say the results are capped. Do not offer to fetch more. |
|
|
374
|
+
| `page-budget` | Re-run the same read with a higher `maxPages` (sweep options). | Offer it — but note it re-reads from the start, so make it user-initiated. |
|
|
375
|
+
| `narrow-scope` | A smaller server-side scope can avoid the backstop; no budget or retry reaches the rest. | Suggest narrowing the scope. Do **not** offer to fetch more. |
|
|
367
376
|
|
|
368
377
|
`recovery` is **required** — unlike `limit`, `totalCount` and `scope`, it is never absent. An absent value
|
|
369
378
|
would be indistinguishable from `none` while actually meaning "this producer didn't say", which is the
|
|
370
379
|
ambiguity `omission` exists to remove.
|
|
371
380
|
|
|
372
381
|
It is also **conservative**: it names only what a producer can prove, so `none` means "not known to be
|
|
373
|
-
recoverable", not "proven unrecoverable".
|
|
374
|
-
|
|
375
|
-
|
|
382
|
+
recoverable", not "proven unrecoverable". Only a sweep that spent its own page budget reports `page-budget`, and
|
|
383
|
+
only a broad Jira project query that provably stopped at its own page backstop reports `narrow-scope`.
|
|
384
|
+
Already-scoped Jira reads and Linear reads use `none` when they emit an omission because changing the public
|
|
385
|
+
scope cannot make those provider requests narrower. Other caps and exhausted budgets also use `none`; a stalled
|
|
386
|
+
cursor or failed page may instead be a failure with no omission. A `scope` does not change that. It attributes where results were
|
|
376
387
|
withheld, and the SDK reports the same scoped shape both for a scope it merely sampled and for one whose
|
|
377
388
|
cursor stalled, so re-reading it is not something this layer can promise.
|
|
378
389
|
|
|
@@ -523,8 +534,10 @@ Derived from the provider models and `providersMetadata`. ✓ supported · ✗ r
|
|
|
523
534
|
| `countPullRequests` | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
524
535
|
| Issues, repo-scoped | ✓ | ✓ | ✗ | ✗ | ✓ | — | — | — |
|
|
525
536
|
| Issues, account-wide | ✓ | ✓ | ✗ | ✗ | ✓ | — | — | — |
|
|
526
|
-
| `searchIssuesPage` | ✓ |
|
|
527
|
-
| `countIssues` | ✓ |
|
|
537
|
+
| `searchIssuesPage` | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
538
|
+
| `countIssues` | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
539
|
+
| `getIssuesBatch` | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
540
|
+
| `getTrackerIssue` | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✗ |
|
|
528
541
|
| Issues by `org`/`project` | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ |
|
|
529
542
|
| `listIssueTrackerIssuesPage` | — | — | — | — | — | ✓ | ✓ | ✓ |
|
|
530
543
|
| `broadenIssues` | ✓ | ✓ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ |
|
|
@@ -604,12 +617,14 @@ free text have no equivalent on either.
|
|
|
604
617
|
recovered. `hasMore` reports only untouched forward progress. A cursor can therefore remain with
|
|
605
618
|
`hasMore: false`; reusing it is an explicit manual retry of failed work, not a normal paging loop.
|
|
606
619
|
|
|
607
|
-
**`broadenIssues` vs `searchIssuesPage`.**
|
|
608
|
-
|
|
609
|
-
and
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
620
|
+
**`broadenIssues` vs `searchIssuesPage`.** `broadenIssues` now reads each org through the org-scoped
|
|
621
|
+
filtered search where the provider declares one (GitHub/GHE), so it no longer discovers repositories first
|
|
622
|
+
and no longer routes through the SDK read's recovery walk — one request per page, per org. A provider with
|
|
623
|
+
no filtered search (Azure DevOps, GitLab) still takes the repository drain, since refusing the org would be
|
|
624
|
+
worse. It remains the read for "fan out across these orgs, whatever repos they turn out to contain", with
|
|
625
|
+
per-provider attribution (`broadenedProviderIds` / `failedProviderIds` / `incompleteProviderIds`) that the
|
|
626
|
+
single-provider search doesn't produce; reach for `searchIssuesPage` when you want ONE scope with an order
|
|
627
|
+
you control.
|
|
613
628
|
|
|
614
629
|
If you do migrate: broaden means **all visible** — it drops the assignee constraint entirely, so unassigned
|
|
615
630
|
issues are included. The equivalent is therefore an **omitted** `relationships`, **not**
|
|
@@ -168,11 +168,32 @@ searches, so the reported count is the **largest** of them (the total `searchPul
|
|
|
168
168
|
via `Math.max` over facets), not their sum, and `exceedsProviderLimit` compares that max against the per-search
|
|
169
169
|
ceiling. GitHub/GHE only, matching `searchPullRequestsPage`.
|
|
170
170
|
|
|
171
|
-
**
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
171
|
+
**Since done:** `broadenIssues`' inner per-org read WAS swapped onto the filtered search (#5804). Only that
|
|
172
|
+
inner read changed — the fan-out keeps its own result type, per-org cursor bundle and per-provider
|
|
173
|
+
attribution — and its "all visible" breadth maps to an OMITTED relationship set, not to `any-assignee`,
|
|
174
|
+
which excludes unassigned issues. A provider that declares no filtered search keeps the repository drain.
|
|
175
|
+
See the note in `reads/broaden.ts` and
|
|
175
176
|
[`integrations.md` §9](./integrations.md#9-per-provider-behavior-worth-designing-around).
|
|
176
177
|
|
|
178
|
+
**Batch issue resolution (#5802).** `getIssuesBatch` resolves N `(owner, repo, number)` coordinates in one
|
|
179
|
+
request, for the identity question a search cannot answer: "which issue does this branch name reference".
|
|
180
|
+
It aliases the point read rather than a search, so there is no result ceiling and no ordering — and an
|
|
181
|
+
absent slot is a PROVEN absence rather than "not found within a page budget", which is what lets a consumer
|
|
182
|
+
CACHE a miss. A target whose chunk failed is not returned at all, so the two stay distinguishable; caching a
|
|
183
|
+
failure as an absence is the bug that distinction prevents. GitHub/GHE only, matching `countIssues`.
|
|
184
|
+
|
|
185
|
+
**Tracker issue resolution by key (#5810).** `getTrackerIssue` is the same identity read for an issue TRACKER,
|
|
186
|
+
which `getIssuesBatch` cannot serve: its target is `(owner, repo, number)`, and a tracker issue is addressed by
|
|
187
|
+
`(resourceId, ABC-123)` — no owner, no repo, and an identifier that is not a number. It answers in one request
|
|
188
|
+
where the only published tracker surface (`listIssueTrackerIssuesPage`) needs a scoped page-walk that cannot
|
|
189
|
+
prove absence without draining the whole scope. Same absence/failure contract as the batch read, and the same
|
|
190
|
+
reason it matters: a tracker miss is the common outcome and was never cacheable.
|
|
191
|
+
|
|
192
|
+
`resourceId` is required and trusted, so the read performs no resource discovery. Jira also requires
|
|
193
|
+
`resourceUrl`, obtained alongside the resource ID, because the issue response's `self` is an API endpoint rather
|
|
194
|
+
than a browser link; supplying both retains the one-request contract. Linear needs only the resource ID. Jira and
|
|
195
|
+
Linear only; Trello refuses because its single-issue read can fall back to a capped board scan for a numeric
|
|
196
|
+
identifier, where a "not found" result cannot be distinguished from a card beyond the cap.
|
|
197
|
+
|
|
177
198
|
**Kepler-side follow-up:** `ProviderScopeFilter` carries a single `repo?: string` today and needs the criteria
|
|
178
199
|
set; the `provider-data` adapter then routes "All visible" to `searchIssuesPage` + `countIssues`.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gitkraken/core-gitlens",
|
|
3
3
|
"description": "GitLens core — shared Git / AI / GitHub primitives for internal GitKraken consumption",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.115",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "GitKraken",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"directory": "packages/core"
|
|
18
18
|
},
|
|
19
19
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
20
|
+
"node": ">= 24"
|
|
21
21
|
},
|
|
22
22
|
"type": "module",
|
|
23
23
|
"sideEffects": false,
|
|
@@ -83,6 +83,10 @@
|
|
|
83
83
|
"types": "./dist/git/features.d.ts",
|
|
84
84
|
"default": "./dist/git/features.js"
|
|
85
85
|
},
|
|
86
|
+
"./git/gitHealth.js": {
|
|
87
|
+
"types": "./dist/git/gitHealth.d.ts",
|
|
88
|
+
"default": "./dist/git/gitHealth.js"
|
|
89
|
+
},
|
|
86
90
|
"./git/models/*.js": {
|
|
87
91
|
"types": "./dist/git/models/*.d.ts",
|
|
88
92
|
"default": "./dist/git/models/*.js"
|
|
@@ -131,6 +135,10 @@
|
|
|
131
135
|
"types": "./dist/ipc/ipcServer.d.ts",
|
|
132
136
|
"default": "./dist/ipc/ipcServer.js"
|
|
133
137
|
},
|
|
138
|
+
"./plus/agents/agentCapabilities.js": {
|
|
139
|
+
"types": "./dist/plus/agents/agentCapabilities.d.ts",
|
|
140
|
+
"default": "./dist/plus/agents/agentCapabilities.js"
|
|
141
|
+
},
|
|
134
142
|
"./plus/agents/providers/*.js": {
|
|
135
143
|
"types": "./dist/plus/agents/providers/*.d.ts",
|
|
136
144
|
"default": "./dist/plus/agents/providers/*.js"
|
|
@@ -228,9 +236,9 @@
|
|
|
228
236
|
}
|
|
229
237
|
},
|
|
230
238
|
"dependencies": {
|
|
231
|
-
"@gitkraken/provider-apis": "0.
|
|
239
|
+
"@gitkraken/provider-apis": "0.58.0",
|
|
232
240
|
"@octokit/graphql": "9.0.4",
|
|
233
|
-
"@octokit/request": "10.0.
|
|
241
|
+
"@octokit/request": "10.0.14",
|
|
234
242
|
"@octokit/request-error": "7.1.1",
|
|
235
243
|
"@octokit/types": "17.0.0",
|
|
236
244
|
"fast-string-truncated-width": "3.0.3",
|
package/src/git/cache.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { normalizePath } from '../utils/path.js';
|
|
|
7
7
|
import type { PromiseOrValue } from '../utils/promise.js';
|
|
8
8
|
import type { CacheController } from '../utils/promiseCache.js';
|
|
9
9
|
import { PromiseCache, PromiseMap, RepoPromiseCacheMap } from '../utils/promiseCache.js';
|
|
10
|
+
import type { ResourceUsage } from '../utils/resourceUsage.js';
|
|
10
11
|
import type { Uri } from '../utils/uri.js';
|
|
11
12
|
import type { ProgressiveGitBlame } from './models/blame.js';
|
|
12
13
|
import type { BranchMetadata, GitBranch } from './models/branch.js';
|
|
@@ -82,6 +83,24 @@ export type ConflictDetectionCacheKey =
|
|
|
82
83
|
*/
|
|
83
84
|
const baseBranchNameTTL = 5 * 60 * 1000; // 5 minutes
|
|
84
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Completed blame graphs retain several objects and substrings per line. Keep normal files hot, but let large
|
|
88
|
+
* documents be owned by their active tracked-document snapshot instead of retaining a second long-lived owner.
|
|
89
|
+
*/
|
|
90
|
+
const maxCachedBlameLines = 5000;
|
|
91
|
+
|
|
92
|
+
export async function shouldEvictBlameCacheEntry(progressive: ProgressiveGitBlame | undefined): Promise<boolean> {
|
|
93
|
+
if (progressive == null) return false;
|
|
94
|
+
|
|
95
|
+
try {
|
|
96
|
+
const blame = await progressive.completed;
|
|
97
|
+
return blame.lines.length > maxCachedBlameLines;
|
|
98
|
+
} catch {
|
|
99
|
+
// The provider factory resolves as soon as streaming starts, so a later stream failure must also be retried.
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
85
104
|
/**
|
|
86
105
|
* gkConfig keys that participate in the `branchOverviews` cache's mergeTarget/mergeBase lineage.
|
|
87
106
|
* Capture group 1 is the ref name (which may itself contain `.`/`/`).
|
|
@@ -266,6 +285,23 @@ export class Cache implements Disposable {
|
|
|
266
285
|
this.reset();
|
|
267
286
|
}
|
|
268
287
|
|
|
288
|
+
/** Resource usage retained by instantiated sub-caches and their bookkeeping maps. */
|
|
289
|
+
getResourceUsage(): ResourceUsage {
|
|
290
|
+
const usage: ResourceUsage = {};
|
|
291
|
+
for (const [name, cache] of Object.entries(this._caches)) {
|
|
292
|
+
if (cache != null) {
|
|
293
|
+
usage[`cache.${name}.entries.count`] =
|
|
294
|
+
cache instanceof RepoPromiseCacheMap ? cache.entryCount : cache.size;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
usage['cache.commonPathRegistry.entries.count'] = this._commonPathRegistry.size;
|
|
298
|
+
usage['cache.worktreesByCommonPath.entries.count'] = this._worktreesByCommonPath.size;
|
|
299
|
+
usage['cache.statusGenerations.entries.count'] = this._statusGenerations.size;
|
|
300
|
+
usage['cache.closeGenerations.entries.count'] = this._closeGenerations.size;
|
|
301
|
+
usage['cache.gkConfigMergeSnapshots.entries.count'] = this._gkConfigMergeSnapshots.size;
|
|
302
|
+
return usage;
|
|
303
|
+
}
|
|
304
|
+
|
|
269
305
|
get bestRemotes(): PromiseMap<RepoPath, GitRemote<RemoteProvider>[]> {
|
|
270
306
|
return (this._caches.bestRemotes ??= new PromiseMap<RepoPath, GitRemote<RemoteProvider>[]>());
|
|
271
307
|
}
|
package/src/git/context.ts
CHANGED
|
@@ -76,6 +76,11 @@ export interface GitServiceConfig {
|
|
|
76
76
|
|
|
77
77
|
/** Graph-specific configuration defaults. */
|
|
78
78
|
readonly graph?: {
|
|
79
|
+
/** Whether to keep git's commit-graph file up to date in the background after graph loads —
|
|
80
|
+
* written when missing, periodically refreshed to cover new commits (accelerates ordered
|
|
81
|
+
* history walks — the graph's initial load). Fed from the master switch
|
|
82
|
+
* (`gitlens.gitOptimizations.enabled`); `false` disables the background write. */
|
|
83
|
+
readonly writeCommitGraph?: boolean;
|
|
79
84
|
/** Graph commit ordering (falls back to `commits.ordering` or `'date'`). */
|
|
80
85
|
readonly commitOrdering?: 'date' | 'author-date' | 'topo';
|
|
81
86
|
/** Whether to only follow first parent in graph. */
|
|
@@ -86,6 +91,12 @@ export interface GitServiceConfig {
|
|
|
86
91
|
readonly maxSearchItems?: number;
|
|
87
92
|
};
|
|
88
93
|
|
|
94
|
+
/** Auto-tier git-optimization (maintenance) preferences. */
|
|
95
|
+
readonly maintenance?: {
|
|
96
|
+
/** Master switch for the auto-tier optimizations (maps to `gitlens.gitOptimizations.enabled`). Defaults to `true`. */
|
|
97
|
+
readonly enabled?: boolean;
|
|
98
|
+
};
|
|
99
|
+
|
|
89
100
|
/** Force-push preferences. */
|
|
90
101
|
readonly push?: {
|
|
91
102
|
/** Whether to use `--force-with-lease` instead of a plain `--force` when force-pushing. Defaults to `true`. */
|
package/src/git/errors.ts
CHANGED
|
@@ -68,12 +68,18 @@ export abstract class GitCommandError<Details extends { gitCommand?: GitCommandC
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
export type GitSearchErrorReason = 'invalidPattern' | 'invalidRef';
|
|
72
|
+
|
|
71
73
|
export class GitSearchError extends Error {
|
|
72
74
|
static is(ex: unknown): ex is GitSearchError {
|
|
73
75
|
return ex instanceof GitSearchError;
|
|
74
76
|
}
|
|
75
77
|
|
|
76
|
-
constructor(
|
|
78
|
+
constructor(
|
|
79
|
+
public readonly original: Error,
|
|
80
|
+
public readonly reason?: GitSearchErrorReason,
|
|
81
|
+
public readonly detail?: string,
|
|
82
|
+
) {
|
|
77
83
|
super(original.message);
|
|
78
84
|
|
|
79
85
|
Error.captureStackTrace?.(this, new.target);
|
|
@@ -451,6 +457,7 @@ export class PausedOperationAbortError extends GitCommandError<PausedOperationAb
|
|
|
451
457
|
export type PausedOperationContinueErrorReason =
|
|
452
458
|
| 'conflicts'
|
|
453
459
|
| 'emptyCommit'
|
|
460
|
+
| 'messageEditFailed'
|
|
454
461
|
| 'nothingToContinue'
|
|
455
462
|
| 'uncommittedChanges'
|
|
456
463
|
| 'unmergedFiles'
|
|
@@ -483,6 +490,8 @@ export class PausedOperationContinueError extends GitCommandError<PausedOperatio
|
|
|
483
490
|
return `Cannot ${details.skip ? 'skip' : 'continue'} the ${details.operation.type} operation as there are unresolved conflicts`;
|
|
484
491
|
case 'emptyCommit':
|
|
485
492
|
return `Cannot ${details.skip ? 'skip' : 'continue'} the ${details.operation.type} operation as the previous commit is empty`;
|
|
493
|
+
case 'messageEditFailed':
|
|
494
|
+
return `Cannot ${details.skip ? 'skip' : 'continue'} the ${details.operation.type} operation as a commit message needs to be edited and the editor could not be opened`;
|
|
486
495
|
case 'nothingToContinue':
|
|
487
496
|
return `Cannot ${details.skip ? 'skip' : 'continue'} the ${details.operation.type} operation as there is no ${details.operation.type} in progress`;
|
|
488
497
|
case 'uncommittedChanges':
|
|
@@ -868,6 +877,7 @@ export type TagErrorReason =
|
|
|
868
877
|
| 'notFound'
|
|
869
878
|
| 'permissionDenied'
|
|
870
879
|
| 'remoteRejected'
|
|
880
|
+
| 'tagConflict'
|
|
871
881
|
| 'other';
|
|
872
882
|
interface TagErrorDetails {
|
|
873
883
|
reason?: TagErrorReason;
|
|
@@ -906,6 +916,8 @@ export class TagError extends GitCommandError<TagErrorDetails> {
|
|
|
906
916
|
return `${baseMessage} because you don't have permission to push to this remote repository.`;
|
|
907
917
|
case 'remoteRejected':
|
|
908
918
|
return `${baseMessage} because the remote repository rejected the push.`;
|
|
919
|
+
case 'tagConflict':
|
|
920
|
+
return `${baseMessage} because the remote already has a tag with that name. Use force to overwrite it.`;
|
|
909
921
|
default:
|
|
910
922
|
return baseMessage;
|
|
911
923
|
}
|
package/src/git/features.ts
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
// GitFeature's must start with `git:` to be recognized in all usages
|
|
2
2
|
export type GitFeatures =
|
|
3
3
|
| 'git:checkout:pathspec-from-file'
|
|
4
|
+
| 'git:commit-graph'
|
|
5
|
+
| 'git:commit-graph:changed-paths'
|
|
4
6
|
| 'git:for-each-ref:worktreePath'
|
|
7
|
+
| 'git:fsmonitor'
|
|
8
|
+
| 'git:fsmonitor:linux'
|
|
5
9
|
| 'git:ignoreRevsFile'
|
|
10
|
+
| 'git:index:skipHash'
|
|
11
|
+
| 'git:maintenance'
|
|
12
|
+
| 'git:maintenance:pack-refs'
|
|
13
|
+
| 'git:maintenance:start'
|
|
14
|
+
| 'git:maintenance:start:systemd'
|
|
15
|
+
| 'git:manyFiles'
|
|
6
16
|
| 'git:merge-tree'
|
|
7
17
|
| 'git:merge-tree:write-tree'
|
|
8
18
|
| 'git:push:force-if-includes'
|
|
19
|
+
| 'git:rebase:autosquash'
|
|
9
20
|
| 'git:rev-parse:end-of-options'
|
|
10
21
|
| 'git:signing:ssh'
|
|
11
22
|
| 'git:signing:x509'
|
|
23
|
+
| 'git:sparse-index'
|
|
12
24
|
| 'git:stash:push:pathspecs'
|
|
13
25
|
| 'git:stash:push:staged'
|
|
14
26
|
| 'git:stash:push:stdin'
|
|
15
27
|
| 'git:status:find-renames'
|
|
16
28
|
| 'git:status:porcelain-v2'
|
|
29
|
+
| 'git:untrackedCache'
|
|
17
30
|
| 'git:worktrees';
|
|
18
31
|
|
|
19
32
|
type ExtractPrefix<T> = T extends `${infer Prefix}:${infer Rest}`
|
|
@@ -30,18 +43,56 @@ export type FilteredGitFeatures<T extends GitFeatureOrPrefix> = T extends GitFea
|
|
|
30
43
|
export const gitMinimumVersion = '2.7.2';
|
|
31
44
|
export const gitFeaturesByVersion = new Map<GitFeatures, string>([
|
|
32
45
|
['git:checkout:pathspec-from-file', '2.26'],
|
|
46
|
+
// 2.24 is when git READS the commit-graph file by default (core.commitGraph on); writing it for
|
|
47
|
+
// older gits would be dead weight.
|
|
48
|
+
['git:commit-graph', '2.24'],
|
|
49
|
+
// Changed-path Bloom filters (`--changed-paths`), the v2 filter format — pre-2.31 shipped Bloom filters
|
|
50
|
+
// with real correctness bugs (bad results for merge commits), so 2.31 is the safe floor to write them.
|
|
51
|
+
['git:commit-graph:changed-paths', '2.31'],
|
|
33
52
|
['git:for-each-ref:worktreePath', '2.23'],
|
|
53
|
+
// `core.fsmonitor=true` selects the built-in FSMonitor daemon (accepting a bool rather than only a
|
|
54
|
+
// hook path). This 2.37 floor is the Windows + macOS one.
|
|
55
|
+
['git:fsmonitor', '2.37'],
|
|
56
|
+
// Linux got its own FSMonitor backend (inotify) only in 2.55, hence a separate floor. Note the backend
|
|
57
|
+
// places a watch on EVERY directory, so a large repo can exhaust `fs.inotify.max_user_watches` and the
|
|
58
|
+
// daemon fails at runtime even on a new enough git — the apply path must still probe, not just gate.
|
|
59
|
+
['git:fsmonitor:linux', '2.55'],
|
|
34
60
|
['git:ignoreRevsFile', '2.23'],
|
|
61
|
+
// `index.skipHash` (skip the trailing index checksum for faster writes); part of `feature.manyFiles`.
|
|
62
|
+
['git:index:skipHash', '2.40'],
|
|
63
|
+
// `git maintenance run --task=…`. The `maintenance` builtin + `commit-graph`/`gc` tasks are 2.29, but
|
|
64
|
+
// the loose-objects + incremental-repack tasks the auto tier uses landed in 2.30 (and `core.multiPackIndex`
|
|
65
|
+
// is default-on from 2.30, so no separate midx config write is needed) — 2.30 is the safe floor.
|
|
66
|
+
['git:maintenance', '2.30'],
|
|
67
|
+
// The pack-refs maintenance task landed one release after the maintenance builtin.
|
|
68
|
+
['git:maintenance:pack-refs', '2.31'],
|
|
69
|
+
// `git maintenance start` — the subcommands exist from 2.30 (cron only); launchctl (macOS) + schtasks
|
|
70
|
+
// (Windows) scheduling arrived in 2.31, so 2.31 is the cross-platform-safe floor.
|
|
71
|
+
['git:maintenance:start', '2.31'],
|
|
72
|
+
// `git maintenance start` systemd-timer scheduling. On Linux, 2.31–2.33 is cron-only and modern distros
|
|
73
|
+
// often ship without cron (scheduling then silently fails); the systemd fallback arrived in 2.34.
|
|
74
|
+
['git:maintenance:start:systemd', '2.34'],
|
|
75
|
+
// `feature.manyFiles` umbrella (index v4 + untracked cache + skipHash where available).
|
|
76
|
+
['git:manyFiles', '2.24'],
|
|
35
77
|
['git:merge-tree', '2.33'],
|
|
36
78
|
['git:merge-tree:write-tree', '2.38'],
|
|
37
79
|
['git:push:force-if-includes', '2.30.0'],
|
|
80
|
+
// `--autosquash` WITHOUT `-i` (folding `fixup!`/`squash!` commits into a plain/automatic rebase).
|
|
81
|
+
// Interactive rebases support autosquash on every git version GitLens supports, so this floor only
|
|
82
|
+
// gates the non-interactive path.
|
|
83
|
+
['git:rebase:autosquash', '2.44'],
|
|
38
84
|
['git:rev-parse:end-of-options', '2.30'],
|
|
39
85
|
['git:signing:ssh', '2.34.0'],
|
|
40
86
|
['git:signing:x509', '2.19.0'],
|
|
87
|
+
// Sparse-index support debuted earlier, but 2.33 shipped a corruption fix and 2.34 broadened command
|
|
88
|
+
// support. Use 2.34 as the conservative floor before offering a repository mutation.
|
|
89
|
+
['git:sparse-index', '2.34'],
|
|
41
90
|
['git:stash:push:pathspecs', '2.13.2'],
|
|
42
91
|
['git:stash:push:staged', '2.35.0'],
|
|
43
92
|
['git:stash:push:stdin', '2.30.0'],
|
|
44
93
|
['git:status:find-renames', '2.18'],
|
|
45
94
|
['git:status:porcelain-v2', '2.11'],
|
|
95
|
+
// `core.untrackedCache=true` (repo-local cache of untracked-file scans — the auto-tier config lever).
|
|
96
|
+
['git:untrackedCache', '2.8'],
|
|
46
97
|
['git:worktrees', '2.17.0'],
|
|
47
98
|
]);
|