@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
|
@@ -76,7 +76,7 @@ const graphMapping = {
|
|
|
76
76
|
message: '%B',
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
type GraphLogParser = LogParser<typeof graphMapping>;
|
|
79
|
+
export type GraphLogParser = LogParser<typeof graphMapping>;
|
|
80
80
|
let _graphParser: GraphLogParser | undefined;
|
|
81
81
|
type GraphWithStatsLogParser = LogParserWithStats<typeof graphMapping>;
|
|
82
82
|
let _graphWithStatsParser: GraphWithStatsLogParser | undefined;
|
|
@@ -223,6 +223,14 @@ export type AsyncParser<T> = {
|
|
|
223
223
|
separators: { record: string; field: string };
|
|
224
224
|
parse: (data: string | Iterable<string> | undefined) => Generator<T> | Iterable<T>;
|
|
225
225
|
parseAsync: (stream: AsyncGenerator<string>) => AsyncGenerator<T>;
|
|
226
|
+
/**
|
|
227
|
+
* Like `parseAsync` but yields one ARRAY of entries per stream chunk, scanning each chunk
|
|
228
|
+
* synchronously with plain `indexOf` (no per-field iterator machinery). Bulk consumers (the
|
|
229
|
+
* graph walk) avoid two promise hops per record — thousands of awaited yields collapse to one
|
|
230
|
+
* per chunk. Only the plain parser implements it; per-record `parseAsync` remains the
|
|
231
|
+
* general-purpose path.
|
|
232
|
+
*/
|
|
233
|
+
parseAsyncBatched?: (stream: AsyncGenerator<string>) => AsyncGenerator<T[]>;
|
|
226
234
|
};
|
|
227
235
|
|
|
228
236
|
export type LogParser<T> = AsyncParser<LogParsedEntry<T>>;
|
|
@@ -280,6 +288,20 @@ const recordFormatSep = '%x1E';
|
|
|
280
288
|
const fieldSep = '\x1D'; // ASCII Group Separator character
|
|
281
289
|
const fieldFormatSep = '%x1D';
|
|
282
290
|
|
|
291
|
+
// A complete record terminates every mapped field with a field separator — a cancelled/early-closed
|
|
292
|
+
// stream resolves cleanly with a truncated tail missing at least the final terminator.
|
|
293
|
+
function isCompleteRecord(record: string, requiredFields: number): boolean {
|
|
294
|
+
let count = 0;
|
|
295
|
+
let index = -1;
|
|
296
|
+
while (count < requiredFields) {
|
|
297
|
+
index = record.indexOf(fieldSep, index + 1);
|
|
298
|
+
if (index === -1) return false;
|
|
299
|
+
|
|
300
|
+
count++;
|
|
301
|
+
}
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
|
|
283
305
|
export function createLogParser<T extends Record<string, string>>(mapping: ExtractAll<T, string>): LogParser<T> {
|
|
284
306
|
let format = recordFormatSep;
|
|
285
307
|
const keys: (keyof ExtractAll<T, string>)[] = [];
|
|
@@ -339,6 +361,8 @@ export function createLogParser<T extends Record<string, string>>(mapping: Extra
|
|
|
339
361
|
|
|
340
362
|
for await (const record of records) {
|
|
341
363
|
if (!record.length) continue;
|
|
364
|
+
// Drop a truncated tail (cancelled/early-closed stream) instead of yielding undefined/partial fields.
|
|
365
|
+
if (!isCompleteRecord(record, keys.length)) continue;
|
|
342
366
|
|
|
343
367
|
entry = {} as unknown as LogParsedEntry<T>;
|
|
344
368
|
fields = iterateByDelimiter(record, fieldSep);
|
|
@@ -361,11 +385,65 @@ export function createLogParser<T extends Record<string, string>>(mapping: Extra
|
|
|
361
385
|
sw?.stop({ suffix: ` parsed ${count} records` });
|
|
362
386
|
}
|
|
363
387
|
|
|
388
|
+
// Builds one entry from a complete record with a plain `indexOf` walk. Matches `parseAsync`'s
|
|
389
|
+
// semantics exactly: fields beyond the mapping are ignored, and every mapped field is
|
|
390
|
+
// terminated by a field separator (the format string appends one after each field).
|
|
391
|
+
function parseRecord(record: string): LogParsedEntry<T> {
|
|
392
|
+
const entry = {} as unknown as LogParsedEntry<T>;
|
|
393
|
+
let start = 0;
|
|
394
|
+
for (const key of keys) {
|
|
395
|
+
const end = record.indexOf(fieldSep, start);
|
|
396
|
+
if (end === -1) break;
|
|
397
|
+
|
|
398
|
+
entry[key] = record.substring(start, end) as T[keyof T];
|
|
399
|
+
start = end + 1;
|
|
400
|
+
}
|
|
401
|
+
return entry;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
async function* parseAsyncBatched(stream: AsyncGenerator<string>): AsyncGenerator<LogParsedEntry<T>[]> {
|
|
405
|
+
using sw = maybeStopWatch('Git.LogParser.parseAsyncBatched', { log: { onlyExit: true, level: 'debug' } });
|
|
406
|
+
|
|
407
|
+
let count = 0;
|
|
408
|
+
let buffer = '';
|
|
409
|
+
for await (const chunk of stream) {
|
|
410
|
+
buffer += chunk;
|
|
411
|
+
|
|
412
|
+
let batch: LogParsedEntry<T>[] | undefined;
|
|
413
|
+
let start = 0;
|
|
414
|
+
while (true) {
|
|
415
|
+
const end = buffer.indexOf(recordSep, start);
|
|
416
|
+
if (end === -1) break;
|
|
417
|
+
|
|
418
|
+
if (end > start) {
|
|
419
|
+
(batch ??= []).push(parseRecord(buffer.substring(start, end)));
|
|
420
|
+
count++;
|
|
421
|
+
}
|
|
422
|
+
start = end + 1;
|
|
423
|
+
}
|
|
424
|
+
if (start > 0) {
|
|
425
|
+
buffer = buffer.substring(start);
|
|
426
|
+
}
|
|
427
|
+
if (batch != null) {
|
|
428
|
+
yield batch;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// Trailing record (the stream doesn't end with a record separator); a truncated tail from a
|
|
432
|
+
// cancelled/early-closed stream is missing a field terminator and must be dropped, not parsed.
|
|
433
|
+
if (buffer.length > 0 && isCompleteRecord(buffer, keys.length)) {
|
|
434
|
+
count++;
|
|
435
|
+
yield [parseRecord(buffer)];
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
sw?.stop({ suffix: ` parsed ${count} records` });
|
|
439
|
+
}
|
|
440
|
+
|
|
364
441
|
return {
|
|
365
442
|
arguments: args,
|
|
366
443
|
separators: { record: recordSep, field: fieldSep },
|
|
367
444
|
parse: parse,
|
|
368
445
|
parseAsync: parseAsync,
|
|
446
|
+
parseAsyncBatched: parseAsyncBatched,
|
|
369
447
|
};
|
|
370
448
|
}
|
|
371
449
|
|
|
@@ -605,6 +683,8 @@ function createLogParserWithFilesAndStats<T extends Record<string, string> | voi
|
|
|
605
683
|
|
|
606
684
|
for await (const record of records) {
|
|
607
685
|
if (!record.length) continue;
|
|
686
|
+
// Drop a truncated tail (cancelled/early-closed stream) instead of yielding undefined/partial fields.
|
|
687
|
+
if (!isCompleteRecord(record, keys.length)) continue;
|
|
608
688
|
|
|
609
689
|
count++;
|
|
610
690
|
entry = {} as unknown as LogParsedEntryWithFilesAndStats<T>;
|
|
@@ -955,6 +1035,8 @@ function createLogParserWithPatch<T extends Record<string, string>>(
|
|
|
955
1035
|
|
|
956
1036
|
for await (const record of records) {
|
|
957
1037
|
if (!record.length) continue;
|
|
1038
|
+
// Drop a truncated tail (cancelled/early-closed stream) instead of yielding undefined/partial fields.
|
|
1039
|
+
if (!isCompleteRecord(record, keys.length)) continue;
|
|
958
1040
|
|
|
959
1041
|
count++;
|
|
960
1042
|
entry = {} as unknown as LogParsedEntryWithFiles<T>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { SshPublicKey } from '../../git/models/signature.js';
|
|
2
|
+
import { isValidSshKeyData, isValidSshKeyType } from '../../git/utils/sshKey.utils.js';
|
|
3
|
+
|
|
4
|
+
const sshSigMagic = 'SSHSIG';
|
|
5
|
+
const gpgSigHeaderRegex = /^gpgsig(?:-sha256)? /;
|
|
6
|
+
const sshSigArmorRegex = /-----BEGIN SSH SIGNATURE-----\n([\s\S]*?)\n-----END SSH SIGNATURE-----/;
|
|
7
|
+
// A commit header line: `committer Display Name <email> <unix-ts> <tz>`.
|
|
8
|
+
const committerRegex = /^committer (.*) <([^>]*)> \d+ [-+]\d+$/m;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Extracts the committer's name and raw email from a commit object. The raw email (not a mailmapped one) is the
|
|
12
|
+
* principal Git checks an SSH signature against, so it's what an `allowed_signers` entry must use.
|
|
13
|
+
*/
|
|
14
|
+
export function extractCommitterFromCommitObject(commitObject: string): { name: string; email: string } | undefined {
|
|
15
|
+
const match = committerRegex.exec(commitObject);
|
|
16
|
+
if (match == null) return undefined;
|
|
17
|
+
|
|
18
|
+
return { name: match[1], email: match[2] };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Extracts the signer's full SSH public key from a commit object's `gpgsig` SSH signature.
|
|
23
|
+
*
|
|
24
|
+
* A commit signed with `gpg.format=ssh` stores an armored `-----BEGIN SSH SIGNATURE-----` (SSHSIG) blob in its
|
|
25
|
+
* `gpgsig` header, and the SSHSIG wire format embeds the signer's full public key — exactly what an `allowed_signers`
|
|
26
|
+
* entry requires. (`git log`'s signature fields only expose the key fingerprint, never the full key.)
|
|
27
|
+
*
|
|
28
|
+
* @param commitObject Raw commit object text, as produced by `git cat-file commit <sha>`
|
|
29
|
+
* @returns The key type and base64 public-key blob, or `undefined` if the commit isn't SSH-signed or can't be parsed.
|
|
30
|
+
*/
|
|
31
|
+
export function extractSshPublicKeyFromCommitObject(commitObject: string): SshPublicKey | undefined {
|
|
32
|
+
const armored = extractArmoredSignature(commitObject);
|
|
33
|
+
if (armored == null) return undefined;
|
|
34
|
+
|
|
35
|
+
const buffer = Buffer.from(armored, 'base64');
|
|
36
|
+
|
|
37
|
+
// SSHSIG wire format (see OpenSSH PROTOCOL.sshsig):
|
|
38
|
+
// byte[6] MAGIC "SSHSIG" | uint32 version | string publickey | string namespace | ...
|
|
39
|
+
// where each `string` is a big-endian uint32 length followed by that many bytes.
|
|
40
|
+
if (buffer.length < 10 || buffer.toString('latin1', 0, 6) !== sshSigMagic) return undefined;
|
|
41
|
+
|
|
42
|
+
// `publickey` is the first length-prefixed string, after the 6-byte magic and 4-byte version.
|
|
43
|
+
const pubKeyBlob = readSshString(buffer, 10);
|
|
44
|
+
if (pubKeyBlob == null) return undefined;
|
|
45
|
+
|
|
46
|
+
// The public-key blob itself begins with its key type as a length-prefixed string.
|
|
47
|
+
const keyType = readSshString(pubKeyBlob, 0)?.toString('utf8');
|
|
48
|
+
if (!keyType) return undefined;
|
|
49
|
+
|
|
50
|
+
const keyData = pubKeyBlob.toString('base64');
|
|
51
|
+
// The signature blob is attacker-controllable (Git stores it verbatim and never verifies it on read), so reject
|
|
52
|
+
// anything that isn't a recognized key type / well-formed base64 before it can become an `allowed_signers` entry.
|
|
53
|
+
if (!isValidSshKeyType(keyType) || !isValidSshKeyData(keyData)) return undefined;
|
|
54
|
+
|
|
55
|
+
return { keyType: keyType, keyData: keyData };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Extracts and concatenates the base64 body of the armored SSH signature from a commit's `gpgsig` header. */
|
|
59
|
+
function extractArmoredSignature(commitObject: string): string | undefined {
|
|
60
|
+
const lines = commitObject.split('\n');
|
|
61
|
+
const start = lines.findIndex(l => gpgSigHeaderRegex.test(l));
|
|
62
|
+
if (start === -1) return undefined;
|
|
63
|
+
|
|
64
|
+
// The header value, followed by continuation lines (each indented with a single leading space).
|
|
65
|
+
const block = [lines[start].replace(gpgSigHeaderRegex, '')];
|
|
66
|
+
for (let i = start + 1; i < lines.length; i++) {
|
|
67
|
+
if (!lines[i].startsWith(' ')) break;
|
|
68
|
+
|
|
69
|
+
block.push(lines[i].slice(1));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const match = sshSigArmorRegex.exec(block.join('\n'));
|
|
73
|
+
return match != null ? match[1].replace(/\s+/g, '') : undefined;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Reads a length-prefixed SSH wire-format string (big-endian uint32 length + bytes) at `offset`. */
|
|
77
|
+
function readSshString(buffer: Buffer, offset: number): Buffer | undefined {
|
|
78
|
+
if (offset + 4 > buffer.length) return undefined;
|
|
79
|
+
|
|
80
|
+
const start = offset + 4;
|
|
81
|
+
const end = start + buffer.readUInt32BE(offset);
|
|
82
|
+
if (end > buffer.length) return undefined;
|
|
83
|
+
|
|
84
|
+
return buffer.subarray(start, end);
|
|
85
|
+
}
|
|
@@ -39,8 +39,6 @@ export function parseGitWorktrees(
|
|
|
39
39
|
let index: number;
|
|
40
40
|
let key: string;
|
|
41
41
|
let value: string;
|
|
42
|
-
let locked: string;
|
|
43
|
-
let prunable: string;
|
|
44
42
|
let main = true; // the first worktree is the main worktree
|
|
45
43
|
|
|
46
44
|
for (line of iterateByDelimiter(data, '\n')) {
|
|
@@ -54,7 +52,7 @@ export function parseGitWorktrees(
|
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
if (!key && entry != null) {
|
|
57
|
-
//
|
|
55
|
+
// oxlint-disable-next-line no-loop-func
|
|
58
56
|
const branch = entry.branch ? branches?.find(b => b.name === entry!.branch) : undefined;
|
|
59
57
|
const uri = fileUri(entry.path!);
|
|
60
58
|
|
|
@@ -96,13 +94,13 @@ export function parseGitWorktrees(
|
|
|
96
94
|
case 'detached':
|
|
97
95
|
entry.detached = true;
|
|
98
96
|
break;
|
|
97
|
+
// `value` is the whole reason, which is only present when the locker/Git provides one.
|
|
98
|
+
// Reasons with unusual characters (e.g. newlines) come through C-quoted, per `core.quotePath`
|
|
99
99
|
case 'locked':
|
|
100
|
-
|
|
101
|
-
entry.locked = locked?.trim() || true;
|
|
100
|
+
entry.locked = value.trim() || true;
|
|
102
101
|
break;
|
|
103
102
|
case 'prunable':
|
|
104
|
-
|
|
105
|
-
entry.prunable = prunable?.trim() || true;
|
|
103
|
+
entry.prunable = value.trim() || true;
|
|
106
104
|
break;
|
|
107
105
|
}
|
|
108
106
|
}
|
|
@@ -693,7 +693,7 @@ export class BranchesGitSubProvider implements GitBranchesSubProvider {
|
|
|
693
693
|
'--',
|
|
694
694
|
);
|
|
695
695
|
|
|
696
|
-
if (result.cancelled || signal?.aborted) {
|
|
696
|
+
if (result.completion.status === 'cancelled' || signal?.aborted) {
|
|
697
697
|
throw new CancellationError();
|
|
698
698
|
}
|
|
699
699
|
|
|
@@ -727,7 +727,7 @@ export class BranchesGitSubProvider implements GitBranchesSubProvider {
|
|
|
727
727
|
async getDefaultBranchName(
|
|
728
728
|
repoPath: string | undefined,
|
|
729
729
|
remote?: string,
|
|
730
|
-
options?: { priority?: GitCommandPriority },
|
|
730
|
+
options?: { priority?: GitCommandPriority; local?: boolean },
|
|
731
731
|
cancellation?: AbortSignal,
|
|
732
732
|
): Promise<string | undefined> {
|
|
733
733
|
if (repoPath == null) return undefined;
|
|
@@ -736,6 +736,25 @@ export class BranchesGitSubProvider implements GitBranchesSubProvider {
|
|
|
736
736
|
const priority = options?.priority;
|
|
737
737
|
const priorityOpts = priority != null ? { priority: priority } : undefined;
|
|
738
738
|
|
|
739
|
+
// Local-only: read just the existing local symref, never contacting the remote. Bypass the shared
|
|
740
|
+
// cache entirely — it's keyed by repoPath+remote, so caching a local miss (or sharing this in-flight
|
|
741
|
+
// promise) would starve a concurrent networked caller of the real default branch. The local read is
|
|
742
|
+
// a cheap ref lookup, fine to repeat per call.
|
|
743
|
+
if (options?.local) {
|
|
744
|
+
try {
|
|
745
|
+
const result = await this.git.run(
|
|
746
|
+
{ cwd: this.cache.getCommonPath(repoPath), cancellation: cancellation, ...priorityOpts },
|
|
747
|
+
'symbolic-ref',
|
|
748
|
+
'--short',
|
|
749
|
+
`refs/remotes/${remote}/HEAD`,
|
|
750
|
+
);
|
|
751
|
+
return result.stdout.trim() || undefined;
|
|
752
|
+
} catch (ex) {
|
|
753
|
+
if (isCancellationError(ex)) throw ex;
|
|
754
|
+
return undefined;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
|
|
739
758
|
return this.cache.getDefaultBranchName(repoPath, remote, async commonPath => {
|
|
740
759
|
let retried = false;
|
|
741
760
|
while (true) {
|
|
@@ -868,20 +887,32 @@ export class BranchesGitSubProvider implements GitBranchesSubProvider {
|
|
|
868
887
|
}
|
|
869
888
|
|
|
870
889
|
@debug()
|
|
871
|
-
getBranchMergedStatus(
|
|
890
|
+
async getBranchMergedStatus(
|
|
872
891
|
repoPath: string,
|
|
873
892
|
branch: GitBranchReference,
|
|
874
893
|
into: GitBranchReference,
|
|
875
894
|
cancellation?: AbortSignal,
|
|
876
895
|
): Promise<GitBranchMergedStatus> {
|
|
877
896
|
if (branch.name === into.name || branch.upstream?.name === into.name) {
|
|
878
|
-
return
|
|
897
|
+
return { merged: false };
|
|
879
898
|
}
|
|
880
899
|
|
|
900
|
+
// Hoisted so it can feed the cache key below (its tip is a 3rd key input) and the mapper
|
|
901
|
+
// below reuses it instead of resolving it a second time.
|
|
902
|
+
const localInto = into.remote
|
|
903
|
+
? await this.getLocalBranchByUpstream(repoPath, into.name, cancellation)
|
|
904
|
+
: undefined;
|
|
905
|
+
|
|
881
906
|
// Cache key omits repoPath so worktrees of the same common repo share the cached answer.
|
|
882
|
-
//
|
|
883
|
-
//
|
|
884
|
-
|
|
907
|
+
// Content-keyed on the involved tip shas (the result is a pure function of them), so tip
|
|
908
|
+
// movement mints a new key instead of relying on eviction; falls back to the name-only
|
|
909
|
+
// identity when a sha is missing (defensive — the sole caller always supplies both tips).
|
|
910
|
+
const cacheKey =
|
|
911
|
+
branch.sha != null && into.sha != null
|
|
912
|
+
? `${branch.remote ? 'r' : 'l'}:${branch.name}@${branch.sha}|${into.remote ? 'r' : 'l'}:${into.name}@${into.sha}${
|
|
913
|
+
localInto?.sha != null ? `|L:${localInto.name}@${localInto.sha}` : ''
|
|
914
|
+
}`
|
|
915
|
+
: `${branch.remote ? 'r' : 'l'}:${branch.name}|${into.remote ? 'r' : 'l'}:${into.name}`;
|
|
885
916
|
|
|
886
917
|
return this.cache.getBranchMergedStatus(
|
|
887
918
|
repoPath,
|
|
@@ -890,38 +921,29 @@ export class BranchesGitSubProvider implements GitBranchesSubProvider {
|
|
|
890
921
|
const result = await this.getBranchMergedStatusCore(commonPath, branch, into, signal);
|
|
891
922
|
if (result.merged) return result;
|
|
892
923
|
|
|
893
|
-
// If
|
|
894
|
-
if (
|
|
895
|
-
|
|
896
|
-
//
|
|
897
|
-
if (
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
if (localIntoBranch.sha != null && localIntoBranch.sha === into.sha) {
|
|
901
|
-
return { merged: false };
|
|
902
|
-
}
|
|
924
|
+
// If there is a local branch and it is not the branch we are checking, check if it has been merged into it
|
|
925
|
+
if (localInto != null && localInto.name !== branch.name) {
|
|
926
|
+
// Skip the second full merge-check cycle when the local branch points at the same commit as the remote —
|
|
927
|
+
// the merge-base/cherry/diff/apply pipeline would produce the same answer we already got for `into` above
|
|
928
|
+
if (localInto.sha != null && localInto.sha === into.sha) {
|
|
929
|
+
return { merged: false };
|
|
930
|
+
}
|
|
903
931
|
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
remote: localIntoBranch.remote,
|
|
920
|
-
upstream: localIntoBranch.upstream,
|
|
921
|
-
sha: localIntoBranch.sha,
|
|
922
|
-
}),
|
|
923
|
-
};
|
|
924
|
-
}
|
|
932
|
+
const result = await this.getBranchMergedStatusCore(commonPath, branch, localInto, signal);
|
|
933
|
+
if (result.merged) {
|
|
934
|
+
// `localBranchOnly` is built against `commonPath` here; the cache mapper rewrites
|
|
935
|
+
// `repoPath`/`id` to the requesting worktree on retrieval.
|
|
936
|
+
return {
|
|
937
|
+
...result,
|
|
938
|
+
localBranchOnly: createReference(localInto.ref, commonPath, {
|
|
939
|
+
id: getBranchId(commonPath, localInto.remote, localInto.name),
|
|
940
|
+
refType: 'branch',
|
|
941
|
+
name: localInto.name,
|
|
942
|
+
remote: localInto.remote,
|
|
943
|
+
upstream: localInto.upstream,
|
|
944
|
+
sha: localInto.sha,
|
|
945
|
+
}),
|
|
946
|
+
};
|
|
925
947
|
}
|
|
926
948
|
}
|
|
927
949
|
|
|
@@ -10,7 +10,7 @@ import type { GitLog } from '../../git/models/log.js';
|
|
|
10
10
|
import type { GitReflog } from '../../git/models/reflog.js';
|
|
11
11
|
import type { GitRevisionRange } from '../../git/models/revision.js';
|
|
12
12
|
import type { SearchQuery, SearchQueryFilters } from '../../git/models/search.js';
|
|
13
|
-
import type { CommitSignature } from '../../git/models/signature.js';
|
|
13
|
+
import type { CommitSignature, SshSignedCommit } from '../../git/models/signature.js';
|
|
14
14
|
import type { GitUser } from '../../git/models/user.js';
|
|
15
15
|
import type {
|
|
16
16
|
GitCommitReachability,
|
|
@@ -58,6 +58,10 @@ import {
|
|
|
58
58
|
} from '../parsers/logParser.js';
|
|
59
59
|
import { getReflogParser, parseGitRefLog } from '../parsers/reflogParser.js';
|
|
60
60
|
import { parseSignatureOutput, signatureFormat } from '../parsers/signatureParser.js';
|
|
61
|
+
import {
|
|
62
|
+
extractCommitterFromCommitObject,
|
|
63
|
+
extractSshPublicKeyFromCommitObject,
|
|
64
|
+
} from '../parsers/sshSignatureParser.js';
|
|
61
65
|
import { createCommitFileset } from './commitFilesetUtils.js';
|
|
62
66
|
import { convertStashesToStdin } from './stash.js';
|
|
63
67
|
|
|
@@ -118,7 +122,7 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
118
122
|
rev,
|
|
119
123
|
'--',
|
|
120
124
|
);
|
|
121
|
-
if (result.cancelled || cancellation?.aborted) {
|
|
125
|
+
if (result.completion.status === 'cancelled' || cancellation?.aborted) {
|
|
122
126
|
throw new CancellationError();
|
|
123
127
|
}
|
|
124
128
|
|
|
@@ -146,7 +150,7 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
146
150
|
'--remotes',
|
|
147
151
|
'--',
|
|
148
152
|
);
|
|
149
|
-
if (result.cancelled || cancellation?.aborted) {
|
|
153
|
+
if (result.completion.status === 'cancelled' || cancellation?.aborted) {
|
|
150
154
|
throw new CancellationError();
|
|
151
155
|
}
|
|
152
156
|
|
|
@@ -178,7 +182,7 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
178
182
|
...parser.arguments,
|
|
179
183
|
rev,
|
|
180
184
|
);
|
|
181
|
-
if (result.cancelled || cancellation?.aborted) return undefined;
|
|
185
|
+
if (result.completion.status === 'cancelled' || cancellation?.aborted) return undefined;
|
|
182
186
|
|
|
183
187
|
for (const entry of parser.parse(result.stdout)) {
|
|
184
188
|
const authorSeconds = Number(entry.authorDate);
|
|
@@ -331,9 +335,9 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
331
335
|
return { refs: refs };
|
|
332
336
|
} catch (ex) {
|
|
333
337
|
cacheable?.invalidate();
|
|
334
|
-
debugger;
|
|
335
338
|
if (isCancellationError(ex)) throw ex;
|
|
336
339
|
|
|
340
|
+
debugger;
|
|
337
341
|
scope?.error(ex);
|
|
338
342
|
|
|
339
343
|
return undefined;
|
|
@@ -440,7 +444,7 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
440
444
|
'HEAD',
|
|
441
445
|
'--',
|
|
442
446
|
);
|
|
443
|
-
if (result.cancelled || cancellation?.aborted) {
|
|
447
|
+
if (result.completion.status === 'cancelled' || cancellation?.aborted) {
|
|
444
448
|
throw new CancellationError();
|
|
445
449
|
}
|
|
446
450
|
|
|
@@ -475,7 +479,7 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
475
479
|
range,
|
|
476
480
|
'--',
|
|
477
481
|
);
|
|
478
|
-
if (result.cancelled || cancellation?.aborted) {
|
|
482
|
+
if (result.completion.status === 'cancelled' || cancellation?.aborted) {
|
|
479
483
|
throw new CancellationError();
|
|
480
484
|
}
|
|
481
485
|
if (!result.stdout) return undefined;
|
|
@@ -887,7 +891,7 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
887
891
|
}
|
|
888
892
|
return moreLog.commits;
|
|
889
893
|
},
|
|
890
|
-
//
|
|
894
|
+
// oxlint-disable-next-line no-loop-func
|
|
891
895
|
query: (limit: number | undefined) =>
|
|
892
896
|
this.getLogCore(log.repoPath, rev, { ...options, limit: limit }),
|
|
893
897
|
};
|
|
@@ -1255,6 +1259,10 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
1255
1259
|
rev1,
|
|
1256
1260
|
rev2,
|
|
1257
1261
|
);
|
|
1262
|
+
// A cancelled check has no answer. `completion` now keeps that distinct from a real "is an ancestor"
|
|
1263
|
+
// result — the missing `exitCode` alone already makes the check below `false` — but callers branch on
|
|
1264
|
+
// `isCancellationError`, so this still has to throw rather than quietly answer "no".
|
|
1265
|
+
if (cancellation?.aborted) throw new CancellationError();
|
|
1258
1266
|
return result.exitCode === 0;
|
|
1259
1267
|
}
|
|
1260
1268
|
|
|
@@ -1304,8 +1312,30 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
1304
1312
|
let stashes: Map<string, GitStashCommit> | undefined;
|
|
1305
1313
|
let stdin: string | undefined;
|
|
1306
1314
|
|
|
1315
|
+
let resolvedShas: Set<string> | undefined;
|
|
1307
1316
|
if (shas?.size) {
|
|
1308
|
-
|
|
1317
|
+
resolvedShas = await this.provider.revision.resolveShas(repoPath, shas, cancellation);
|
|
1318
|
+
if (cancellation?.aborted) throw new CancellationError();
|
|
1319
|
+
// Short SHA(s) matched no commit: return empty (empty stdin to `--no-walk --stdin`
|
|
1320
|
+
// would return HEAD, so we must not fall through to git).
|
|
1321
|
+
if (!resolvedShas.size) {
|
|
1322
|
+
return {
|
|
1323
|
+
search: search,
|
|
1324
|
+
log: {
|
|
1325
|
+
repoPath: repoPath,
|
|
1326
|
+
commits: new Map(),
|
|
1327
|
+
sha: undefined,
|
|
1328
|
+
searchFilters: filters,
|
|
1329
|
+
count: 0,
|
|
1330
|
+
limit: options?.limit ?? cfg?.search?.maxItems ?? 0,
|
|
1331
|
+
hasMore: false,
|
|
1332
|
+
},
|
|
1333
|
+
};
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
if (resolvedShas?.size) {
|
|
1338
|
+
stdin = join(resolvedShas, '\n');
|
|
1309
1339
|
args.push('--no-walk');
|
|
1310
1340
|
} else if (!filters.refs) {
|
|
1311
1341
|
// Don't include stashes when using ref: filter, as they would add unrelated commits
|
|
@@ -1476,6 +1506,69 @@ export class CommitsGitSubProvider implements GitCommitsSubProvider {
|
|
|
1476
1506
|
return false;
|
|
1477
1507
|
}
|
|
1478
1508
|
}
|
|
1509
|
+
|
|
1510
|
+
@debug()
|
|
1511
|
+
async getCommitsSshSigners(repoPath: string, shas: string[]): Promise<Map<string, SshSignedCommit>> {
|
|
1512
|
+
const scope = getScopedLogger();
|
|
1513
|
+
|
|
1514
|
+
const result = new Map<string, SshSignedCommit>();
|
|
1515
|
+
if (shas.length === 0) return result;
|
|
1516
|
+
|
|
1517
|
+
try {
|
|
1518
|
+
// Read every commit object in a single `cat-file --batch` process (the SHAs are piped to stdin) rather than
|
|
1519
|
+
// spawning one `git` per commit — the embedded SSH signature and committer identity are then parsed from
|
|
1520
|
+
// each raw object, avoiding a separate (and far heavier) `git log` pass to enumerate identities.
|
|
1521
|
+
const data = await this.git.run<Buffer>(
|
|
1522
|
+
{ cwd: repoPath, errors: 'ignore', stdin: `${shas.join('\n')}\n`, encoding: 'buffer' },
|
|
1523
|
+
'cat-file',
|
|
1524
|
+
'--batch',
|
|
1525
|
+
);
|
|
1526
|
+
parseCatFileBatchForSshSigners(data.stdout, new Set(shas), result);
|
|
1527
|
+
} catch (ex) {
|
|
1528
|
+
scope?.error(ex);
|
|
1529
|
+
}
|
|
1530
|
+
return result;
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
/**
|
|
1535
|
+
* Parses `git cat-file --batch` output, extracting the embedded SSH public key (if any) from each requested commit
|
|
1536
|
+
* object. Each record is `<sha> <type> <size>` LF `<content>` LF (or `<sha> missing` LF), and the object's bytes are
|
|
1537
|
+
* consumed using the header's `<size>` rather than scanned line-by-line — so a commit/tag body line that happens to
|
|
1538
|
+
* look like an object header can never be misread as a boundary. Operates on the raw `Buffer` because `<size>` counts
|
|
1539
|
+
* bytes, not decoded characters.
|
|
1540
|
+
*
|
|
1541
|
+
* Exported for unit testing.
|
|
1542
|
+
*/
|
|
1543
|
+
export function parseCatFileBatchForSshSigners(
|
|
1544
|
+
stdout: Buffer,
|
|
1545
|
+
requestedShas: Set<string>,
|
|
1546
|
+
out: Map<string, SshSignedCommit>,
|
|
1547
|
+
): void {
|
|
1548
|
+
const headerRegex = /^([0-9a-f]{40,64}) (commit|tag|blob|missing)(?: (\d+))?$/;
|
|
1549
|
+
|
|
1550
|
+
let offset = 0;
|
|
1551
|
+
while (offset < stdout.length) {
|
|
1552
|
+
const newline = stdout.indexOf(0x0a, offset);
|
|
1553
|
+
if (newline === -1) break;
|
|
1554
|
+
|
|
1555
|
+
const match = headerRegex.exec(stdout.toString('utf8', offset, newline));
|
|
1556
|
+
offset = newline + 1;
|
|
1557
|
+
// A missing object (or an unrecognizable header) has no content body following its header line.
|
|
1558
|
+
if (match == null || match[2] === 'missing') continue;
|
|
1559
|
+
|
|
1560
|
+
const sha = match[1];
|
|
1561
|
+
const object = stdout.toString('utf8', offset, offset + Number(match[3]));
|
|
1562
|
+
offset += Number(match[3]) + 1; // consume the object's bytes and the trailing newline that separates records
|
|
1563
|
+
|
|
1564
|
+
if (!requestedShas.has(sha)) continue;
|
|
1565
|
+
|
|
1566
|
+
const key = extractSshPublicKeyFromCommitObject(object);
|
|
1567
|
+
if (key == null) continue;
|
|
1568
|
+
|
|
1569
|
+
const committer = extractCommitterFromCommitObject(object);
|
|
1570
|
+
out.set(sha, { key: key, name: committer?.name, email: committer?.email });
|
|
1571
|
+
}
|
|
1479
1572
|
}
|
|
1480
1573
|
|
|
1481
1574
|
function toCommit(c: ParsedCommit, repoPath: string, pathspec: string | undefined, currentUser: GitUser | undefined) {
|