@gitkraken/core-gitlens 0.3.1 → 0.4.100
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 +83 -1
- package/README.md +22 -12
- package/dist/git/cache.d.ts +29 -2
- package/dist/git/cache.d.ts.map +1 -1
- package/dist/git/cache.js +67 -7
- package/dist/git/cache.js.map +1 -1
- package/dist/git/context.d.ts +4 -3
- package/dist/git/context.d.ts.map +1 -1
- package/dist/git/context.js.map +1 -1
- package/dist/git/errors.d.ts +31 -1
- package/dist/git/errors.d.ts.map +1 -1
- package/dist/git/errors.js +29 -0
- package/dist/git/errors.js.map +1 -1
- package/dist/git/models/author.d.ts.map +1 -1
- package/dist/git/models/author.js.map +1 -1
- package/dist/git/models/autolink.d.ts.map +1 -1
- package/dist/git/models/autolink.js.map +1 -1
- package/dist/git/models/blame.d.ts.map +1 -1
- package/dist/git/models/blame.js.map +1 -1
- package/dist/git/models/branch.d.ts.map +1 -1
- package/dist/git/models/branch.js.map +1 -1
- package/dist/git/models/commit.d.ts.map +1 -1
- package/dist/git/models/commit.js +1 -1
- package/dist/git/models/commit.js.map +1 -1
- package/dist/git/models/contributor.d.ts.map +1 -1
- package/dist/git/models/contributor.js.map +1 -1
- package/dist/git/models/defaultBranch.d.ts.map +1 -1
- package/dist/git/models/defaultBranch.js.map +1 -1
- package/dist/git/models/diff.d.ts.map +1 -1
- package/dist/git/models/diff.js.map +1 -1
- package/dist/git/models/file.d.ts.map +1 -1
- package/dist/git/models/file.js.map +1 -1
- package/dist/git/models/fileChange.d.ts.map +1 -1
- package/dist/git/models/fileChange.js.map +1 -1
- package/dist/git/models/fileStatus.d.ts +22 -22
- package/dist/git/models/fileStatus.d.ts.map +1 -1
- package/dist/git/models/fileStatus.js.map +1 -1
- package/dist/git/models/graph.d.ts +122 -1
- package/dist/git/models/graph.d.ts.map +1 -1
- package/dist/git/models/graph.js +4 -0
- package/dist/git/models/graph.js.map +1 -1
- package/dist/git/models/graphSearch.d.ts.map +1 -1
- package/dist/git/models/graphSearch.js.map +1 -1
- package/dist/git/models/graphSession.d.ts +177 -0
- package/dist/git/models/graphSession.d.ts.map +1 -0
- package/dist/git/models/graphSession.js +7 -0
- package/dist/git/models/graphSession.js.map +1 -0
- package/dist/git/models/issue.d.ts +12 -2
- package/dist/git/models/issue.d.ts.map +1 -1
- package/dist/git/models/issue.js +3 -1
- package/dist/git/models/issue.js.map +1 -1
- package/dist/git/models/issueOrPullRequest.d.ts.map +1 -1
- package/dist/git/models/issueOrPullRequest.js.map +1 -1
- package/dist/git/models/lineRange.d.ts.map +1 -1
- package/dist/git/models/lineRange.js.map +1 -1
- package/dist/git/models/log.d.ts.map +1 -1
- package/dist/git/models/log.js.map +1 -1
- package/dist/git/models/mergeConflicts.d.ts.map +1 -1
- package/dist/git/models/mergeConflicts.js.map +1 -1
- package/dist/git/models/patch.d.ts.map +1 -1
- package/dist/git/models/patch.js.map +1 -1
- package/dist/git/models/pausedOperationStatus.d.ts.map +1 -1
- package/dist/git/models/pausedOperationStatus.js.map +1 -1
- package/dist/git/models/pullRequest.d.ts +27 -2
- package/dist/git/models/pullRequest.d.ts.map +1 -1
- package/dist/git/models/pullRequest.js +7 -1
- package/dist/git/models/pullRequest.js.map +1 -1
- package/dist/git/models/rebase.d.ts.map +1 -1
- package/dist/git/models/rebase.js.map +1 -1
- package/dist/git/models/reference.d.ts.map +1 -1
- package/dist/git/models/reference.js.map +1 -1
- package/dist/git/models/reflog.d.ts.map +1 -1
- package/dist/git/models/reflog.js.map +1 -1
- package/dist/git/models/remote.d.ts.map +1 -1
- package/dist/git/models/remote.js.map +1 -1
- package/dist/git/models/remoteProvider.d.ts.map +1 -1
- package/dist/git/models/remoteProvider.js.map +1 -1
- package/dist/git/models/remoteResource.d.ts.map +1 -1
- package/dist/git/models/remoteResource.js.map +1 -1
- package/dist/git/models/repository.d.ts +20 -2
- package/dist/git/models/repository.d.ts.map +1 -1
- package/dist/git/models/repository.js +19 -0
- package/dist/git/models/repository.js.map +1 -1
- package/dist/git/models/repositoryChangeEvent.d.ts.map +1 -1
- package/dist/git/models/repositoryChangeEvent.js.map +1 -1
- package/dist/git/models/repositoryIdentities.d.ts.map +1 -1
- package/dist/git/models/repositoryIdentities.js.map +1 -1
- package/dist/git/models/repositoryMetadata.d.ts.map +1 -1
- package/dist/git/models/repositoryMetadata.js.map +1 -1
- package/dist/git/models/resourceDescriptor.d.ts +16 -0
- package/dist/git/models/resourceDescriptor.d.ts.map +1 -1
- package/dist/git/models/resourceDescriptor.js.map +1 -1
- package/dist/git/models/revision.d.ts.map +1 -1
- package/dist/git/models/revision.js.map +1 -1
- package/dist/git/models/search.d.ts.map +1 -1
- package/dist/git/models/search.js.map +1 -1
- package/dist/git/models/shortlog.d.ts.map +1 -1
- package/dist/git/models/shortlog.js.map +1 -1
- package/dist/git/models/signature.d.ts +14 -0
- package/dist/git/models/signature.d.ts.map +1 -1
- package/dist/git/models/signature.js.map +1 -1
- package/dist/git/models/staging.d.ts.map +1 -1
- package/dist/git/models/staging.js.map +1 -1
- package/dist/git/models/stash.d.ts.map +1 -1
- package/dist/git/models/stash.js.map +1 -1
- package/dist/git/models/status.d.ts.map +1 -1
- package/dist/git/models/status.js.map +1 -1
- package/dist/git/models/statusFile.d.ts.map +1 -1
- package/dist/git/models/statusFile.js.map +1 -1
- package/dist/git/models/tag.d.ts +11 -1
- package/dist/git/models/tag.d.ts.map +1 -1
- package/dist/git/models/tag.js +9 -2
- package/dist/git/models/tag.js.map +1 -1
- package/dist/git/models/tree.d.ts.map +1 -1
- package/dist/git/models/tree.js.map +1 -1
- package/dist/git/models/user.d.ts.map +1 -1
- package/dist/git/models/user.js.map +1 -1
- package/dist/git/models/worktree.d.ts.map +1 -1
- package/dist/git/models/worktree.js.map +1 -1
- package/dist/git/parsers/diffParser.d.ts.map +1 -1
- package/dist/git/parsers/diffParser.js +1 -1
- package/dist/git/parsers/diffParser.js.map +1 -1
- package/dist/git/parsers/rebaseTodoParser.d.ts.map +1 -1
- package/dist/git/parsers/rebaseTodoParser.js.map +1 -1
- package/dist/git/providers/blame.d.ts.map +1 -1
- package/dist/git/providers/blame.js.map +1 -1
- package/dist/git/providers/branches.d.ts +8 -1
- package/dist/git/providers/branches.d.ts.map +1 -1
- package/dist/git/providers/branches.js.map +1 -1
- package/dist/git/providers/commits.d.ts +6 -1
- package/dist/git/providers/commits.d.ts.map +1 -1
- package/dist/git/providers/commits.js.map +1 -1
- package/dist/git/providers/config.d.ts +6 -2
- package/dist/git/providers/config.d.ts.map +1 -1
- package/dist/git/providers/config.js.map +1 -1
- package/dist/git/providers/contributors.d.ts.map +1 -1
- package/dist/git/providers/contributors.js.map +1 -1
- package/dist/git/providers/diff.d.ts.map +1 -1
- package/dist/git/providers/diff.js.map +1 -1
- package/dist/git/providers/graph.d.ts +55 -1
- package/dist/git/providers/graph.d.ts.map +1 -1
- package/dist/git/providers/graph.js.map +1 -1
- package/dist/git/providers/operations.d.ts +1 -0
- package/dist/git/providers/operations.d.ts.map +1 -1
- package/dist/git/providers/operations.js.map +1 -1
- package/dist/git/providers/patch.d.ts.map +1 -1
- package/dist/git/providers/patch.js.map +1 -1
- package/dist/git/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git/providers/pausedOperations.js.map +1 -1
- package/dist/git/providers/provider.d.ts.map +1 -1
- package/dist/git/providers/provider.js.map +1 -1
- package/dist/git/providers/refs.d.ts.map +1 -1
- package/dist/git/providers/refs.js.map +1 -1
- package/dist/git/providers/remotes.d.ts.map +1 -1
- package/dist/git/providers/remotes.js.map +1 -1
- package/dist/git/providers/revision.d.ts.map +1 -1
- package/dist/git/providers/revision.js.map +1 -1
- package/dist/git/providers/shared/remotes.d.ts.map +1 -1
- package/dist/git/providers/shared/remotes.js.map +1 -1
- package/dist/git/providers/staging.d.ts.map +1 -1
- package/dist/git/providers/staging.js.map +1 -1
- package/dist/git/providers/stash.d.ts.map +1 -1
- package/dist/git/providers/stash.js.map +1 -1
- package/dist/git/providers/status.d.ts +1 -0
- package/dist/git/providers/status.d.ts.map +1 -1
- package/dist/git/providers/status.js.map +1 -1
- package/dist/git/providers/tags.d.ts.map +1 -1
- package/dist/git/providers/tags.js.map +1 -1
- package/dist/git/providers/types.d.ts.map +1 -1
- package/dist/git/providers/types.js.map +1 -1
- package/dist/git/providers/worktrees.d.ts +5 -1
- package/dist/git/providers/worktrees.d.ts.map +1 -1
- package/dist/git/providers/worktrees.js.map +1 -1
- package/dist/git/remotes/azure-devops.d.ts.map +1 -1
- package/dist/git/remotes/azure-devops.js +27 -31
- package/dist/git/remotes/azure-devops.js.map +1 -1
- package/dist/git/remotes/bitbucket-server.d.ts.map +1 -1
- package/dist/git/remotes/bitbucket-server.js +21 -23
- package/dist/git/remotes/bitbucket-server.js.map +1 -1
- package/dist/git/remotes/bitbucket.d.ts.map +1 -1
- package/dist/git/remotes/bitbucket.js +21 -23
- package/dist/git/remotes/bitbucket.js.map +1 -1
- package/dist/git/remotes/custom.d.ts.map +1 -1
- package/dist/git/remotes/custom.js.map +1 -1
- package/dist/git/remotes/gerrit.d.ts.map +1 -1
- package/dist/git/remotes/gerrit.js +11 -13
- package/dist/git/remotes/gerrit.js.map +1 -1
- package/dist/git/remotes/gitea.d.ts.map +1 -1
- package/dist/git/remotes/gitea.js +12 -14
- package/dist/git/remotes/gitea.js.map +1 -1
- package/dist/git/remotes/github.d.ts.map +1 -1
- package/dist/git/remotes/github.js +54 -56
- package/dist/git/remotes/github.js.map +1 -1
- package/dist/git/remotes/gitlab.d.ts.map +1 -1
- package/dist/git/remotes/gitlab.js +93 -95
- package/dist/git/remotes/gitlab.js.map +1 -1
- package/dist/git/remotes/google-source.d.ts.map +1 -1
- package/dist/git/remotes/google-source.js.map +1 -1
- package/dist/git/remotes/matcher.d.ts.map +1 -1
- package/dist/git/remotes/matcher.js.map +1 -1
- package/dist/git/run.types.d.ts +62 -3
- package/dist/git/run.types.d.ts.map +1 -1
- package/dist/git/service.d.ts.map +1 -1
- package/dist/git/utils/autolink.utils.d.ts.map +1 -1
- package/dist/git/utils/autolink.utils.js.map +1 -1
- package/dist/git/utils/blame.utils.d.ts.map +1 -1
- package/dist/git/utils/blame.utils.js.map +1 -1
- package/dist/git/utils/branch.utils.d.ts.map +1 -1
- package/dist/git/utils/branch.utils.js +12 -1
- package/dist/git/utils/branch.utils.js.map +1 -1
- package/dist/git/utils/commit.utils.d.ts.map +1 -1
- package/dist/git/utils/commit.utils.js.map +1 -1
- package/dist/git/utils/conflictResolution.utils.d.ts +32 -0
- package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -1
- package/dist/git/utils/conflictResolution.utils.js +95 -0
- package/dist/git/utils/conflictResolution.utils.js.map +1 -1
- package/dist/git/utils/contributor.utils.d.ts +1 -1
- package/dist/git/utils/contributor.utils.d.ts.map +1 -1
- package/dist/git/utils/contributor.utils.js +1 -2
- package/dist/git/utils/contributor.utils.js.map +1 -1
- package/dist/git/utils/fetch.utils.d.ts.map +1 -1
- package/dist/git/utils/fetch.utils.js.map +1 -1
- package/dist/git/utils/fileStatus.utils.d.ts +7 -0
- package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/fileStatus.utils.js +6 -0
- package/dist/git/utils/fileStatus.utils.js.map +1 -1
- package/dist/git/utils/graph.utils.d.ts +20 -0
- package/dist/git/utils/graph.utils.d.ts.map +1 -0
- package/dist/git/utils/graph.utils.js +40 -0
- package/dist/git/utils/graph.utils.js.map +1 -0
- package/dist/git/utils/issue.utils.d.ts.map +1 -1
- package/dist/git/utils/issue.utils.js +1 -0
- package/dist/git/utils/issue.utils.js.map +1 -1
- package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -1
- package/dist/git/utils/mergeConflicts.utils.d.ts.map +1 -1
- package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.d.ts +13 -13
- package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
- package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/pullRequest.utils.js +9 -0
- package/dist/git/utils/pullRequest.utils.js.map +1 -1
- package/dist/git/utils/reachability.utils.d.ts +20 -2
- package/dist/git/utils/reachability.utils.d.ts.map +1 -1
- package/dist/git/utils/reachability.utils.js +68 -7
- package/dist/git/utils/reachability.utils.js.map +1 -1
- package/dist/git/utils/rebase.utils.d.ts.map +1 -1
- package/dist/git/utils/rebase.utils.js.map +1 -1
- package/dist/git/utils/reference.utils.d.ts.map +1 -1
- package/dist/git/utils/reference.utils.js.map +1 -1
- package/dist/git/utils/remote.utils.d.ts.map +1 -1
- package/dist/git/utils/remote.utils.js.map +1 -1
- package/dist/git/utils/repository.utils.d.ts.map +1 -1
- package/dist/git/utils/repository.utils.js.map +1 -1
- package/dist/git/utils/resourceDescriptor.utils.d.ts.map +1 -1
- package/dist/git/utils/resourceDescriptor.utils.js.map +1 -1
- package/dist/git/utils/revision.utils.d.ts.map +1 -1
- package/dist/git/utils/revision.utils.js.map +1 -1
- package/dist/git/utils/search.utils.d.ts.map +1 -1
- package/dist/git/utils/search.utils.js.map +1 -1
- package/dist/git/utils/sorting.d.ts.map +1 -1
- package/dist/git/utils/sorting.js.map +1 -1
- package/dist/git/utils/sshKey.utils.d.ts +7 -0
- package/dist/git/utils/sshKey.utils.d.ts.map +1 -0
- package/dist/git/utils/sshKey.utils.js +25 -0
- package/dist/git/utils/sshKey.utils.js.map +1 -0
- package/dist/git/utils/status.utils.d.ts.map +1 -1
- package/dist/git/utils/status.utils.js.map +1 -1
- package/dist/git/utils/statusFile.utils.d.ts.map +1 -1
- package/dist/git/utils/statusFile.utils.js.map +1 -1
- package/dist/git/utils/tag.utils.d.ts.map +1 -1
- package/dist/git/utils/tag.utils.js.map +1 -1
- package/dist/git/utils/tooltip.utils.d.ts.map +1 -1
- package/dist/git/utils/tooltip.utils.js.map +1 -1
- package/dist/git/utils/uriAuthority.d.ts.map +1 -1
- package/dist/git/utils/uriAuthority.js.map +1 -1
- package/dist/git/utils/user.utils.d.ts.map +1 -1
- package/dist/git/utils/user.utils.js.map +1 -1
- package/dist/git/utils/worktree.utils.d.ts.map +1 -1
- package/dist/git/utils/worktree.utils.js.map +1 -1
- package/dist/git/watching/changeEvent.d.ts.map +1 -1
- package/dist/git/watching/changeEvent.js.map +1 -1
- package/dist/git/watching/classifyChange.d.ts.map +1 -1
- package/dist/git/watching/classifyChange.js.map +1 -1
- package/dist/git/watching/gitIgnoreFilter.d.ts.map +1 -1
- package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
- package/dist/git/watching/initWatcher.d.ts.map +1 -1
- package/dist/git/watching/initWatcher.js.map +1 -1
- package/dist/git/watching/provider.d.ts.map +1 -1
- package/dist/git/watching/provider.js.map +1 -1
- package/dist/git/watching/watchGroup.d.ts.map +1 -1
- package/dist/git/watching/watchGroup.js.map +1 -1
- package/dist/git/watching/watchService.d.ts +4 -0
- package/dist/git/watching/watchService.d.ts.map +1 -1
- package/dist/git/watching/watchService.js +15 -1
- package/dist/git/watching/watchService.js.map +1 -1
- package/dist/git/watching/watchSession.d.ts +7 -0
- package/dist/git/watching/watchSession.d.ts.map +1 -1
- package/dist/git/watching/watchSession.js +14 -2
- package/dist/git/watching/watchSession.js.map +1 -1
- package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
- package/dist/git/watching/watcherPatterns.js.map +1 -1
- package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.errors.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.errors.js.map +1 -1
- package/dist/git-cli/exec/exec.js.map +1 -1
- package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.types.js.map +1 -1
- package/dist/git-cli/exec/features.d.ts.map +1 -1
- package/dist/git-cli/exec/features.js.map +1 -1
- package/dist/git-cli/exec/git.d.ts +19 -27
- package/dist/git-cli/exec/git.d.ts.map +1 -1
- package/dist/git-cli/exec/git.js +126 -34
- package/dist/git-cli/exec/git.js.map +1 -1
- package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
- package/dist/git-cli/exec/gitQueue.js.map +1 -1
- package/dist/git-cli/exec/locator.d.ts.map +1 -1
- package/dist/git-cli/exec/locator.js.map +1 -1
- package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/blameParser.js.map +1 -1
- package/dist/git-cli/parsers/indexParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/indexParser.js.map +1 -1
- package/dist/git-cli/parsers/logParser.d.ts +9 -1
- package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/logParser.js +141 -60
- package/dist/git-cli/parsers/logParser.js.map +1 -1
- package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -1
- package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/refParser.js.map +1 -1
- package/dist/git-cli/parsers/reflogParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/reflogParser.js.map +1 -1
- package/dist/git-cli/parsers/remoteParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/remoteParser.js.map +1 -1
- package/dist/git-cli/parsers/shortlogParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/shortlogParser.js.map +1 -1
- package/dist/git-cli/parsers/signatureParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/signatureParser.js.map +1 -1
- package/dist/git-cli/parsers/sshSignatureParser.d.ts +21 -0
- package/dist/git-cli/parsers/sshSignatureParser.d.ts.map +1 -0
- package/dist/git-cli/parsers/sshSignatureParser.js +78 -0
- package/dist/git-cli/parsers/sshSignatureParser.js.map +1 -0
- package/dist/git-cli/parsers/statusParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/statusParser.js.map +1 -1
- package/dist/git-cli/parsers/treeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/treeParser.js.map +1 -1
- package/dist/git-cli/parsers/worktreeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/worktreeParser.js +5 -7
- package/dist/git-cli/parsers/worktreeParser.js.map +1 -1
- package/dist/git-cli/providers/blame.d.ts.map +1 -1
- package/dist/git-cli/providers/blame.js.map +1 -1
- package/dist/git-cli/providers/branches.d.ts +1 -0
- package/dist/git-cli/providers/branches.d.ts.map +1 -1
- package/dist/git-cli/providers/branches.js +51 -32
- package/dist/git-cli/providers/branches.js.map +1 -1
- package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +1 -1
- package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -1
- package/dist/git-cli/providers/commits.d.ts +12 -1
- package/dist/git-cli/providers/commits.d.ts.map +1 -1
- package/dist/git-cli/providers/commits.js +89 -8
- package/dist/git-cli/providers/commits.js.map +1 -1
- package/dist/git-cli/providers/config.d.ts.map +1 -1
- package/dist/git-cli/providers/config.js.map +1 -1
- package/dist/git-cli/providers/contributors.d.ts.map +1 -1
- package/dist/git-cli/providers/contributors.js.map +1 -1
- package/dist/git-cli/providers/diff.d.ts.map +1 -1
- package/dist/git-cli/providers/diff.js.map +1 -1
- package/dist/git-cli/providers/graph.d.ts +35 -1
- package/dist/git-cli/providers/graph.d.ts.map +1 -1
- package/dist/git-cli/providers/graph.js +1434 -330
- package/dist/git-cli/providers/graph.js.map +1 -1
- 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 +22 -1
- package/dist/git-cli/providers/operations.js.map +1 -1
- package/dist/git-cli/providers/patch.d.ts.map +1 -1
- package/dist/git-cli/providers/patch.js.map +1 -1
- package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git-cli/providers/pausedOperations.js +3 -3
- package/dist/git-cli/providers/pausedOperations.js.map +1 -1
- package/dist/git-cli/providers/refs.d.ts.map +1 -1
- package/dist/git-cli/providers/refs.js.map +1 -1
- package/dist/git-cli/providers/remotes.d.ts.map +1 -1
- package/dist/git-cli/providers/remotes.js.map +1 -1
- package/dist/git-cli/providers/revision.d.ts +1 -0
- package/dist/git-cli/providers/revision.d.ts.map +1 -1
- package/dist/git-cli/providers/revision.js +33 -0
- package/dist/git-cli/providers/revision.js.map +1 -1
- package/dist/git-cli/providers/staging.d.ts.map +1 -1
- package/dist/git-cli/providers/staging.js.map +1 -1
- package/dist/git-cli/providers/stash.d.ts.map +1 -1
- package/dist/git-cli/providers/stash.js.map +1 -1
- package/dist/git-cli/providers/status.d.ts +28 -0
- package/dist/git-cli/providers/status.d.ts.map +1 -1
- package/dist/git-cli/providers/status.js +240 -154
- package/dist/git-cli/providers/status.js.map +1 -1
- package/dist/git-cli/providers/tags.d.ts.map +1 -1
- package/dist/git-cli/providers/tags.js +2 -1
- package/dist/git-cli/providers/tags.js.map +1 -1
- package/dist/git-cli/providers/worktrees.d.ts +4 -1
- package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
- package/dist/git-cli/providers/worktrees.js +31 -3
- package/dist/git-cli/providers/worktrees.js.map +1 -1
- package/dist/git-cli/service.d.ts.map +1 -1
- package/dist/git-cli/service.js +8 -0
- package/dist/git-cli/service.js.map +1 -1
- package/dist/ipc/ipcServer.d.ts.map +1 -1
- package/dist/ipc/ipcServer.js +1 -1
- package/dist/ipc/ipcServer.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts +6 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.js +19 -0
- package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +68 -0
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.js +262 -8
- package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
- package/dist/plus/agents/types.d.ts +36 -2
- package/dist/plus/agents/types.d.ts.map +1 -1
- package/dist/plus/ai/constants.d.ts +1 -2
- package/dist/plus/ai/constants.d.ts.map +1 -1
- package/dist/plus/ai/constants.js +1 -8
- package/dist/plus/ai/constants.js.map +1 -1
- package/dist/plus/ai/errors.d.ts.map +1 -1
- package/dist/plus/ai/errors.js.map +1 -1
- package/dist/plus/ai/models/conversation.d.ts.map +1 -1
- package/dist/plus/ai/models/conversation.js.map +1 -1
- package/dist/plus/ai/models/model.d.ts +2 -1
- package/dist/plus/ai/models/model.d.ts.map +1 -1
- package/dist/plus/ai/models/model.js +50 -1
- package/dist/plus/ai/models/model.js.map +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts +5 -2
- package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
- package/dist/plus/ai/models/promptTemplates.js.map +1 -1
- package/dist/plus/ai/models/provider.d.ts.map +1 -1
- package/dist/plus/ai/models/provider.js.map +1 -1
- package/dist/plus/ai/models/results.d.ts.map +1 -1
- package/dist/plus/ai/models/results.js.map +1 -1
- package/dist/plus/ai/prompts.d.ts +1 -1
- package/dist/plus/ai/prompts.d.ts.map +1 -1
- package/dist/plus/ai/prompts.js +15 -47
- package/dist/plus/ai/prompts.js.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.d.ts +5 -0
- package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.js +40 -3
- package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
- package/dist/plus/ai/providers/azureProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/azureProvider.js.map +1 -1
- package/dist/plus/ai/providers/context.d.ts.map +1 -1
- package/dist/plus/ai/providers/context.js.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.js +17 -1
- package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.js +25 -6
- package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.js +1 -0
- package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.js +21 -18
- package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +10 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js +9 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.js +14 -1
- package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
- package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/ai.utils.js +5 -7
- package/dist/plus/ai/utils/ai.utils.js.map +1 -1
- package/dist/plus/ai/utils/results.utils.d.ts +3 -0
- package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/results.utils.js +26 -0
- package/dist/plus/ai/utils/results.utils.js.map +1 -1
- package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
- package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
- package/dist/plus/git-github/api/config.d.ts.map +1 -1
- package/dist/plus/git-github/api/config.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +71 -15
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +350 -84
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/api/github.utils.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.utils.js.map +1 -1
- package/dist/plus/git-github/api/token.d.ts.map +1 -1
- package/dist/plus/git-github/api/token.js.map +1 -1
- package/dist/plus/git-github/api/tokenUtils.d.ts.map +1 -1
- package/dist/plus/git-github/api/tokenUtils.js.map +1 -1
- package/dist/plus/git-github/api/types.d.ts.map +1 -1
- package/dist/plus/git-github/api/types.js.map +1 -1
- package/dist/plus/git-github/context.d.ts.map +1 -1
- package/dist/plus/git-github/models.d.ts +5 -0
- package/dist/plus/git-github/models.d.ts.map +1 -1
- package/dist/plus/git-github/models.js +27 -2
- package/dist/plus/git-github/models.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.map +1 -1
- package/dist/plus/git-github/providers/github/branches.d.ts +2 -1
- package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/branches.js +7 -3
- package/dist/plus/git-github/providers/github/branches.js.map +1 -1
- package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/commits.js.map +1 -1
- package/dist/plus/git-github/providers/github/config.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/config.js.map +1 -1
- package/dist/plus/git-github/providers/github/contributors.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/contributors.js.map +1 -1
- package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/diff.js +2 -2
- package/dist/plus/git-github/providers/github/diff.js.map +1 -1
- package/dist/plus/git-github/providers/github/graph.d.ts +12 -1
- package/dist/plus/git-github/providers/github/graph.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/graph.js +85 -0
- package/dist/plus/git-github/providers/github/graph.js.map +1 -1
- package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/refs.js.map +1 -1
- package/dist/plus/git-github/providers/github/remotes.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/remotes.js.map +1 -1
- package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/revision.js.map +1 -1
- package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/status.js.map +1 -1
- package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/tags.js +3 -1
- package/dist/plus/git-github/providers/github/tags.js.map +1 -1
- package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
- package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
- package/dist/plus/git-github/providers/githubProvider.d.ts.map +1 -1
- package/dist/plus/git-github/providers/githubProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +30 -0
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +1 -0
- package/dist/plus/integrations/authentication/cloudIntegrationService.js +214 -0
- package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -0
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +114 -0
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -0
- package/dist/plus/integrations/authentication/configuredIntegrationService.js +497 -0
- package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +112 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +1 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +217 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts +62 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +1 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js +126 -0
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +16 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +1 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.js +53 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -0
- package/dist/plus/integrations/authentication/models.d.ts +120 -0
- package/dist/plus/integrations/authentication/models.d.ts.map +1 -0
- package/dist/plus/integrations/authentication/models.js +64 -0
- package/dist/plus/integrations/authentication/models.js.map +1 -0
- package/dist/plus/integrations/collectionMetadata.d.ts +21 -0
- package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -0
- package/dist/plus/integrations/collectionMetadata.js +121 -0
- package/dist/plus/integrations/collectionMetadata.js.map +1 -0
- package/dist/plus/integrations/constants.d.ts +57 -0
- package/dist/plus/integrations/constants.d.ts.map +1 -0
- package/dist/plus/integrations/constants.js +138 -0
- package/dist/plus/integrations/constants.js.map +1 -0
- package/dist/plus/integrations/context.d.ts +358 -0
- package/dist/plus/integrations/context.d.ts.map +1 -0
- package/dist/plus/integrations/context.js +2 -0
- package/dist/plus/integrations/context.js.map +1 -0
- package/dist/plus/integrations/errors.d.ts +79 -0
- package/dist/plus/integrations/errors.d.ts.map +1 -0
- package/dist/plus/integrations/errors.js +150 -0
- package/dist/plus/integrations/errors.js.map +1 -0
- package/dist/plus/integrations/index.d.ts +77 -0
- package/dist/plus/integrations/index.d.ts.map +1 -0
- package/dist/plus/integrations/index.js +64 -0
- package/dist/plus/integrations/index.js.map +1 -0
- package/dist/plus/integrations/integrationService.d.ts +379 -0
- package/dist/plus/integrations/integrationService.d.ts.map +1 -0
- package/dist/plus/integrations/integrationService.js +1895 -0
- package/dist/plus/integrations/integrationService.js.map +1 -0
- package/dist/plus/integrations/lite.d.ts +47 -0
- package/dist/plus/integrations/lite.d.ts.map +1 -0
- package/dist/plus/integrations/lite.js +141 -0
- package/dist/plus/integrations/lite.js.map +1 -0
- package/dist/plus/integrations/manager.d.ts +332 -0
- package/dist/plus/integrations/manager.d.ts.map +1 -0
- package/dist/plus/integrations/manager.js +2 -0
- package/dist/plus/integrations/manager.js.map +1 -0
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +341 -0
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -0
- package/dist/plus/integrations/models/gitHostIntegration.js +1146 -0
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -0
- package/dist/plus/integrations/models/integration.d.ts +212 -0
- package/dist/plus/integrations/models/integration.d.ts.map +1 -0
- package/dist/plus/integrations/models/integration.js +627 -0
- package/dist/plus/integrations/models/integration.js.map +1 -0
- package/dist/plus/integrations/models/issuesIntegration.d.ts +108 -0
- package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -0
- package/dist/plus/integrations/models/issuesIntegration.js +216 -0
- package/dist/plus/integrations/models/issuesIntegration.js.map +1 -0
- package/dist/plus/integrations/providerFilters.d.ts +12 -0
- package/dist/plus/integrations/providerFilters.d.ts.map +1 -0
- package/dist/plus/integrations/providerFilters.js +14 -0
- package/dist/plus/integrations/providerFilters.js.map +1 -0
- package/dist/plus/integrations/providers/apiClients.d.ts +25 -0
- package/dist/plus/integrations/providers/apiClients.d.ts.map +1 -0
- package/dist/plus/integrations/providers/apiClients.js +39 -0
- package/dist/plus/integrations/providers/apiClients.js.map +1 -0
- package/dist/plus/integrations/providers/apiConfig.d.ts +52 -0
- package/dist/plus/integrations/providers/apiConfig.d.ts.map +1 -0
- package/dist/plus/integrations/providers/apiConfig.js +19 -0
- package/dist/plus/integrations/providers/apiConfig.js.map +1 -0
- package/dist/plus/integrations/providers/azure/azure.d.ts +59 -0
- package/dist/plus/integrations/providers/azure/azure.d.ts.map +1 -0
- package/dist/plus/integrations/providers/azure/azure.js +519 -0
- package/dist/plus/integrations/providers/azure/azure.js.map +1 -0
- package/dist/plus/integrations/providers/azure/models.d.ts +302 -0
- package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -0
- package/dist/plus/integrations/providers/azure/models.js +203 -0
- package/dist/plus/integrations/providers/azure/models.js.map +1 -0
- package/dist/plus/integrations/providers/azureDevOps.d.ts +141 -0
- package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -0
- package/dist/plus/integrations/providers/azureDevOps.js +925 -0
- package/dist/plus/integrations/providers/azureDevOps.js.map +1 -0
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +53 -0
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +1 -0
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js +589 -0
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -0
- package/dist/plus/integrations/providers/bitbucket/models.d.ts +222 -0
- package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -0
- package/dist/plus/integrations/providers/bitbucket/models.js +158 -0
- package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -0
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +138 -0
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +1 -0
- package/dist/plus/integrations/providers/bitbucket-server/models.js +130 -0
- package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -0
- package/dist/plus/integrations/providers/bitbucket-server.d.ts +84 -0
- package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -0
- package/dist/plus/integrations/providers/bitbucket-server.js +242 -0
- package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -0
- package/dist/plus/integrations/providers/bitbucket.d.ts +84 -0
- package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -0
- package/dist/plus/integrations/providers/bitbucket.js +477 -0
- package/dist/plus/integrations/providers/bitbucket.js.map +1 -0
- package/dist/plus/integrations/providers/github/github.d.ts +5 -0
- package/dist/plus/integrations/providers/github/github.d.ts.map +1 -0
- package/dist/plus/integrations/providers/github/github.js +47 -0
- package/dist/plus/integrations/providers/github/github.js.map +1 -0
- package/dist/plus/integrations/providers/github/github.utils.d.ts +11 -0
- package/dist/plus/integrations/providers/github/github.utils.d.ts.map +1 -0
- package/dist/plus/integrations/providers/github/github.utils.js +6 -0
- package/dist/plus/integrations/providers/github/github.utils.js.map +1 -0
- package/dist/plus/integrations/providers/github/models.d.ts +3 -0
- package/dist/plus/integrations/providers/github/models.d.ts.map +1 -0
- package/dist/plus/integrations/providers/github/models.js +2 -0
- package/dist/plus/integrations/providers/github/models.js.map +1 -0
- package/dist/plus/integrations/providers/github.d.ts +116 -0
- package/dist/plus/integrations/providers/github.d.ts.map +1 -0
- package/dist/plus/integrations/providers/github.js +445 -0
- package/dist/plus/integrations/providers/github.js.map +1 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +71 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +1 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.js +902 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +27 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +1 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +53 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -0
- package/dist/plus/integrations/providers/gitlab/models.d.ts +138 -0
- package/dist/plus/integrations/providers/gitlab/models.d.ts.map +1 -0
- package/dist/plus/integrations/providers/gitlab/models.js +99 -0
- package/dist/plus/integrations/providers/gitlab/models.js.map +1 -0
- package/dist/plus/integrations/providers/gitlab.d.ts +124 -0
- package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -0
- package/dist/plus/integrations/providers/gitlab.js +519 -0
- package/dist/plus/integrations/providers/gitlab.js.map +1 -0
- package/dist/plus/integrations/providers/jira.d.ts +57 -0
- package/dist/plus/integrations/providers/jira.d.ts.map +1 -0
- package/dist/plus/integrations/providers/jira.js +425 -0
- package/dist/plus/integrations/providers/jira.js.map +1 -0
- package/dist/plus/integrations/providers/linear.d.ts +58 -0
- package/dist/plus/integrations/providers/linear.d.ts.map +1 -0
- package/dist/plus/integrations/providers/linear.js +304 -0
- package/dist/plus/integrations/providers/linear.js.map +1 -0
- package/dist/plus/integrations/providers/models.d.ts +712 -0
- package/dist/plus/integrations/providers/models.d.ts.map +1 -0
- package/dist/plus/integrations/providers/models.js +850 -0
- package/dist/plus/integrations/providers/models.js.map +1 -0
- package/dist/plus/integrations/providers/providersApi.d.ts +262 -0
- package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -0
- package/dist/plus/integrations/providers/providersApi.js +1033 -0
- package/dist/plus/integrations/providers/providersApi.js.map +1 -0
- package/dist/plus/integrations/providers/trello.d.ts +47 -0
- package/dist/plus/integrations/providers/trello.d.ts.map +1 -0
- package/dist/plus/integrations/providers/trello.js +141 -0
- package/dist/plus/integrations/providers/trello.js.map +1 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts +29 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js +154 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -0
- package/dist/plus/integrations/providers/utils.d.ts +75 -0
- package/dist/plus/integrations/providers/utils.d.ts.map +1 -0
- package/dist/plus/integrations/providers/utils.js +313 -0
- package/dist/plus/integrations/providers/utils.js.map +1 -0
- package/dist/plus/integrations/reads/context.d.ts +52 -0
- package/dist/plus/integrations/reads/context.d.ts.map +1 -0
- package/dist/plus/integrations/reads/context.js +2 -0
- package/dist/plus/integrations/reads/context.js.map +1 -0
- package/dist/plus/integrations/reads/cursors.d.ts +66 -0
- package/dist/plus/integrations/reads/cursors.d.ts.map +1 -0
- package/dist/plus/integrations/reads/cursors.js +133 -0
- package/dist/plus/integrations/reads/cursors.js.map +1 -0
- package/dist/plus/integrations/reads/drains.d.ts +60 -0
- package/dist/plus/integrations/reads/drains.d.ts.map +1 -0
- package/dist/plus/integrations/reads/drains.js +255 -0
- package/dist/plus/integrations/reads/drains.js.map +1 -0
- package/dist/plus/integrations/reads/filters.d.ts +81 -0
- package/dist/plus/integrations/reads/filters.d.ts.map +1 -0
- package/dist/plus/integrations/reads/filters.js +87 -0
- package/dist/plus/integrations/reads/filters.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.d.ts +17 -0
- package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.js +348 -0
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts +53 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js +85 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -0
- package/dist/plus/integrations/reads/issueTracker.d.ts +19 -0
- package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issueTracker.js +346 -0
- package/dist/plus/integrations/reads/issueTracker.js.map +1 -0
- package/dist/plus/integrations/reads/issues.d.ts +34 -0
- package/dist/plus/integrations/reads/issues.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issues.js +244 -0
- package/dist/plus/integrations/reads/issues.js.map +1 -0
- package/dist/plus/integrations/reads/paging.d.ts +136 -0
- package/dist/plus/integrations/reads/paging.d.ts.map +1 -0
- package/dist/plus/integrations/reads/paging.js +221 -0
- package/dist/plus/integrations/reads/paging.js.map +1 -0
- package/dist/plus/integrations/reads/pullRequests.d.ts +32 -0
- package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -0
- package/dist/plus/integrations/reads/pullRequests.js +151 -0
- package/dist/plus/integrations/reads/pullRequests.js.map +1 -0
- package/dist/plus/integrations/reads/warnings.d.ts +47 -0
- package/dist/plus/integrations/reads/warnings.d.ts.map +1 -0
- package/dist/plus/integrations/reads/warnings.js +81 -0
- package/dist/plus/integrations/reads/warnings.js.map +1 -0
- package/dist/plus/integrations/results.d.ts +189 -0
- package/dist/plus/integrations/results.d.ts.map +1 -0
- package/dist/plus/integrations/results.js +62 -0
- package/dist/plus/integrations/results.js.map +1 -0
- package/dist/plus/integrations/telemetry.d.ts +26 -0
- package/dist/plus/integrations/telemetry.d.ts.map +1 -0
- package/dist/plus/integrations/telemetry.js +11 -0
- package/dist/plus/integrations/telemetry.js.map +1 -0
- package/dist/plus/integrations/utils/domain.utils.d.ts +5 -0
- package/dist/plus/integrations/utils/domain.utils.d.ts.map +1 -0
- package/dist/plus/integrations/utils/domain.utils.js +27 -0
- package/dist/plus/integrations/utils/domain.utils.js.map +1 -0
- package/dist/plus/integrations/utils/integration.utils.d.ts +40 -0
- package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -0
- package/dist/plus/integrations/utils/integration.utils.js +182 -0
- package/dist/plus/integrations/utils/integration.utils.js.map +1 -0
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/brand.d.ts.map +1 -1
- package/dist/utils/cancellation.d.ts +13 -0
- package/dist/utils/cancellation.d.ts.map +1 -1
- package/dist/utils/cancellation.js +52 -7
- package/dist/utils/cancellation.js.map +1 -1
- package/dist/utils/charCode.d.ts.map +1 -1
- package/dist/utils/coalescedRun.d.ts +16 -0
- package/dist/utils/coalescedRun.d.ts.map +1 -0
- package/dist/utils/coalescedRun.js +43 -0
- package/dist/utils/coalescedRun.js.map +1 -0
- package/dist/utils/color.d.ts.map +1 -1
- package/dist/utils/color.js +3 -3
- package/dist/utils/color.js.map +1 -1
- package/dist/utils/date.d.ts +24 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +62 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/debounce.js +1 -1
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/decorators/debounce.d.ts.map +1 -1
- package/dist/utils/decorators/debounce.js.map +1 -1
- package/dist/utils/decorators/gate.d.ts.map +1 -1
- package/dist/utils/decorators/gate.js +2 -2
- package/dist/utils/decorators/gate.js.map +1 -1
- package/dist/utils/decorators/log.d.ts.map +1 -1
- package/dist/utils/decorators/log.js +5 -5
- package/dist/utils/decorators/log.js.map +1 -1
- package/dist/utils/decorators/memoize.d.ts.map +1 -1
- package/dist/utils/decorators/memoize.js +2 -2
- package/dist/utils/decorators/memoize.js.map +1 -1
- package/dist/utils/decorators/resolver.d.ts.map +1 -1
- package/dist/utils/decorators/resolver.js.map +1 -1
- package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
- package/dist/utils/decorators/sequentialize.js +2 -2
- package/dist/utils/decorators/sequentialize.js.map +1 -1
- package/dist/utils/decorators/serializable.d.ts.map +1 -1
- package/dist/utils/decorators/serializable.js +1 -1
- package/dist/utils/decorators/serializable.js.map +1 -1
- package/dist/utils/dedupedAsyncCache.d.ts.map +1 -1
- package/dist/utils/disposable.d.ts +15 -2
- package/dist/utils/disposable.d.ts.map +1 -1
- package/dist/utils/disposable.js.map +1 -1
- package/dist/utils/env/browser/base64.d.ts.map +1 -1
- package/dist/utils/env/browser/base64.js.map +1 -1
- package/dist/utils/env/browser/crypto.d.ts.map +1 -1
- package/dist/utils/env/browser/crypto.js.map +1 -1
- package/dist/utils/env/browser/fs.d.ts.map +1 -1
- package/dist/utils/env/browser/fs.js.map +1 -1
- package/dist/utils/env/browser/hex.d.ts.map +1 -1
- package/dist/utils/env/browser/hex.js.map +1 -1
- package/dist/utils/env/browser/hrtime.d.ts.map +1 -1
- package/dist/utils/env/browser/hrtime.js.map +1 -1
- package/dist/utils/env/browser/logScope.d.ts.map +1 -1
- package/dist/utils/env/browser/logScope.js.map +1 -1
- package/dist/utils/env/browser/md5.d.ts.map +1 -1
- package/dist/utils/env/browser/md5.js.map +1 -1
- package/dist/utils/env/browser/platform.d.ts.map +1 -1
- package/dist/utils/env/browser/platform.js.map +1 -1
- package/dist/utils/env/node/base64.d.ts.map +1 -1
- package/dist/utils/env/node/base64.js.map +1 -1
- package/dist/utils/env/node/crypto.d.ts.map +1 -1
- package/dist/utils/env/node/crypto.js.map +1 -1
- package/dist/utils/env/node/exec.d.ts +9 -1
- package/dist/utils/env/node/exec.d.ts.map +1 -1
- package/dist/utils/env/node/exec.js +11 -4
- package/dist/utils/env/node/exec.js.map +1 -1
- package/dist/utils/env/node/fs.d.ts.map +1 -1
- package/dist/utils/env/node/fs.js.map +1 -1
- package/dist/utils/env/node/hex.d.ts.map +1 -1
- package/dist/utils/env/node/hex.js.map +1 -1
- package/dist/utils/env/node/hrtime.d.ts.map +1 -1
- package/dist/utils/env/node/hrtime.js.map +1 -1
- package/dist/utils/env/node/logScope.d.ts.map +1 -1
- package/dist/utils/env/node/logScope.js.map +1 -1
- package/dist/utils/env/node/platform.d.ts.map +1 -1
- package/dist/utils/env/node/platform.js.map +1 -1
- package/dist/utils/event.d.ts.map +1 -1
- package/dist/utils/event.js +18 -22
- package/dist/utils/event.js.map +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js.map +1 -1
- package/dist/utils/function.d.ts.map +1 -1
- package/dist/utils/function.js +3 -3
- package/dist/utils/function.js.map +1 -1
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/iterable.d.ts.map +1 -1
- package/dist/utils/iterable.js +2 -6
- package/dist/utils/iterable.js.map +1 -1
- package/dist/utils/lazy.d.ts.map +1 -1
- package/dist/utils/lazy.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/logger.scoped.js +1 -1
- package/dist/utils/logger.scoped.js.map +1 -1
- package/dist/utils/lruMap.d.ts.map +1 -1
- package/dist/utils/lruMap.js.map +1 -1
- package/dist/utils/mru.d.ts.map +1 -1
- package/dist/utils/mru.js.map +1 -1
- package/dist/utils/object.js.map +1 -1
- package/dist/utils/paging.d.ts +29 -0
- package/dist/utils/paging.d.ts.map +1 -1
- package/dist/utils/paging.js +18 -0
- package/dist/utils/paging.js.map +1 -1
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/promise.d.ts +10 -0
- package/dist/utils/promise.d.ts.map +1 -1
- package/dist/utils/promise.js +26 -3
- package/dist/utils/promise.js.map +1 -1
- package/dist/utils/promiseCache.d.ts +12 -2
- package/dist/utils/promiseCache.d.ts.map +1 -1
- package/dist/utils/promiseCache.js +80 -50
- package/dist/utils/promiseCache.js.map +1 -1
- package/dist/utils/searchTree.d.ts.map +1 -1
- package/dist/utils/searchTree.js +4 -1
- package/dist/utils/searchTree.js.map +1 -1
- package/dist/utils/stopwatch.d.ts.map +1 -1
- package/dist/utils/string.js +1 -1
- package/dist/utils/string.js.map +1 -1
- package/dist/utils/subscriptionManager.d.ts.map +1 -1
- package/dist/utils/subscriptionManager.js.map +1 -1
- package/dist/utils/trie.d.ts.map +1 -1
- package/dist/utils/trie.js +1 -0
- package/dist/utils/trie.js.map +1 -1
- package/docs/integrations.md +372 -0
- package/docs/kepler-read-api-parity.md +112 -0
- package/package.json +238 -172
- package/src/git/cache.ts +75 -8
- package/src/git/context.ts +4 -3
- package/src/git/errors.ts +36 -1
- package/src/git/models/commit.ts +1 -1
- package/src/git/models/graph.ts +147 -0
- package/src/git/models/graphSession.ts +205 -0
- package/src/git/models/issue.ts +12 -1
- package/src/git/models/pullRequest.ts +27 -1
- package/src/git/models/repository.ts +24 -1
- package/src/git/models/resourceDescriptor.ts +17 -0
- package/src/git/models/signature.ts +16 -0
- package/src/git/models/tag.ts +6 -1
- package/src/git/parsers/diffParser.ts +1 -1
- package/src/git/providers/branches.ts +6 -1
- package/src/git/providers/commits.ts +6 -1
- package/src/git/providers/config.ts +5 -1
- package/src/git/providers/graph.ts +69 -2
- package/src/git/providers/operations.ts +1 -1
- package/src/git/providers/status.ts +1 -1
- package/src/git/providers/worktrees.ts +17 -3
- package/src/git/remotes/azure-devops.ts +29 -33
- package/src/git/remotes/bitbucket-server.ts +23 -25
- package/src/git/remotes/bitbucket.ts +23 -25
- package/src/git/remotes/gerrit.ts +12 -14
- package/src/git/remotes/gitea.ts +13 -15
- package/src/git/remotes/github.ts +56 -58
- package/src/git/remotes/gitlab.ts +102 -104
- package/src/git/run.types.ts +54 -4
- package/src/git/utils/branch.utils.ts +12 -1
- package/src/git/utils/conflictResolution.utils.ts +126 -0
- package/src/git/utils/contributor.utils.ts +1 -1
- package/src/git/utils/fileStatus.utils.ts +7 -0
- package/src/git/utils/graph.utils.ts +46 -0
- package/src/git/utils/issue.utils.ts +1 -0
- package/src/git/utils/pullRequest.utils.ts +9 -0
- package/src/git/utils/reachability.utils.ts +79 -8
- package/src/git/utils/sshKey.utils.ts +30 -0
- package/src/git/watching/watchService.ts +16 -1
- package/src/git/watching/watchSession.ts +20 -2
- package/src/git-cli/exec/git.ts +144 -42
- package/src/git-cli/parsers/logParser.ts +83 -1
- package/src/git-cli/parsers/sshSignatureParser.ts +85 -0
- package/src/git-cli/parsers/worktreeParser.ts +5 -7
- package/src/git-cli/providers/branches.ts +60 -38
- package/src/git-cli/providers/commits.ts +102 -9
- package/src/git-cli/providers/graph.ts +1771 -393
- package/src/git-cli/providers/operations.ts +22 -2
- package/src/git-cli/providers/pausedOperations.ts +3 -3
- package/src/git-cli/providers/revision.ts +42 -0
- package/src/git-cli/providers/status.ts +333 -178
- package/src/git-cli/providers/tags.ts +2 -0
- package/src/git-cli/providers/worktrees.ts +57 -6
- package/src/git-cli/service.ts +9 -0
- package/src/ipc/ipcServer.ts +1 -1
- package/src/plus/agents/providers/claudeCodeProvider.ts +25 -0
- package/src/plus/agents/providers/claudeCodeTranscript.ts +320 -8
- package/src/plus/agents/types.ts +34 -0
- package/src/plus/ai/constants.ts +1 -9
- package/src/plus/ai/models/model.ts +53 -2
- package/src/plus/ai/models/promptTemplates.ts +9 -2
- package/src/plus/ai/prompts.ts +16 -48
- package/src/plus/ai/providers/anthropicProvider.ts +45 -3
- package/src/plus/ai/providers/deepSeekProvider.ts +17 -1
- package/src/plus/ai/providers/geminiProvider.ts +25 -6
- package/src/plus/ai/providers/gitkrakenProvider.ts +2 -0
- package/src/plus/ai/providers/huggingFaceProvider.ts +28 -21
- package/src/plus/ai/providers/openAICompatibleProviderBase.ts +16 -1
- package/src/plus/ai/providers/xaiProvider.ts +14 -1
- package/src/plus/ai/utils/ai.utils.ts +5 -7
- package/src/plus/ai/utils/results.utils.ts +32 -0
- package/src/plus/ai/utils/truncation.utils.ts +0 -1
- package/src/plus/git-github/api/github.ts +497 -129
- package/src/plus/git-github/models.ts +33 -0
- package/src/plus/git-github/providers/github/branches.ts +6 -3
- package/src/plus/git-github/providers/github/diff.ts +1 -1
- package/src/plus/git-github/providers/github/graph.ts +131 -0
- package/src/plus/git-github/providers/github/tags.ts +2 -0
- package/src/plus/integrations/authentication/cloudIntegrationService.ts +292 -0
- package/src/plus/integrations/authentication/configuredIntegrationService.ts +651 -0
- package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +363 -0
- package/src/plus/integrations/authentication/integrationAuthenticationService.ts +148 -0
- package/src/plus/integrations/authentication/manualTokenProvider.ts +79 -0
- package/src/plus/integrations/authentication/models.ts +202 -0
- package/src/plus/integrations/collectionMetadata.ts +143 -0
- package/src/plus/integrations/constants.ts +190 -0
- package/src/plus/integrations/context.ts +382 -0
- package/src/plus/integrations/errors.ts +184 -0
- package/src/plus/integrations/index.ts +216 -0
- package/src/plus/integrations/integrationService.ts +2589 -0
- package/src/plus/integrations/lite.ts +233 -0
- package/src/plus/integrations/manager.ts +359 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +1631 -0
- package/src/plus/integrations/models/integration.ts +926 -0
- package/src/plus/integrations/models/issuesIntegration.ts +264 -0
- package/src/plus/integrations/providerFilters.ts +12 -0
- package/src/plus/integrations/providers/apiClients.ts +69 -0
- package/src/plus/integrations/providers/apiConfig.ts +71 -0
- package/src/plus/integrations/providers/azure/azure.ts +822 -0
- package/src/plus/integrations/providers/azure/models.ts +618 -0
- package/src/plus/integrations/providers/azureDevOps.ts +1342 -0
- package/src/plus/integrations/providers/bitbucket/bitbucket.ts +904 -0
- package/src/plus/integrations/providers/bitbucket/models.ts +445 -0
- package/src/plus/integrations/providers/bitbucket-server/models.ts +283 -0
- package/src/plus/integrations/providers/bitbucket-server.ts +447 -0
- package/src/plus/integrations/providers/bitbucket.ts +794 -0
- package/src/plus/integrations/providers/github/github.ts +64 -0
- package/src/plus/integrations/providers/github/github.utils.ts +23 -0
- package/src/plus/integrations/providers/github/models.ts +29 -0
- package/src/plus/integrations/providers/github.ts +750 -0
- package/src/plus/integrations/providers/gitlab/gitlab.ts +1320 -0
- package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +80 -0
- package/src/plus/integrations/providers/gitlab/models.ts +271 -0
- package/src/plus/integrations/providers/gitlab.ts +832 -0
- package/src/plus/integrations/providers/jira.ts +564 -0
- package/src/plus/integrations/providers/linear.ts +402 -0
- package/src/plus/integrations/providers/models.ts +1622 -0
- package/src/plus/integrations/providers/providersApi.ts +1889 -0
- package/src/plus/integrations/providers/trello.ts +205 -0
- package/src/plus/integrations/providers/utils/providerPaging.ts +177 -0
- package/src/plus/integrations/providers/utils.ts +419 -0
- package/src/plus/integrations/reads/context.ts +75 -0
- package/src/plus/integrations/reads/cursors.ts +224 -0
- package/src/plus/integrations/reads/drains.ts +343 -0
- package/src/plus/integrations/reads/filters.ts +124 -0
- package/src/plus/integrations/reads/hierarchy.ts +493 -0
- package/src/plus/integrations/reads/hierarchy.utils.ts +106 -0
- package/src/plus/integrations/reads/issueTracker.ts +480 -0
- package/src/plus/integrations/reads/issues.ts +407 -0
- package/src/plus/integrations/reads/paging.ts +277 -0
- package/src/plus/integrations/reads/pullRequests.ts +267 -0
- package/src/plus/integrations/reads/warnings.ts +170 -0
- package/src/plus/integrations/results.ts +275 -0
- package/src/plus/integrations/telemetry.ts +29 -0
- package/src/plus/integrations/utils/domain.utils.ts +26 -0
- package/src/plus/integrations/utils/integration.utils.ts +215 -0
- package/src/utils/brand.ts +0 -2
- package/src/utils/cancellation.ts +56 -7
- package/src/utils/coalescedRun.ts +45 -0
- package/src/utils/color.ts +3 -3
- package/src/utils/date.ts +72 -0
- package/src/utils/debounce.ts +1 -1
- package/src/utils/decorators/gate.ts +2 -2
- package/src/utils/decorators/log.ts +5 -5
- package/src/utils/decorators/memoize.ts +2 -2
- package/src/utils/decorators/sequentialize.ts +2 -2
- package/src/utils/decorators/serializable.ts +1 -1
- package/src/utils/disposable.ts +15 -2
- package/src/utils/env/node/exec.ts +20 -5
- package/src/utils/event.ts +19 -25
- package/src/utils/function.ts +3 -3
- package/src/utils/iterable.ts +2 -6
- package/src/utils/logger.scoped.ts +1 -1
- package/src/utils/logger.ts +1 -1
- package/src/utils/paging.ts +46 -0
- package/src/utils/promise.ts +33 -3
- package/src/utils/promiseCache.ts +81 -51
- package/src/utils/searchTree.ts +4 -2
- package/src/utils/string.ts +1 -1
- package/src/utils/trie.ts +1 -0
- package/dist/plus/ai/providers/githubModelsProvider.d.ts +0 -19
- package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +0 -1
- package/dist/plus/ai/providers/githubModelsProvider.js +0 -51
- package/dist/plus/ai/providers/githubModelsProvider.js.map +0 -1
- package/src/plus/ai/providers/githubModelsProvider.ts +0 -92
|
@@ -1,17 +1,62 @@
|
|
|
1
1
|
import { base64, fromBase64 } from '../../utils/base64.js';
|
|
2
|
-
import type { GraphReachabilityTable } from '../models/graph.js';
|
|
2
|
+
import type { GraphContext, GraphReachabilityTable } from '../models/graph.js';
|
|
3
|
+
import { GitGraphRowContextFlags } from '../models/graph.js';
|
|
3
4
|
import type { GitCommitReachability } from '../providers/commits.js';
|
|
4
5
|
|
|
5
6
|
type ReachableRef = GitCommitReachability['refs'][number];
|
|
6
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Computes the compact {@link GitGraphRowContextFlags} bitfield for a commit row from its reachable-ref
|
|
10
|
+
* set and the walk's HEAD-derived sets. Single-sourced so the host row processor
|
|
11
|
+
* (`GlGraphRowProcessor`), the R6b incremental fast path, and the equivalence harness all compute
|
|
12
|
+
* byte-identical flags (no manual mirrors that can drift). Stash rows carry no flags — callers skip this
|
|
13
|
+
* for `stash-node` rows. See {@link GitGraphRowContextFlags} for the per-bit semantics.
|
|
14
|
+
*/
|
|
15
|
+
export function computeGraphRowContextFlags(
|
|
16
|
+
sha: string,
|
|
17
|
+
reachableRefs: Iterable<ReachableRef> | undefined,
|
|
18
|
+
ctx: Pick<
|
|
19
|
+
GraphContext,
|
|
20
|
+
'reachableFromHEAD' | 'rewriteableFromHEAD' | 'tipShasWithChildren' | 'reachableFromHeadUpstream'
|
|
21
|
+
>,
|
|
22
|
+
): GitGraphRowContextFlags {
|
|
23
|
+
// Allocation-free "exactly one local branch reachable" check → `+unique`.
|
|
24
|
+
let localBranches = 0;
|
|
25
|
+
if (reachableRefs != null) {
|
|
26
|
+
for (const r of reachableRefs) {
|
|
27
|
+
if (r.refType === 'branch' && !r.remote && ++localBranches > 1) break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Unpublished (ahead) = reachable from HEAD but not from HEAD's upstream tip. Unpulled (behind) is its
|
|
31
|
+
// exact mirror over the same two sets: on the upstream tip but not on HEAD, i.e. `HEAD..@{u}`. Both are
|
|
32
|
+
// derived from `reachableFromHeadUpstream`, which is undefined when HEAD has no upstream — so neither
|
|
33
|
+
// is ever flagged in that case, and the two can never both be set for one sha.
|
|
34
|
+
const upstream = ctx.reachableFromHeadUpstream;
|
|
35
|
+
const reachableFromHead = ctx.reachableFromHEAD.has(sha);
|
|
36
|
+
const onUpstream = upstream?.has(sha) ?? false;
|
|
37
|
+
const isUnpublished = upstream != null && reachableFromHead && !onUpstream;
|
|
38
|
+
const isUnpulled = onUpstream && !reachableFromHead;
|
|
39
|
+
return (
|
|
40
|
+
(reachableFromHead ? GitGraphRowContextFlags.ReachableFromHead : 0) |
|
|
41
|
+
(ctx.rewriteableFromHEAD.has(sha) ? GitGraphRowContextFlags.RewriteableFromHead : 0) |
|
|
42
|
+
(localBranches === 1 ? GitGraphRowContextFlags.UniqueToBranch : 0) |
|
|
43
|
+
(ctx.tipShasWithChildren.has(sha) ? GitGraphRowContextFlags.HasChildren : 0) |
|
|
44
|
+
(isUnpublished ? GitGraphRowContextFlags.Unpublished : 0) |
|
|
45
|
+
(isUnpulled ? GitGraphRowContextFlags.Unpulled : 0)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
7
49
|
/**
|
|
8
50
|
* Canonical dictionary key for a reachable ref. The `r`/`l` discriminator keeps a remote branch from
|
|
9
51
|
* colliding with a local branch of the same name; the `refType` prefix separates tags from branches.
|
|
52
|
+
* `current` is part of the key so a builder SEEDED from a prior generation's table can't hand back a
|
|
53
|
+
* stale dictionary entry after the checked-out branch changes — the updated ref interns as a new
|
|
54
|
+
* entry instead (within a single walk `current` can't change, so the wider key is behavior-neutral).
|
|
10
55
|
* Single-sourced here so the encoder ({@link createReachabilityTableBuilder}) and any future consumer
|
|
11
56
|
* can't drift on the convention.
|
|
12
57
|
*/
|
|
13
58
|
export function reachableRefKey(ref: ReachableRef): string {
|
|
14
|
-
return `${ref.refType}:${ref.refType === 'branch' && ref.remote ? 'r' : 'l'}:${ref.name}`;
|
|
59
|
+
return `${ref.refType}:${ref.refType === 'branch' && ref.remote ? 'r' : 'l'}:${ref.current ? 'c' : 'n'}:${ref.name}`;
|
|
15
60
|
}
|
|
16
61
|
|
|
17
62
|
// Monotonic generation counter — each builder (i.e. each fresh graph walk) gets a distinct id, while a
|
|
@@ -28,16 +73,29 @@ let nextReachabilityTableId = 0;
|
|
|
28
73
|
*
|
|
29
74
|
* Append-only by construction: an index, once assigned, is never reused — so a builder kept alive
|
|
30
75
|
* across paginated loads accumulates a table whose existing indices stay valid as it grows.
|
|
76
|
+
*
|
|
77
|
+
* Pass a prior generation's table as `seed` to CONTINUE it: identical ref sets re-intern to their
|
|
78
|
+
* seeded indices and the table keeps the seed's `id`, so rows retained across a rebuild keep valid
|
|
79
|
+
* `reachabilityIndex` values and the host's same-id delta shipping applies (only appended entries go
|
|
80
|
+
* over the wire). Entries the new walk never re-interns stay in the table unreferenced — harmless,
|
|
81
|
+
* and bounded by per-session ref churn.
|
|
31
82
|
*/
|
|
32
|
-
export function createReachabilityTableBuilder(): {
|
|
83
|
+
export function createReachabilityTableBuilder(seed?: GraphReachabilityTable): {
|
|
33
84
|
intern: (refs: Iterable<ReachableRef> | undefined) => number | undefined;
|
|
34
85
|
build: () => GraphReachabilityTable | undefined;
|
|
35
86
|
} {
|
|
36
|
-
const id = ++nextReachabilityTableId;
|
|
37
|
-
const dictionary: GitCommitReachability['refs'] = [];
|
|
38
|
-
const refKeyToIndex = new Map<string, number>();
|
|
39
|
-
const sets: string[] = [];
|
|
40
|
-
const setKeyToIndex = new Map<string, number>();
|
|
87
|
+
const id = seed?.id ?? ++nextReachabilityTableId;
|
|
88
|
+
const dictionary: GitCommitReachability['refs'] = seed != null ? [...seed.dictionary] : [];
|
|
89
|
+
const refKeyToIndex = new Map<string, number>(dictionary.map((ref, i) => [reachableRefKey(ref), i]));
|
|
90
|
+
const sets: string[] = seed != null ? [...seed.sets] : [];
|
|
91
|
+
const setKeyToIndex = new Map<string, number>(sets.map((encoded, i) => [encoded, i]));
|
|
92
|
+
|
|
93
|
+
// Reachability is monotone, so a graph walk interns long runs of IDENTICAL sets (thousands of
|
|
94
|
+
// consecutive trunk rows share one set). Remembering the previous call's indices skips the
|
|
95
|
+
// bitmap-pack + base64 for those runs; a same-membership-different-order call just falls through
|
|
96
|
+
// to the (still correct) slow path.
|
|
97
|
+
let lastIndices: number[] | undefined;
|
|
98
|
+
let lastSetIndex: number | undefined;
|
|
41
99
|
|
|
42
100
|
return {
|
|
43
101
|
/** Interns a ref set, returning its index into `sets`, or undefined when the set is empty. */
|
|
@@ -61,6 +119,17 @@ export function createReachabilityTableBuilder(): {
|
|
|
61
119
|
}
|
|
62
120
|
if (indices.length === 0) return undefined;
|
|
63
121
|
|
|
122
|
+
if (lastIndices != null && indices.length === lastIndices.length) {
|
|
123
|
+
let same = true;
|
|
124
|
+
for (let i = 0; i < indices.length; i++) {
|
|
125
|
+
if (indices[i] !== lastIndices[i]) {
|
|
126
|
+
same = false;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (same) return lastSetIndex;
|
|
131
|
+
}
|
|
132
|
+
|
|
64
133
|
// Pack into a bitset sized to this set's high-water dictionary index, then intern by base64.
|
|
65
134
|
const bytes = new Uint8Array((maxIndex >> 3) + 1);
|
|
66
135
|
for (const index of indices) {
|
|
@@ -73,6 +142,8 @@ export function createReachabilityTableBuilder(): {
|
|
|
73
142
|
setKeyToIndex.set(encoded, setIndex);
|
|
74
143
|
sets.push(encoded);
|
|
75
144
|
}
|
|
145
|
+
lastIndices = indices;
|
|
146
|
+
lastSetIndex = setIndex;
|
|
76
147
|
return setIndex;
|
|
77
148
|
},
|
|
78
149
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Strict allowlist of OpenSSH public-key types valid in an `allowed_signers`/`.pub` entry, including security-key
|
|
2
|
+
// (`sk-`) and certificate (`-cert-v01@openssh.com`) variants. Used to reject attacker-controllable key types embedded
|
|
3
|
+
// in commit SSH signatures (or returned by a provider) before they're written to a trust-sensitive file.
|
|
4
|
+
const sshKeyTypeRegex =
|
|
5
|
+
/^(?:sk-)?(?:ssh-ed25519|ssh-rsa|ssh-dss|ecdsa-sha2-nistp(?:256|384|521))(?:-cert-v01)?(?:@openssh\.com)?$/;
|
|
6
|
+
|
|
7
|
+
// A base64 blob with no embedded whitespace/newlines (length must be a multiple of 4, standard base64 alphabet).
|
|
8
|
+
const base64Regex = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
9
|
+
|
|
10
|
+
// A principal safe to write as the first token of an `allowed_signers` line. Beyond whitespace/control characters
|
|
11
|
+
// (which would inject extra tokens or whole lines), it also rejects the principal-list meta-characters `,` (separator),
|
|
12
|
+
// `*`/`?` (wildcards), `!` (negation), and `"`/`\` (quoting) — any of which could broaden a single identity into a
|
|
13
|
+
// list or pattern that matches signers it shouldn't.
|
|
14
|
+
// eslint-disable-next-line no-control-regex
|
|
15
|
+
const principalRegex = /^[^\s\x00-\x1f\x7f,*?!"\\]+$/;
|
|
16
|
+
|
|
17
|
+
/** Whether `keyType` is a recognized OpenSSH public-key type (strict allowlist, not a prefix match). */
|
|
18
|
+
export function isValidSshKeyType(keyType: string): boolean {
|
|
19
|
+
return sshKeyTypeRegex.test(keyType);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Whether `keyData` is a well-formed base64 public-key blob with no embedded whitespace or newlines. */
|
|
23
|
+
export function isValidSshKeyData(keyData: string): boolean {
|
|
24
|
+
return keyData.length % 4 === 0 && base64Regex.test(keyData);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Whether `principal` is safe to write as an `allowed_signers` principal (non-empty, no whitespace/control chars). */
|
|
28
|
+
export function isValidAllowedSignerPrincipal(principal: string): boolean {
|
|
29
|
+
return principalRegex.test(principal);
|
|
30
|
+
}
|
|
@@ -69,6 +69,13 @@ export class RepositoryWatchService implements UnifiedDisposable {
|
|
|
69
69
|
return this._onDidChangeRepository.event;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
private readonly _onDidChangeWorkingTree = new Emitter<string>();
|
|
73
|
+
/** Global multiplexed working-tree change event (repo path) for ALL watched repos. Fires once per
|
|
74
|
+
* debounced flush per session — the single point that drives the cache's status clock for working-tree edits. */
|
|
75
|
+
get onDidChangeWorkingTree(): Event<string> {
|
|
76
|
+
return this._onDidChangeWorkingTree.event;
|
|
77
|
+
}
|
|
78
|
+
|
|
72
79
|
private readonly defaultRepoDelayMs?: number;
|
|
73
80
|
private readonly defaultWorkingTreeDelayMs?: number;
|
|
74
81
|
private readonly getIgnoreFilter?: (repoPath: string, gitDirPath: string) => GitIgnoreFilter | undefined;
|
|
@@ -113,6 +120,7 @@ export class RepositoryWatchService implements UnifiedDisposable {
|
|
|
113
120
|
this.wtWatchers.clear();
|
|
114
121
|
|
|
115
122
|
this._onDidChangeRepository.dispose();
|
|
123
|
+
this._onDidChangeWorkingTree.dispose();
|
|
116
124
|
}
|
|
117
125
|
|
|
118
126
|
/**
|
|
@@ -164,6 +172,9 @@ export class RepositoryWatchService implements UnifiedDisposable {
|
|
|
164
172
|
onDidFireRepoChange: (event): void => {
|
|
165
173
|
this._onDidChangeRepository.fire(event);
|
|
166
174
|
},
|
|
175
|
+
onDidFireWorkingTreeChange: (repoPath): void => {
|
|
176
|
+
this._onDidChangeWorkingTree.fire(repoPath);
|
|
177
|
+
},
|
|
167
178
|
});
|
|
168
179
|
|
|
169
180
|
const watchHooksSet = new Set<WatchHooks>();
|
|
@@ -331,7 +342,11 @@ export class RepositoryWatchService implements UnifiedDisposable {
|
|
|
331
342
|
for (const h of watchHooks) {
|
|
332
343
|
h.onGitIgnoreChanged?.(repoPath);
|
|
333
344
|
}
|
|
334
|
-
//
|
|
345
|
+
// Route the ignore-rule change through the repo channel as an `ignores` change (like `info/exclude`),
|
|
346
|
+
// so it reaches EVERY session subscriber — including a closed secondary worktree's `watch()` `repoSub`,
|
|
347
|
+
// which has no `onGitIgnoreChanged` hook and would otherwise keep a stale untracked-file list. Coalesces
|
|
348
|
+
// with any hook-fired `ignores` above, so open repos don't double. (.gitignore itself is not a WT change.)
|
|
349
|
+
session.pushRepoChanges(['ignores']);
|
|
335
350
|
return;
|
|
336
351
|
}
|
|
337
352
|
|
|
@@ -45,6 +45,12 @@ export interface WatchSessionOptions {
|
|
|
45
45
|
* global event forwarding without affecting lifecycle callbacks.
|
|
46
46
|
*/
|
|
47
47
|
readonly onDidFireRepoChange?: (event: WatcherRepoChangeEvent) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Called whenever a debounced working-tree change is dispatched to subscribers. Like
|
|
50
|
+
* {@link onDidFireRepoChange}, does NOT count as a subscriber — used by WatchService for global
|
|
51
|
+
* event forwarding (the single point that drives the cache's status clock for working-tree edits).
|
|
52
|
+
*/
|
|
53
|
+
readonly onDidFireWorkingTreeChange?: (repoPath: string) => void;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
const defaultRepoDelay = 250;
|
|
@@ -82,6 +88,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
|
|
|
82
88
|
|
|
83
89
|
private readonly lifecycle?: WatchSessionLifecycle;
|
|
84
90
|
private readonly onDidFireRepoChangeCallback?: (event: WatcherRepoChangeEvent) => void;
|
|
91
|
+
private readonly onDidFireWorkingTreeChangeCallback?: (repoPath: string) => void;
|
|
85
92
|
|
|
86
93
|
constructor(options: WatchSessionOptions) {
|
|
87
94
|
this.repoPath = options.repoPath;
|
|
@@ -91,6 +98,7 @@ export class RepositoryWatchSession implements UnifiedDisposable {
|
|
|
91
98
|
this.effectiveWorkingTreeMs = this.defaultWorkingTreeMs;
|
|
92
99
|
this.lifecycle = options.lifecycle;
|
|
93
100
|
this.onDidFireRepoChangeCallback = options.onDidFireRepoChange;
|
|
101
|
+
this.onDidFireWorkingTreeChangeCallback = options.onDidFireWorkingTreeChange;
|
|
94
102
|
this._suspended = options.suspended ?? false;
|
|
95
103
|
}
|
|
96
104
|
|
|
@@ -274,7 +282,12 @@ export class RepositoryWatchSession implements UnifiedDisposable {
|
|
|
274
282
|
fireChangeImmediate(...changes: RepositoryChange[]): void {
|
|
275
283
|
if (this._disposed || changes.length === 0) return;
|
|
276
284
|
|
|
277
|
-
|
|
285
|
+
const event = new WatcherRepoChangeEvent(this.repoPath, changes);
|
|
286
|
+
// Same contract as `flushRepo`: notify the global forwarder (which advances the cache's status clock) BEFORE
|
|
287
|
+
// subscribers. Skipping it here would route changes to subscribers that no one advanced the clock for —
|
|
288
|
+
// subscribers see them as session-routed and (correctly) don't re-advance, so the cache would go stale.
|
|
289
|
+
this.onDidFireRepoChangeCallback?.(event);
|
|
290
|
+
this.repoEmitter.fire(event);
|
|
278
291
|
}
|
|
279
292
|
|
|
280
293
|
/** Push interpreted repo changes into the pipeline */
|
|
@@ -321,8 +334,10 @@ export class RepositoryWatchSession implements UnifiedDisposable {
|
|
|
321
334
|
if (event == null) return;
|
|
322
335
|
|
|
323
336
|
this.pendingRepoEvent = undefined;
|
|
324
|
-
|
|
337
|
+
// Advance any cache clock BEFORE notifying subscribers (same rationale as `flushWorkingTree`): a subscriber
|
|
338
|
+
// that synchronously reads status must see the post-change generation, not a joinable pre-change run.
|
|
325
339
|
this.onDidFireRepoChangeCallback?.(event);
|
|
340
|
+
this.repoEmitter.fire(event);
|
|
326
341
|
}
|
|
327
342
|
|
|
328
343
|
private scheduleRepoFlush(delayOverride?: number): void {
|
|
@@ -351,6 +366,9 @@ export class RepositoryWatchSession implements UnifiedDisposable {
|
|
|
351
366
|
|
|
352
367
|
const paths = this.pendingWorkingTreePaths;
|
|
353
368
|
this.pendingWorkingTreePaths = new Set();
|
|
369
|
+
// Advance the cache's status clock (via WatchService's global forwarding) BEFORE notifying subscribers,
|
|
370
|
+
// so a subscriber that synchronously reads status sees the post-change generation, not a joinable pre-change run.
|
|
371
|
+
this.onDidFireWorkingTreeChangeCallback?.(this.repoPath);
|
|
354
372
|
this.workingTreeEmitter.fire({ repoPath: this.repoPath, paths: paths });
|
|
355
373
|
}
|
|
356
374
|
|
package/src/git-cli/exec/git.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
CommitErrorReason,
|
|
9
9
|
FetchErrorReason,
|
|
10
10
|
GitCommandError,
|
|
11
|
+
GitWarningKey,
|
|
11
12
|
MergeErrorReason,
|
|
12
13
|
PausedOperationAbortErrorReason,
|
|
13
14
|
PausedOperationContinueErrorReason,
|
|
@@ -24,8 +25,9 @@ import type {
|
|
|
24
25
|
WorktreeCreateErrorReason,
|
|
25
26
|
WorktreeDeleteErrorReason,
|
|
26
27
|
} from '../../git/errors.js';
|
|
27
|
-
import { WorkspaceUntrustedError } from '../../git/errors.js';
|
|
28
|
+
import { GitWarnings, WorkspaceUntrustedError } from '../../git/errors.js';
|
|
28
29
|
import type { SigningFormat } from '../../git/models/signature.js';
|
|
30
|
+
import type { GitRunCancellation } from '../../git/run.types.js';
|
|
29
31
|
import { CancellationError, getAbortSignalId, isCancellationError } from '../../utils/cancellation.js';
|
|
30
32
|
import { getScopedCounter } from '../../utils/counter.js';
|
|
31
33
|
import { getDurationMilliseconds, hrtime } from '../../utils/hrtime.js';
|
|
@@ -126,26 +128,16 @@ export const GitErrors = {
|
|
|
126
128
|
unsafeRepository:
|
|
127
129
|
/(?:^fatal:\s*detected dubious ownership in repository at '([^']+)'|unsafe repository \('([^']+)' is owned by someone else\))[\s\S]*(git config --global --add safe\.directory [^\n•]+)/m,
|
|
128
130
|
unstagedChanges: /You have unstaged changes/i,
|
|
131
|
+
// Matches both variants: with a lock reason (`..., lock reason: <reason>`) and without (`...;`)
|
|
132
|
+
worktreeLocked: /fatal:\s*cannot remove a locked working tree/i,
|
|
133
|
+
// Only matches the variant where Git reports a lock reason; the reason is free text, so capture the whole line
|
|
134
|
+
worktreeLockedReason: /cannot remove a locked working tree,[ \t]*lock reason:[ \t]*(.*)/i,
|
|
129
135
|
} as const;
|
|
130
136
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
noCommits: /does not have any commits/i,
|
|
136
|
-
notFound: /Path '.*?' does not exist in/i,
|
|
137
|
-
foundButNotInRevision: /Path '.*?' exists on disk, but not in/i,
|
|
138
|
-
headNotABranch: /HEAD does not point to a branch/i,
|
|
139
|
-
noUpstream: /no upstream configured for branch '(.*?)'/i,
|
|
140
|
-
unknownRevision:
|
|
141
|
-
/ambiguous argument '.*?': unknown revision or path not in the working tree|not stored as a remote-tracking branch/i,
|
|
142
|
-
mustRunInWorkTree: /this operation must be run in a work tree/i,
|
|
143
|
-
patchWithConflicts: /Applied patch to '.*?' with conflicts/i,
|
|
144
|
-
noRemoteRepositorySpecified: /No remote repository specified\./i,
|
|
145
|
-
remoteConnectionError: /Could not read from remote repository/i,
|
|
146
|
-
notAGitCommand: /'.+' is not a git command/i,
|
|
147
|
-
tipBehind: /tip of your current branch is behind/i,
|
|
148
|
-
} as const;
|
|
137
|
+
// `GitWarnings` moved to `@gitlens/git/errors.js` so the shared run contract can name its keys; re-exported
|
|
138
|
+
// here because it's long-established as part of this module's surface.
|
|
139
|
+
export { GitWarnings };
|
|
140
|
+
export type { GitWarningKey } from '../../git/errors.js';
|
|
149
141
|
|
|
150
142
|
export class GitError extends Error {
|
|
151
143
|
readonly cmd: string | undefined;
|
|
@@ -393,6 +385,8 @@ const errorToReasonMap = new Map<GitCommand, [RegExp, GitCommandToReasonMap[GitC
|
|
|
393
385
|
[
|
|
394
386
|
'worktree-delete',
|
|
395
387
|
[
|
|
388
|
+
// Must come first -- a locked worktree's lock reason is free text that can otherwise match the errors below
|
|
389
|
+
[GitErrors.worktreeLocked, 'locked'],
|
|
396
390
|
[GitErrors.mainWorkingTree, 'defaultWorkingTree'],
|
|
397
391
|
[GitErrors.uncommittedChanges, 'uncommittedChanges'],
|
|
398
392
|
[GitErrors.failedToDeleteDirectoryNotEmpty, 'directoryNotEmpty'],
|
|
@@ -653,14 +647,37 @@ export class Git {
|
|
|
653
647
|
return options.caching.cache.getOrCreate(
|
|
654
648
|
options.caching.commonPath ?? options.cwd!,
|
|
655
649
|
gitCommand,
|
|
656
|
-
async cacheable => {
|
|
657
|
-
|
|
658
|
-
|
|
650
|
+
async (cacheable, signal) => {
|
|
651
|
+
// Bind the shared spawn to the aggregate `signal` (fires only when ALL current callers
|
|
652
|
+
// abort), not this-caller's `options.cancellation` — otherwise a superseded caller's
|
|
653
|
+
// abort would kill the shared command and reject concurrent riders that never cancelled.
|
|
654
|
+
const result = await this.runCore<T>(
|
|
655
|
+
{ ...options, caching: undefined, cancellation: signal ?? options.cancellation },
|
|
656
|
+
runArgs,
|
|
657
|
+
gitCommand,
|
|
658
|
+
);
|
|
659
|
+
// Never cache a result that isn't a genuine command outcome. Under `errors: 'ignore'` a
|
|
660
|
+
// cancelled/aborted run RESOLVES an empty result, which — left cached — would be served as a
|
|
661
|
+
// real empty result for the full TTL (e.g. a valid merge-base read back as "none").
|
|
662
|
+
// Invalidate on anything that isn't a clean exit, or whenever the aggregate signal aborted,
|
|
663
|
+
// so the entry self-evicts instead of poisoning later callers.
|
|
664
|
+
//
|
|
665
|
+
// `status !== 'exited'` is what catches the case a bare `exitCode` check cannot. A swallowed
|
|
666
|
+
// `GitWarnings` match used to report `exitCode: 0` UNCONDITIONALLY — the old code read it off
|
|
667
|
+
// a `result` that is only ever assigned on the non-throwing path, so it was always the `?? 0`
|
|
668
|
+
// fallback — which meant `exitCode !== 0` could never fire and every swallowed failure was
|
|
669
|
+
// cached. A `warned` result now carries git's real code, so it's the status, not the code,
|
|
670
|
+
// that has to do the work here. The `exitCode !== 0` half is kept as-is — a non-zero exit is
|
|
671
|
+
// a real answer and arguably cacheable, but it isn't cached today and this isn't the change
|
|
672
|
+
// to start.
|
|
673
|
+
if (result.completion.status !== 'exited' || result.exitCode !== 0 || signal?.aborted) {
|
|
659
674
|
cacheable.invalidate();
|
|
660
675
|
}
|
|
661
676
|
return result;
|
|
662
677
|
},
|
|
663
|
-
|
|
678
|
+
// Forward this caller's cancellation so `getOrCreate` races each caller's own wait — an
|
|
679
|
+
// aborting caller rejects only itself, leaving the shared work (and its riders) intact.
|
|
680
|
+
{ ...options.caching.options, cancellation: options.cancellation },
|
|
664
681
|
);
|
|
665
682
|
}
|
|
666
683
|
|
|
@@ -746,12 +763,42 @@ export class Git {
|
|
|
746
763
|
let result;
|
|
747
764
|
try {
|
|
748
765
|
result = await promise;
|
|
766
|
+
// A normal `runSpawn` only resolves on a clean exit — `code !== 0 || signal` rejects — but the
|
|
767
|
+
// `exitCodeOnly` overload resolves unconditionally, INCLUDING for a signalled run (no code, partial
|
|
768
|
+
// or absent stdout). Coercing that to `0` would report a killed command as a clean success, so
|
|
769
|
+
// classify it as the failure it is.
|
|
770
|
+
if (result.exitCode == null) {
|
|
771
|
+
// SIGTERM is how BOTH a timeout kill and a caller abort terminate, so it has to group with
|
|
772
|
+
// cancellations here exactly as it does on the reject path — `failed`/`signal` is for every
|
|
773
|
+
// OTHER signal. Only `exitCodeOnly` reaches this: a native spawn `timeout` fires
|
|
774
|
+
// `close(null, 'SIGTERM')` with no `error` event, so it resolves instead of rejecting.
|
|
775
|
+
// Throwing hands it to the catch below, which owns the timeout-vs-abort heuristic, the ABORTED
|
|
776
|
+
// log, and the `onAborted` hook — none of which a branch here would fire.
|
|
777
|
+
if (result.signal === 'SIGTERM') {
|
|
778
|
+
throw new CancelledRunError(gitCommand, true, undefined, result.signal);
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
return {
|
|
782
|
+
stdout: result.stdout,
|
|
783
|
+
stderr: result.stderr,
|
|
784
|
+
completion: {
|
|
785
|
+
status: 'failed',
|
|
786
|
+
reason: result.signal != null ? 'signal' : 'unstarted',
|
|
787
|
+
error: new Error(
|
|
788
|
+
`Command terminated without an exit code${result.signal != null ? ` (${result.signal})` : ''}`,
|
|
789
|
+
),
|
|
790
|
+
},
|
|
791
|
+
};
|
|
792
|
+
}
|
|
793
|
+
|
|
749
794
|
return {
|
|
750
795
|
stdout: result.stdout,
|
|
751
796
|
stderr: result.stderr,
|
|
752
|
-
exitCode: result.exitCode
|
|
797
|
+
exitCode: result.exitCode,
|
|
798
|
+
completion: { status: 'exited', code: result.exitCode },
|
|
753
799
|
};
|
|
754
800
|
} catch (ex) {
|
|
801
|
+
let cancellationReason: GitRunCancellation = 'unknown';
|
|
755
802
|
if (ex instanceof CancelledRunError) {
|
|
756
803
|
const duration = getDurationMilliseconds(start);
|
|
757
804
|
const timeout = runOpts.timeout ?? 0;
|
|
@@ -761,6 +808,9 @@ export class Git {
|
|
|
761
808
|
: cancellation?.aborted
|
|
762
809
|
? 'cancellation'
|
|
763
810
|
: 'unknown';
|
|
811
|
+
// Also surfaced on the result, but DIAGNOSTIC ONLY — a timeout kill and a caller abort are both
|
|
812
|
+
// SIGTERM, so this duration heuristic can be wrong near the boundary. Never gate behavior on it.
|
|
813
|
+
cancellationReason = reason === 'cancellation' ? 'aborted' : reason;
|
|
764
814
|
Logger.warn(
|
|
765
815
|
`${formatLoggableScopeBlock('GIT')} ${gitCommand} \u00b7 ABORTED after ${duration}ms (${reason})`,
|
|
766
816
|
);
|
|
@@ -774,19 +824,44 @@ export class Git {
|
|
|
774
824
|
|
|
775
825
|
if (errorHandling === 'ignore') {
|
|
776
826
|
if (ex instanceof RunError) {
|
|
827
|
+
// `code` is `string | number | undefined`: a numeric string is a real exit code, but an errno
|
|
828
|
+
// (`'ENOENT'`) means the spawn itself failed, and `undefined` means the process never exited
|
|
829
|
+
// normally. Only the numeric case is an exit; the rest previously became `0` or `NaN`.
|
|
830
|
+
const code = typeof ex.code === 'number' ? ex.code : ex.code != null ? parseInt(ex.code, 10) : NaN;
|
|
831
|
+
const exited = Number.isInteger(code);
|
|
832
|
+
|
|
777
833
|
return {
|
|
778
834
|
stdout: ex.stdout,
|
|
779
835
|
stderr: ex.stderr,
|
|
780
|
-
|
|
781
|
-
|
|
836
|
+
...(exited ? { exitCode: code } : {}),
|
|
837
|
+
completion:
|
|
838
|
+
ex instanceof CancelledRunError
|
|
839
|
+
? { status: 'cancelled', reason: cancellationReason, error: ex }
|
|
840
|
+
: exited
|
|
841
|
+
? { status: 'exited', code: code }
|
|
842
|
+
: {
|
|
843
|
+
status: 'failed',
|
|
844
|
+
// A signal means it ran and was killed (partial `stdout` may exist);
|
|
845
|
+
// no signal and no numeric code means it never got that far.
|
|
846
|
+
reason: ex.signal != null ? 'signal' : 'unstarted',
|
|
847
|
+
error: ex,
|
|
848
|
+
},
|
|
782
849
|
};
|
|
783
850
|
}
|
|
784
851
|
|
|
852
|
+
// No cancellation branch here: `CancelledRunError extends RunError`, so reaching this at all
|
|
853
|
+
// proves `ex` is neither.
|
|
785
854
|
return {
|
|
786
855
|
stdout: '',
|
|
787
856
|
stderr: undefined,
|
|
788
|
-
|
|
789
|
-
|
|
857
|
+
completion: {
|
|
858
|
+
status: 'failed',
|
|
859
|
+
// No `RunError` means no process was ever spawned — a queue rejection or a
|
|
860
|
+
// failure before `spawn` returned. (Not an untrusted workspace: `run` refuses
|
|
861
|
+
// those up front, so they never reach this catch.)
|
|
862
|
+
reason: 'unstarted',
|
|
863
|
+
error: ex instanceof Error ? ex : new Error(String(ex)),
|
|
864
|
+
},
|
|
790
865
|
};
|
|
791
866
|
}
|
|
792
867
|
|
|
@@ -797,9 +872,31 @@ export class Git {
|
|
|
797
872
|
}
|
|
798
873
|
if (errorHandling === 'throw') throw exception;
|
|
799
874
|
|
|
800
|
-
|
|
875
|
+
// Rethrows unless the message matches a `GitWarnings` pattern, in which case it logs and returns the
|
|
876
|
+
// key that matched. Capture the error first — `exception` is cleared to keep it out of the `finally`
|
|
877
|
+
// log, but the result still needs to carry it.
|
|
878
|
+
const swallowed = exception;
|
|
879
|
+
const warning = defaultExceptionHandler(exception, options.cwd, start);
|
|
801
880
|
exception = undefined;
|
|
802
|
-
|
|
881
|
+
// The command did NOT produce this empty stdout — a warning was swallowed. Say so, or the caller
|
|
882
|
+
// can't tell a genuinely empty answer (`noCommits`) from a read that never happened
|
|
883
|
+
// (`notARepository`).
|
|
884
|
+
//
|
|
885
|
+
// The process DID exit though (a warning is only ever swallowed for a non-zero exit), so report the
|
|
886
|
+
// code. `GitError.exitCode` is `number | string | undefined` — same normalization as the
|
|
887
|
+
// `errors: 'ignore'` path above, since only the numeric case is a real exit.
|
|
888
|
+
const rawCode = swallowed instanceof GitError ? swallowed.exitCode : undefined;
|
|
889
|
+
const code = typeof rawCode === 'number' ? rawCode : rawCode != null ? parseInt(rawCode, 10) : NaN;
|
|
890
|
+
|
|
891
|
+
// No `stderr`: it belongs to the error here. The top-level field is the channel for runs that
|
|
892
|
+
// completed WITHOUT one (`exited` carries no error, so a successful command's stderr has nowhere
|
|
893
|
+
// else to go) — a swallowed warning always has a `GitError`, and it carries the stderr. Reading
|
|
894
|
+
// `result?.stderr` would be dead anyway: `result` is only assigned on the non-throwing path.
|
|
895
|
+
return {
|
|
896
|
+
stdout: '',
|
|
897
|
+
...(Number.isInteger(code) ? { exitCode: code } : {}),
|
|
898
|
+
completion: { status: 'warned', warning: warning, error: swallowed },
|
|
899
|
+
};
|
|
803
900
|
} finally {
|
|
804
901
|
this.logGitCommandComplete(gitCommand, exception, getDurationMilliseconds(start), waiting);
|
|
805
902
|
}
|
|
@@ -826,13 +923,7 @@ export class Git {
|
|
|
826
923
|
|
|
827
924
|
// Fixes https://github.com/gitkraken/vscode-gitlens/issues/73 & https://github.com/gitkraken/vscode-gitlens/issues/161
|
|
828
925
|
// See https://stackoverflow.com/questions/4144417/how-to-handle-asian-characters-in-file-names-in-git-on-os-x
|
|
829
|
-
runArgs.unshift(
|
|
830
|
-
'-c',
|
|
831
|
-
'core.quotepath=false',
|
|
832
|
-
'-c',
|
|
833
|
-
'color.ui=false',
|
|
834
|
-
...(configs !== undefined ? configs : emptyArray),
|
|
835
|
-
);
|
|
926
|
+
runArgs.unshift('-c', 'core.quotepath=false', '-c', 'color.ui=false', ...(configs ?? emptyArray));
|
|
836
927
|
|
|
837
928
|
if (process.platform === 'win32') {
|
|
838
929
|
runArgs.unshift('-c', 'core.longpaths=true');
|
|
@@ -962,7 +1053,7 @@ export class Git {
|
|
|
962
1053
|
// Ensure cleanup happens immediately when the generator is explicitly closed (e.g., via break or return)
|
|
963
1054
|
// This is called by JavaScript when the generator is abandoned, ensuring logGitCommand is called
|
|
964
1055
|
// synchronously rather than waiting for garbage collection.
|
|
965
|
-
//
|
|
1056
|
+
// oxlint-disable-next-line typescript/no-meaningless-void-operator
|
|
966
1057
|
return void cleanup();
|
|
967
1058
|
}
|
|
968
1059
|
|
|
@@ -1114,12 +1205,21 @@ export class Git {
|
|
|
1114
1205
|
}
|
|
1115
1206
|
}
|
|
1116
1207
|
|
|
1117
|
-
|
|
1208
|
+
/**
|
|
1209
|
+
* Swallows an error whose message matches a known-benign {@link GitWarnings} pattern, returning WHICH one
|
|
1210
|
+
* matched so the caller can record it — the distinction matters, since `noCommits` is a real answer while
|
|
1211
|
+
* `notARepository` is a failed read. Rethrows anything else.
|
|
1212
|
+
*/
|
|
1213
|
+
export function defaultExceptionHandler(
|
|
1214
|
+
ex: Error,
|
|
1215
|
+
cwd: string | undefined,
|
|
1216
|
+
start?: [number, number],
|
|
1217
|
+
): GitWarningKey | undefined {
|
|
1118
1218
|
if (isCancellationError(ex)) throw ex;
|
|
1119
1219
|
|
|
1120
1220
|
const msg = ex.message || ex.toString();
|
|
1121
1221
|
if (msg) {
|
|
1122
|
-
for (const warning of Object.
|
|
1222
|
+
for (const [key, warning] of Object.entries(GitWarnings) as [GitWarningKey, RegExp][]) {
|
|
1123
1223
|
if (warning.test(msg)) {
|
|
1124
1224
|
const duration = start !== undefined ? ` [${getDurationMilliseconds(start)}ms]` : '';
|
|
1125
1225
|
Logger.warn(
|
|
@@ -1128,7 +1228,7 @@ export function defaultExceptionHandler(ex: Error, cwd: string | undefined, star
|
|
|
1128
1228
|
.replace(/fatal:\s*/g, '')
|
|
1129
1229
|
.replace(/\r?\n|\r/g, ' \u00b7 ')}${duration}`,
|
|
1130
1230
|
);
|
|
1131
|
-
return;
|
|
1231
|
+
return key;
|
|
1132
1232
|
}
|
|
1133
1233
|
}
|
|
1134
1234
|
|
|
@@ -1137,7 +1237,9 @@ export function defaultExceptionHandler(ex: Error, cwd: string | undefined, star
|
|
|
1137
1237
|
const [, ref] = match;
|
|
1138
1238
|
|
|
1139
1239
|
// Since looking up a ref with ^3 (e.g. looking for untracked files in a stash) can error on some versions of git just ignore it
|
|
1140
|
-
|
|
1240
|
+
// Swallowed, but it matched no `GitWarnings` entry — `undefined` records "unclassified", which
|
|
1241
|
+
// callers must treat as "not a real answer" exactly like any warning they don't whitelist.
|
|
1242
|
+
if (ref?.endsWith('^3')) return undefined;
|
|
1141
1243
|
}
|
|
1142
1244
|
}
|
|
1143
1245
|
|