@gitkraken/core-gitlens 0.4.0 → 0.4.101
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 +74 -1
- package/README.md +9 -2
- 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.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.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 +3 -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.map +1 -1
- 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.map +1 -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 +2 -1
- package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
- package/dist/git-cli/providers/worktrees.js +28 -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 +0 -2
- 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 +66 -3
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +345 -74
- 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 +20 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.js +134 -10
- package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +52 -5
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.js +248 -46
- package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +24 -4
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +58 -26
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js +7 -3
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -1
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +1 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/manualTokenProvider.js +9 -5
- package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/models.d.ts +33 -0
- package/dist/plus/integrations/authentication/models.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/models.js.map +1 -1
- 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 +12 -2
- package/dist/plus/integrations/constants.d.ts.map +1 -1
- package/dist/plus/integrations/constants.js +10 -0
- package/dist/plus/integrations/constants.js.map +1 -1
- package/dist/plus/integrations/context.d.ts +10 -6
- package/dist/plus/integrations/context.d.ts.map +1 -1
- package/dist/plus/integrations/errors.d.ts +65 -0
- package/dist/plus/integrations/errors.d.ts.map +1 -1
- package/dist/plus/integrations/errors.js +135 -0
- package/dist/plus/integrations/errors.js.map +1 -1
- package/dist/plus/integrations/index.d.ts +57 -12
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/index.js +39 -37
- package/dist/plus/integrations/index.js.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +297 -13
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +672 -36
- package/dist/plus/integrations/integrationService.js.map +1 -1
- 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 +262 -10
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +675 -101
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +88 -3
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js +192 -21
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.d.ts +70 -7
- package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.js +108 -35
- package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
- 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.map +1 -1
- package/dist/plus/integrations/providers/apiClients.js +3 -3
- package/dist/plus/integrations/providers/apiClients.js.map +1 -1
- 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 +14 -2
- package/dist/plus/integrations/providers/azure/azure.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/azure.js +107 -32
- package/dist/plus/integrations/providers/azure/azure.js.map +1 -1
- package/dist/plus/integrations/providers/azure/models.d.ts +16 -0
- package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/models.js +6 -6
- package/dist/plus/integrations/providers/azure/models.js.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.d.ts +55 -9
- package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.js +572 -79
- package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +13 -2
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js +108 -32
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +19 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.js +20 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.d.ts +28 -4
- package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.js +110 -6
- package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.d.ts +38 -4
- package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.js +330 -34
- package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/github/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/github.js +1 -1
- package/dist/plus/integrations/providers/github/github.js.map +1 -1
- package/dist/plus/integrations/providers/github/github.utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/github.utils.js.map +1 -1
- package/dist/plus/integrations/providers/github/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/models.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +49 -6
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +289 -4
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +11 -3
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.js +121 -47
- package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +6 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +8 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.d.ts +10 -0
- package/dist/plus/integrations/providers/gitlab/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.js +8 -5
- package/dist/plus/integrations/providers/gitlab/models.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab.d.ts +50 -5
- package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab.js +274 -8
- package/dist/plus/integrations/providers/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/jira.d.ts +13 -2
- package/dist/plus/integrations/providers/jira.d.ts.map +1 -1
- package/dist/plus/integrations/providers/jira.js +200 -30
- package/dist/plus/integrations/providers/jira.js.map +1 -1
- package/dist/plus/integrations/providers/linear.d.ts +16 -5
- package/dist/plus/integrations/providers/linear.d.ts.map +1 -1
- package/dist/plus/integrations/providers/linear.js +127 -21
- package/dist/plus/integrations/providers/linear.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts +339 -60
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +307 -59
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/providers/providersApi.d.ts +144 -11
- package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -1
- package/dist/plus/integrations/providers/providersApi.js +486 -55
- package/dist/plus/integrations/providers/providersApi.js.map +1 -1
- 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 +21 -0
- package/dist/plus/integrations/providers/utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/utils.js +57 -6
- package/dist/plus/integrations/providers/utils.js.map +1 -1
- package/dist/plus/integrations/reads/broaden.d.ts +20 -0
- package/dist/plus/integrations/reads/broaden.d.ts.map +1 -0
- package/dist/plus/integrations/reads/broaden.js +326 -0
- package/dist/plus/integrations/reads/broaden.js.map +1 -0
- package/dist/plus/integrations/reads/context.d.ts +74 -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 +320 -0
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts +77 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js +128 -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 +334 -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/resolveRepository.d.ts +25 -0
- package/dist/plus/integrations/reads/resolveRepository.d.ts.map +1 -0
- package/dist/plus/integrations/reads/resolveRepository.js +235 -0
- package/dist/plus/integrations/reads/resolveRepository.js.map +1 -0
- package/dist/plus/integrations/reads/sweeps.d.ts +11 -0
- package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -0
- package/dist/plus/integrations/reads/sweeps.js +125 -0
- package/dist/plus/integrations/reads/sweeps.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/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 +27 -1
- package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -1
- package/dist/plus/integrations/utils/integration.utils.js +86 -15
- package/dist/plus/integrations/utils/integration.utils.js.map +1 -1
- 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/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 -213
- package/src/git/cache.ts +75 -8
- 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/status.ts +1 -1
- package/src/git/providers/worktrees.ts +3 -1
- 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/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/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 +40 -4
- 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 +0 -2
- 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 +484 -104
- 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 +189 -17
- package/src/plus/integrations/authentication/configuredIntegrationService.ts +287 -50
- package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +105 -31
- package/src/plus/integrations/authentication/integrationAuthenticationService.ts +7 -3
- package/src/plus/integrations/authentication/manualTokenProvider.ts +12 -5
- package/src/plus/integrations/authentication/models.ts +35 -1
- package/src/plus/integrations/collectionMetadata.ts +143 -0
- package/src/plus/integrations/constants.ts +21 -0
- package/src/plus/integrations/context.ts +8 -9
- package/src/plus/integrations/errors.ts +153 -0
- package/src/plus/integrations/index.ts +148 -51
- package/src/plus/integrations/integrationService.ts +940 -49
- package/src/plus/integrations/lite.ts +233 -0
- package/src/plus/integrations/manager.ts +359 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +1005 -134
- package/src/plus/integrations/models/integration.ts +293 -24
- package/src/plus/integrations/models/issuesIntegration.ts +132 -39
- package/src/plus/integrations/providerFilters.ts +12 -0
- package/src/plus/integrations/providers/apiClients.ts +8 -11
- package/src/plus/integrations/providers/apiConfig.ts +71 -0
- package/src/plus/integrations/providers/azure/azure.ts +164 -33
- package/src/plus/integrations/providers/azure/models.ts +19 -6
- package/src/plus/integrations/providers/azureDevOps.ts +766 -101
- package/src/plus/integrations/providers/bitbucket/bitbucket.ts +164 -34
- package/src/plus/integrations/providers/bitbucket-server/models.ts +32 -1
- package/src/plus/integrations/providers/bitbucket-server.ts +173 -8
- package/src/plus/integrations/providers/bitbucket.ts +489 -45
- package/src/plus/integrations/providers/github/github.ts +2 -2
- package/src/plus/integrations/providers/github/github.utils.ts +1 -1
- package/src/plus/integrations/providers/github.ts +390 -6
- package/src/plus/integrations/providers/gitlab/gitlab.ts +170 -60
- package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +9 -0
- package/src/plus/integrations/providers/gitlab/models.ts +19 -5
- package/src/plus/integrations/providers/gitlab.ts +369 -10
- package/src/plus/integrations/providers/jira.ts +247 -42
- package/src/plus/integrations/providers/linear.ts +154 -27
- package/src/plus/integrations/providers/models.ts +583 -75
- package/src/plus/integrations/providers/providersApi.ts +849 -86
- 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 +68 -8
- package/src/plus/integrations/reads/broaden.ts +452 -0
- package/src/plus/integrations/reads/context.ts +99 -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 +473 -0
- package/src/plus/integrations/reads/hierarchy.utils.ts +155 -0
- package/src/plus/integrations/reads/issueTracker.ts +468 -0
- package/src/plus/integrations/reads/issues.ts +409 -0
- package/src/plus/integrations/reads/paging.ts +277 -0
- package/src/plus/integrations/reads/pullRequests.ts +260 -0
- package/src/plus/integrations/reads/resolveRepository.ts +272 -0
- package/src/plus/integrations/reads/sweeps.ts +185 -0
- package/src/plus/integrations/reads/warnings.ts +170 -0
- package/src/plus/integrations/results.ts +275 -0
- package/src/plus/integrations/utils/domain.utils.ts +26 -0
- package/src/plus/integrations/utils/integration.utils.ts +93 -16
- 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/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,3 +1,4 @@
|
|
|
1
|
+
import type { CollectionMetadata } from '@gitkraken/provider-apis';
|
|
1
2
|
import type { Account } from '../../../git/models/author.js';
|
|
2
3
|
import type { IssueShape } from '../../../git/models/issue.js';
|
|
3
4
|
import type { ResourceDescriptor } from '../../../git/models/resourceDescriptor.js';
|
|
@@ -6,8 +7,9 @@ import { trace } from '../../../utils/decorators/log.js';
|
|
|
6
7
|
import { getScopedLogger } from '../../../utils/logger.scoped.js';
|
|
7
8
|
import type { ProviderAuthenticationSession } from '../authentication/models.js';
|
|
8
9
|
import type { IntegrationIds } from '../constants.js';
|
|
9
|
-
import
|
|
10
|
-
import type {
|
|
10
|
+
import { toError } from '../errors.js';
|
|
11
|
+
import type { IssueFilter, ProviderApiCollectionResult } from '../providers/models.js';
|
|
12
|
+
import type { Integration, IntegrationResult, IntegrationType } from './integration.js';
|
|
11
13
|
import { IntegrationBase } from './integration.js';
|
|
12
14
|
|
|
13
15
|
export function isIssuesIntegration(integration: Integration): integration is IssuesIntegration {
|
|
@@ -20,22 +22,34 @@ export abstract class IssuesIntegration<
|
|
|
20
22
|
> extends IntegrationBase<ID> {
|
|
21
23
|
readonly type: IntegrationType = 'issues';
|
|
22
24
|
|
|
23
|
-
@gate()
|
|
24
25
|
@trace()
|
|
25
|
-
async getAccountForResource(resource: T): Promise<Account | undefined> {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (!connected) return undefined;
|
|
26
|
+
async getAccountForResource(resource: T, connectionId?: string): Promise<Account | undefined> {
|
|
27
|
+
return (await this.getAccountForResourceResult(resource, connectionId))?.value;
|
|
28
|
+
}
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Result-returning core of {@link getAccountForResource}. Recovers a thrown error into `{ error }` so
|
|
32
|
+
* callers can preserve its classification (e.g. a 401/403 → an `auth` warning that drives re-auth)
|
|
33
|
+
* instead of collapsing every failure into an untyped `undefined`. Gated here (not on the wrapper) so
|
|
34
|
+
* direct callers such as the ProviderBackend facade share the same dedup as `getAccountForResource`.
|
|
35
|
+
*/
|
|
36
|
+
@gate()
|
|
37
|
+
async getAccountForResourceResult(
|
|
38
|
+
resource: T,
|
|
39
|
+
connectionId?: string,
|
|
40
|
+
): Promise<IntegrationResult<Account | undefined>> {
|
|
41
|
+
const scope = getScopedLogger();
|
|
42
|
+
// `connectionId` targets a specific account (multi-account); omitted reads the primary.
|
|
43
|
+
const session = await this.resolveReadSession(connectionId, scope);
|
|
44
|
+
if (session == null) return undefined;
|
|
31
45
|
|
|
32
46
|
try {
|
|
33
|
-
const account = await this.getProviderAccountForResource(
|
|
47
|
+
const account = await this.getProviderAccountForResource(session, resource);
|
|
34
48
|
this.resetRequestExceptionCount('getAccountForResource');
|
|
35
|
-
return account;
|
|
49
|
+
return { value: account };
|
|
36
50
|
} catch (ex) {
|
|
37
51
|
this.handleProviderException('getAccountForResource', ex);
|
|
38
|
-
return
|
|
52
|
+
return { error: toError(ex) };
|
|
39
53
|
}
|
|
40
54
|
}
|
|
41
55
|
|
|
@@ -44,50 +58,73 @@ export abstract class IssuesIntegration<
|
|
|
44
58
|
resource: T,
|
|
45
59
|
): Promise<Account | undefined>;
|
|
46
60
|
|
|
47
|
-
@gate()
|
|
48
61
|
@trace()
|
|
49
|
-
async getResourcesForUser(): Promise<T[] | undefined> {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (!connected) return undefined;
|
|
62
|
+
async getResourcesForUser(connectionId?: string): Promise<T[] | undefined> {
|
|
63
|
+
return (await this.getResourcesForUserResult(connectionId))?.value;
|
|
64
|
+
}
|
|
53
65
|
|
|
54
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Result-returning core of {@link getResourcesForUser}. Recovers thrown errors into `{ error }` so callers
|
|
68
|
+
* can surface them as warnings rather than silently swallowing them to `undefined`. Gated here (not on the
|
|
69
|
+
* wrapper) so direct callers such as the ProviderBackend facade share the same dedup as `getResourcesForUser`.
|
|
70
|
+
*/
|
|
71
|
+
@gate()
|
|
72
|
+
async getResourcesForUserResult(connectionId?: string): Promise<IntegrationResult<T[] | undefined>> {
|
|
73
|
+
const scope = getScopedLogger();
|
|
74
|
+
// `connectionId` targets a specific account (multi-account); omitted reads the primary.
|
|
75
|
+
const session = await this.resolveReadSession(connectionId, scope);
|
|
76
|
+
if (session == null) return undefined;
|
|
55
77
|
|
|
56
78
|
try {
|
|
57
|
-
const resources = await this.getProviderResourcesForUser(
|
|
79
|
+
const resources = await this.getProviderResourcesForUser(session);
|
|
58
80
|
this.resetRequestExceptionCount('getResourcesForUser');
|
|
59
|
-
return resources;
|
|
81
|
+
return { value: resources };
|
|
60
82
|
} catch (ex) {
|
|
61
83
|
this.handleProviderException('getResourcesForUser', ex);
|
|
62
|
-
return
|
|
84
|
+
return { error: toError(ex) };
|
|
63
85
|
}
|
|
64
86
|
}
|
|
65
87
|
|
|
66
88
|
protected abstract getProviderResourcesForUser(session: ProviderAuthenticationSession): Promise<T[] | undefined>;
|
|
67
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Project discovery for a set of resources, returning the SDK collection `{ values, metadata }` (completeness
|
|
92
|
+
* + per-resource failures) so callers can warn on failed resources and set `fetchFailed` without discarding
|
|
93
|
+
* the resources that succeeded. Thrown errors are recovered into `{ error }` for the same reason: a caller
|
|
94
|
+
* surfaces them as a warning rather than swallowing them to `undefined`.
|
|
95
|
+
*/
|
|
68
96
|
@trace()
|
|
69
|
-
async
|
|
97
|
+
async getProjectsForResourcesWithMetadataResult(
|
|
98
|
+
resources: T[],
|
|
99
|
+
connectionId?: string,
|
|
100
|
+
): Promise<IntegrationResult<ProviderApiCollectionResult<T> | undefined>> {
|
|
70
101
|
const scope = getScopedLogger();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
await this.refreshSessionIfExpired(scope);
|
|
102
|
+
// `connectionId` targets a specific account (multi-account); omitted reads the primary.
|
|
103
|
+
const session = await this.resolveReadSession(connectionId, scope);
|
|
104
|
+
if (session == null) return undefined;
|
|
75
105
|
|
|
76
106
|
try {
|
|
77
|
-
const projects = await this.
|
|
107
|
+
const projects = await this.getProviderProjectsForResourcesWithMetadata(session, resources);
|
|
78
108
|
this.resetRequestExceptionCount('getProjectsForResources');
|
|
79
|
-
return projects;
|
|
109
|
+
return { value: projects };
|
|
80
110
|
} catch (ex) {
|
|
81
111
|
this.handleProviderException('getProjectsForResources', ex);
|
|
82
|
-
return
|
|
112
|
+
return { error: toError(ex) };
|
|
83
113
|
}
|
|
84
114
|
}
|
|
85
115
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Metadata-aware provider project discovery. The default wraps the array-returning
|
|
118
|
+
* {@link getProviderProjectsForResources} in `{ values }` with no metadata, so providers without a
|
|
119
|
+
* fan-out completeness signal (Linear, Trello) need no change; Jira overrides it to preserve the SDK's
|
|
120
|
+
* per-resource completeness/failures.
|
|
121
|
+
*/
|
|
122
|
+
protected async getProviderProjectsForResourcesWithMetadata(
|
|
123
|
+
session: ProviderAuthenticationSession,
|
|
124
|
+
resources: T[],
|
|
125
|
+
): Promise<ProviderApiCollectionResult<T>> {
|
|
126
|
+
const projects = await this.getProviderProjectsForResources(session, resources);
|
|
127
|
+
return { values: projects ?? [] };
|
|
91
128
|
}
|
|
92
129
|
|
|
93
130
|
protected abstract getProviderProjectsForResources(
|
|
@@ -99,20 +136,60 @@ export abstract class IssuesIntegration<
|
|
|
99
136
|
async getIssuesForProject(
|
|
100
137
|
project: T,
|
|
101
138
|
options?: { user?: string; filters?: IssueFilter[] },
|
|
139
|
+
connectionId?: string,
|
|
102
140
|
): Promise<IssueShape[] | undefined> {
|
|
141
|
+
return (await this.getIssuesForProjectResult(project, options, connectionId))?.value;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Result-returning core of {@link getIssuesForProject}. Recovers thrown errors into `{ error }` so callers
|
|
146
|
+
* (e.g. the ProviderBackend facade) can surface a per-provider warning instead of a silent empty read —
|
|
147
|
+
* important for providers that throw on unsupported operations (e.g. Linear's not-implemented issue read).
|
|
148
|
+
*/
|
|
149
|
+
async getIssuesForProjectResult(
|
|
150
|
+
project: T,
|
|
151
|
+
options?: { user?: string; filters?: IssueFilter[] },
|
|
152
|
+
connectionId?: string,
|
|
153
|
+
): Promise<IntegrationResult<IssueShape[] | undefined>> {
|
|
103
154
|
const scope = getScopedLogger();
|
|
104
|
-
|
|
105
|
-
|
|
155
|
+
// `connectionId` targets a specific account (multi-account); omitted reads the primary.
|
|
156
|
+
const session = await this.resolveReadSession(connectionId, scope);
|
|
157
|
+
if (session == null) return undefined;
|
|
106
158
|
|
|
107
|
-
|
|
159
|
+
try {
|
|
160
|
+
const issues = await this.getProviderIssuesForProject(session, project, options);
|
|
161
|
+
this.resetRequestExceptionCount('getIssuesForProject');
|
|
162
|
+
return { value: issues };
|
|
163
|
+
} catch (ex) {
|
|
164
|
+
this.handleProviderException('getIssuesForProject', ex);
|
|
165
|
+
return { error: toError(ex) };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Truncation-aware variant of {@link getIssuesForProjectResult}. A provider that drains a project's issues
|
|
171
|
+
* with an internal page backstop (Jira/Linear) overrides {@link getProviderIssuesForProjectWithTruncation}
|
|
172
|
+
* to report when that backstop was hit, so the facade can surface an incomplete project read instead of
|
|
173
|
+
* publishing it as complete. The default reports `truncated: false`.
|
|
174
|
+
*/
|
|
175
|
+
async getIssuesForProjectWithTruncationResult(
|
|
176
|
+
project: T,
|
|
177
|
+
options?: { user?: string; filters?: IssueFilter[] },
|
|
178
|
+
connectionId?: string,
|
|
179
|
+
): Promise<
|
|
180
|
+
IntegrationResult<{ values: IssueShape[]; truncated: boolean; metadata?: CollectionMetadata } | undefined>
|
|
181
|
+
> {
|
|
182
|
+
const scope = getScopedLogger();
|
|
183
|
+
const session = await this.resolveReadSession(connectionId, scope);
|
|
184
|
+
if (session == null) return undefined;
|
|
108
185
|
|
|
109
186
|
try {
|
|
110
|
-
const
|
|
187
|
+
const result = await this.getProviderIssuesForProjectWithTruncation(session, project, options);
|
|
111
188
|
this.resetRequestExceptionCount('getIssuesForProject');
|
|
112
|
-
return
|
|
189
|
+
return { value: result };
|
|
113
190
|
} catch (ex) {
|
|
114
191
|
this.handleProviderException('getIssuesForProject', ex);
|
|
115
|
-
return
|
|
192
|
+
return { error: toError(ex) };
|
|
116
193
|
}
|
|
117
194
|
}
|
|
118
195
|
|
|
@@ -121,4 +198,20 @@ export abstract class IssuesIntegration<
|
|
|
121
198
|
project: T,
|
|
122
199
|
options?: { user?: string; filters?: IssueFilter[] },
|
|
123
200
|
): Promise<IssueShape[] | undefined>;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Truncation-aware core of {@link getProviderIssuesForProject}. The default wraps the plain read and
|
|
204
|
+
* reports `truncated: false`; a provider whose per-project drain is capped by a page backstop overrides
|
|
205
|
+
* this to report incompleteness. Optional metadata lets providers surface structured per-project failures
|
|
206
|
+
* (e.g. a page-level auth rejection) without discarding the already-fetched prefix.
|
|
207
|
+
*/
|
|
208
|
+
protected async getProviderIssuesForProjectWithTruncation(
|
|
209
|
+
session: ProviderAuthenticationSession,
|
|
210
|
+
project: T,
|
|
211
|
+
options?: { user?: string; filters?: IssueFilter[] },
|
|
212
|
+
): Promise<{ values: IssueShape[]; truncated: boolean; metadata?: CollectionMetadata } | undefined> {
|
|
213
|
+
const values = await this.getProviderIssuesForProject(session, project, options);
|
|
214
|
+
if (values == null) return undefined;
|
|
215
|
+
return { values: values, truncated: false };
|
|
216
|
+
}
|
|
124
217
|
}
|
|
@@ -49,23 +49,20 @@ export function createApiClients(ctx: IntegrationServiceContext, disposables: Di
|
|
|
49
49
|
));
|
|
50
50
|
},
|
|
51
51
|
get gitlab() {
|
|
52
|
-
return (gitlab ??= build(
|
|
53
|
-
|
|
54
|
-
new (await import(/* webpackChunkName: "integrations" */ './gitlab/gitlab.js')).GitLabApi(ctx),
|
|
52
|
+
return (gitlab ??= build(async () =>
|
|
53
|
+
(await import(/* webpackChunkName: "integrations" */ './gitlab/gitlab.js')).createGitLabApi(ctx),
|
|
55
54
|
));
|
|
56
55
|
},
|
|
57
56
|
get bitbucket() {
|
|
58
|
-
return (bitbucket ??= build(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
),
|
|
57
|
+
return (bitbucket ??= build(async () =>
|
|
58
|
+
(await import(/* webpackChunkName: "integrations" */ './bitbucket/bitbucket.js')).createBitbucketApi(
|
|
59
|
+
ctx,
|
|
60
|
+
),
|
|
63
61
|
));
|
|
64
62
|
},
|
|
65
63
|
get azure() {
|
|
66
|
-
return (azure ??= build(
|
|
67
|
-
|
|
68
|
-
new (await import(/* webpackChunkName: "integrations" */ './azure/azure.js')).AzureDevOpsApi(ctx),
|
|
64
|
+
return (azure ??= build(async () =>
|
|
65
|
+
(await import(/* webpackChunkName: "integrations" */ './azure/azure.js')).createAzureDevOpsApi(ctx),
|
|
69
66
|
));
|
|
70
67
|
},
|
|
71
68
|
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { IntegrationServiceContext } from '../context.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* VS Code-free configuration for the package-owned provider API clients
|
|
5
|
+
* ({@link GitLabApi}, {@link BitbucketApi}, {@link AzureDevOpsApi}).
|
|
6
|
+
*
|
|
7
|
+
* Mirrors the role {@link import('../../git-github/api/config.js').GitHubApiConfig}
|
|
8
|
+
* plays for `GitHubApi`: instead of taking the full {@link IntegrationServiceContext},
|
|
9
|
+
* a client takes only the narrow HTTP + callback surface it actually uses. The
|
|
10
|
+
* `createIntegrationManager` path wires this from `ctx` (see the `create*Api`
|
|
11
|
+
* factories); a token-scoped consumer builds it from a `fetch` plus a
|
|
12
|
+
* `wrapForForcedInsecureSSL` (a pass-through is fine when not toggling SSL).
|
|
13
|
+
*
|
|
14
|
+
* Every field beyond `fetch`/`wrapForForcedInsecureSSL` is optional — a client omits
|
|
15
|
+
* the call when unset, so a minimal consumer only supplies the two required members.
|
|
16
|
+
*/
|
|
17
|
+
export interface ProviderApiConfig {
|
|
18
|
+
/** The `fetch` implementation to use for HTTP requests. */
|
|
19
|
+
fetch(input: string | URL, init?: RequestInit): Promise<Response>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Wraps an async operation so that TLS certificate validation is disabled when the
|
|
23
|
+
* provider's `getIgnoreSSLErrors()` returns `'force'`. On the browser it's a no-op.
|
|
24
|
+
*/
|
|
25
|
+
wrapForForcedInsecureSSL<T>(ignoreSSLErrors: boolean | 'force', fn: () => Promise<T> | PromiseLike<T>): Promise<T>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Fires when the HTTP proxy configuration changes, so the client can reset its HTTP caches.
|
|
29
|
+
* The factory filters the underlying config-change event down to the keys the client cares about.
|
|
30
|
+
*/
|
|
31
|
+
onConfigChanged?(listener: () => void): { dispose(): void };
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Ask the consumer to confirm reauthentication after an auth/permission failure (401/403). Resolves to
|
|
35
|
+
* the user's choice; the client performs the actual `provider.reauthenticate()` when this is truthy.
|
|
36
|
+
* Only GitLab wires this today.
|
|
37
|
+
*/
|
|
38
|
+
onReauthenticationRequired?(message: string): Promise<boolean | undefined>;
|
|
39
|
+
|
|
40
|
+
/** A non-fatal error to surface (debug display / notification). */
|
|
41
|
+
onError?(message: string): void;
|
|
42
|
+
|
|
43
|
+
/** The provider API returned a server-side (500-level) error. */
|
|
44
|
+
onRequestFailed?(message: string): void;
|
|
45
|
+
|
|
46
|
+
/** The provider API request timed out; `providerName` names the integration for the message. */
|
|
47
|
+
onRequestTimedOut?(providerName: string): void;
|
|
48
|
+
|
|
49
|
+
/** Bitbucket's "Pull Requests for Commit" app isn't installed; `revLink` opens the install page. */
|
|
50
|
+
onBitbucketCommitLinksAppMissing?(revLink: string): void;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The `ctx` → {@link ProviderApiConfig} mapping shared by every `create*Api` factory. Each provider
|
|
55
|
+
* spreads this and layers on its own deltas (GitLab also resets on `remotes` + wires reauth/timeout;
|
|
56
|
+
* Bitbucket adds the commit-links-app hook). Resets HTTP caches on HTTP proxy config changes.
|
|
57
|
+
*/
|
|
58
|
+
export function baseProviderApiConfig(ctx: IntegrationServiceContext): ProviderApiConfig {
|
|
59
|
+
return {
|
|
60
|
+
fetch: ctx.http.fetch.bind(ctx.http),
|
|
61
|
+
wrapForForcedInsecureSSL: ctx.http.wrapForForcedInsecureSSL.bind(ctx.http),
|
|
62
|
+
onConfigChanged: listener =>
|
|
63
|
+
ctx.config.onDidChange(e => {
|
|
64
|
+
if (e.httpProxy) {
|
|
65
|
+
listener();
|
|
66
|
+
}
|
|
67
|
+
}),
|
|
68
|
+
onError: message => ctx.hooks?.ui?.onError?.(message),
|
|
69
|
+
onRequestFailed: message => ctx.hooks?.ui?.onRequestFailed?.(message),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -1,30 +1,37 @@
|
|
|
1
1
|
import type { UnidentifiedAuthor } from '../../../../git/models/author.js';
|
|
2
|
+
import type { DefaultBranch } from '../../../../git/models/defaultBranch.js';
|
|
2
3
|
import type { Issue } from '../../../../git/models/issue.js';
|
|
3
4
|
import type { IssueOrPullRequest, IssueOrPullRequestType } from '../../../../git/models/issueOrPullRequest.js';
|
|
4
5
|
import type { PullRequest } from '../../../../git/models/pullRequest.js';
|
|
5
6
|
import type { Provider } from '../../../../git/models/remoteProvider.js';
|
|
7
|
+
import type { RepositoryMetadata } from '../../../../git/models/repositoryMetadata.js';
|
|
6
8
|
import { base64 } from '../../../../utils/base64.js';
|
|
7
|
-
import { CancellationError } from '../../../../utils/cancellation.js';
|
|
9
|
+
import { CancellationError, isCancellationError } from '../../../../utils/cancellation.js';
|
|
8
10
|
import { trace } from '../../../../utils/decorators/log.js';
|
|
9
11
|
import type { Disposable } from '../../../../utils/disposable.js';
|
|
10
12
|
import { Logger } from '../../../../utils/logger.js';
|
|
11
13
|
import type { ScopedLogger } from '../../../../utils/logger.scoped.js';
|
|
12
14
|
import { getScopedLogger } from '../../../../utils/logger.scoped.js';
|
|
13
15
|
import { maybeStopWatch } from '../../../../utils/stopwatch.js';
|
|
14
|
-
import type {
|
|
16
|
+
import type { TokenWithInfo } from '../../authentication/models.js';
|
|
15
17
|
import type { IntegrationServiceContext } from '../../context.js';
|
|
16
18
|
import {
|
|
17
19
|
AuthenticationError,
|
|
18
20
|
AuthenticationErrorReason,
|
|
21
|
+
isRateLimitResponse,
|
|
19
22
|
ProviderFetchError,
|
|
20
23
|
RequestClientError,
|
|
21
24
|
RequestNotFoundError,
|
|
25
|
+
toRateLimitError,
|
|
22
26
|
} from '../../errors.js';
|
|
27
|
+
import type { ProviderApiConfig } from '../apiConfig.js';
|
|
28
|
+
import { baseProviderApiConfig } from '../apiConfig.js';
|
|
23
29
|
import type {
|
|
24
30
|
AzureGitCommit,
|
|
25
31
|
AzureProjectDescriptor,
|
|
26
32
|
AzurePullRequest,
|
|
27
33
|
AzurePullRequestWithLinks,
|
|
34
|
+
AzureRepositoryWithMetadata,
|
|
28
35
|
AzureWorkItemState,
|
|
29
36
|
AzureWorkItemStateCategory,
|
|
30
37
|
WorkItem,
|
|
@@ -37,6 +44,7 @@ import {
|
|
|
37
44
|
getAzurePullRequestWebUrl,
|
|
38
45
|
isClosedAzurePullRequestStatus,
|
|
39
46
|
isClosedAzureWorkItemStateCategory,
|
|
47
|
+
normalizeAzureBranchName,
|
|
40
48
|
} from './models.js';
|
|
41
49
|
|
|
42
50
|
class WorkItemStates {
|
|
@@ -89,19 +97,15 @@ class WorkItemStates {
|
|
|
89
97
|
}
|
|
90
98
|
|
|
91
99
|
export class AzureDevOpsApi implements Disposable {
|
|
92
|
-
private readonly _disposable: Disposable;
|
|
100
|
+
private readonly _disposable: Disposable | undefined;
|
|
93
101
|
private _workItemStates: WorkItemStates = new WorkItemStates();
|
|
94
102
|
|
|
95
|
-
constructor(private readonly
|
|
96
|
-
this._disposable =
|
|
97
|
-
if (e.httpProxy) {
|
|
98
|
-
this.resetCaches();
|
|
99
|
-
}
|
|
100
|
-
});
|
|
103
|
+
constructor(private readonly config: ProviderApiConfig) {
|
|
104
|
+
this._disposable = config.onConfigChanged?.(() => this.resetCaches());
|
|
101
105
|
}
|
|
102
106
|
|
|
103
107
|
dispose(): void {
|
|
104
|
-
this._disposable
|
|
108
|
+
this._disposable?.dispose();
|
|
105
109
|
}
|
|
106
110
|
|
|
107
111
|
private resetCaches(): void {
|
|
@@ -574,6 +578,132 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
574
578
|
}
|
|
575
579
|
}
|
|
576
580
|
|
|
581
|
+
@trace({
|
|
582
|
+
args: (provider, token, owner, repo) => ({
|
|
583
|
+
provider: provider.name,
|
|
584
|
+
token: `<token:${token.microHash}>`,
|
|
585
|
+
owner: owner,
|
|
586
|
+
repo: repo,
|
|
587
|
+
}),
|
|
588
|
+
})
|
|
589
|
+
async getRepositoryMetadata(
|
|
590
|
+
provider: Provider,
|
|
591
|
+
token: TokenWithInfo,
|
|
592
|
+
owner: string,
|
|
593
|
+
repo: string,
|
|
594
|
+
options: {
|
|
595
|
+
baseUrl: string;
|
|
596
|
+
},
|
|
597
|
+
cancellation?: AbortSignal,
|
|
598
|
+
): Promise<RepositoryMetadata | undefined> {
|
|
599
|
+
const scope = getScopedLogger();
|
|
600
|
+
|
|
601
|
+
try {
|
|
602
|
+
const response = await this.getRepository(
|
|
603
|
+
provider,
|
|
604
|
+
token,
|
|
605
|
+
owner,
|
|
606
|
+
repo,
|
|
607
|
+
options.baseUrl,
|
|
608
|
+
scope,
|
|
609
|
+
cancellation,
|
|
610
|
+
);
|
|
611
|
+
if (response == null) return undefined;
|
|
612
|
+
|
|
613
|
+
// Azure's `parentRepository` only reliably carries the repo name and its project; a fork's parent
|
|
614
|
+
// lives in the same organization, so the org (`owner`) is the parent owner. Only report `parent`
|
|
615
|
+
// when the parent's name is actually present — never fall back to the fork's own name.
|
|
616
|
+
return {
|
|
617
|
+
provider: provider,
|
|
618
|
+
owner: owner,
|
|
619
|
+
// Prefer the API's canonical name over parsing the composite `repo` descriptor string.
|
|
620
|
+
name: response.name,
|
|
621
|
+
isFork: response.isFork ?? false,
|
|
622
|
+
parent:
|
|
623
|
+
response.isFork && response.parentRepository?.name != null
|
|
624
|
+
? { owner: owner, name: response.parentRepository.name }
|
|
625
|
+
: undefined,
|
|
626
|
+
} satisfies RepositoryMetadata;
|
|
627
|
+
} catch (ex) {
|
|
628
|
+
// Cancellations and 404s are expected outcomes for a probe; don't log them as errors.
|
|
629
|
+
if (!isCancellationError(ex) && !(ex instanceof RequestNotFoundError)) {
|
|
630
|
+
scope?.error(ex);
|
|
631
|
+
}
|
|
632
|
+
return undefined;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
@trace({
|
|
637
|
+
args: (provider, token, owner, repo) => ({
|
|
638
|
+
provider: provider.name,
|
|
639
|
+
token: `<token:${token.microHash}>`,
|
|
640
|
+
owner: owner,
|
|
641
|
+
repo: repo,
|
|
642
|
+
}),
|
|
643
|
+
})
|
|
644
|
+
async getDefaultBranch(
|
|
645
|
+
provider: Provider,
|
|
646
|
+
token: TokenWithInfo,
|
|
647
|
+
owner: string,
|
|
648
|
+
repo: string,
|
|
649
|
+
options: {
|
|
650
|
+
baseUrl: string;
|
|
651
|
+
},
|
|
652
|
+
cancellation?: AbortSignal,
|
|
653
|
+
): Promise<DefaultBranch | undefined> {
|
|
654
|
+
const scope = getScopedLogger();
|
|
655
|
+
|
|
656
|
+
try {
|
|
657
|
+
const response = await this.getRepository(
|
|
658
|
+
provider,
|
|
659
|
+
token,
|
|
660
|
+
owner,
|
|
661
|
+
repo,
|
|
662
|
+
options.baseUrl,
|
|
663
|
+
scope,
|
|
664
|
+
cancellation,
|
|
665
|
+
);
|
|
666
|
+
if (response?.defaultBranch == null) return undefined;
|
|
667
|
+
|
|
668
|
+
return {
|
|
669
|
+
provider: provider,
|
|
670
|
+
name: normalizeAzureBranchName(response.defaultBranch),
|
|
671
|
+
} satisfies DefaultBranch;
|
|
672
|
+
} catch (ex) {
|
|
673
|
+
// Cancellations and 404s are expected outcomes for a probe; don't log them as errors.
|
|
674
|
+
if (!isCancellationError(ex) && !(ex instanceof RequestNotFoundError)) {
|
|
675
|
+
scope?.error(ex);
|
|
676
|
+
}
|
|
677
|
+
return undefined;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
private getRepository(
|
|
682
|
+
provider: Provider,
|
|
683
|
+
token: TokenWithInfo,
|
|
684
|
+
owner: string,
|
|
685
|
+
repo: string,
|
|
686
|
+
baseUrl: string,
|
|
687
|
+
scope: ScopedLogger | undefined,
|
|
688
|
+
cancellation?: AbortSignal,
|
|
689
|
+
): Promise<AzureRepositoryWithMetadata | undefined> {
|
|
690
|
+
const parts = repo.split('/');
|
|
691
|
+
const [projectName, segment, repoName] = parts;
|
|
692
|
+
// The descriptor must be exactly `"{project}/_git/{repoName}"`; bail before issuing a bogus request.
|
|
693
|
+
if (parts.length !== 3 || segment !== '_git' || !projectName || !repoName) {
|
|
694
|
+
throw new Error(`Invalid Azure repository descriptor '${repo}'; expected '{project}/_git/{repoName}'.`);
|
|
695
|
+
}
|
|
696
|
+
return this.request<AzureRepositoryWithMetadata>(
|
|
697
|
+
provider,
|
|
698
|
+
token,
|
|
699
|
+
baseUrl,
|
|
700
|
+
`${owner}/${projectName}/_apis/git/repositories/${repoName}?api-version=7.1`,
|
|
701
|
+
{ method: 'GET' },
|
|
702
|
+
scope,
|
|
703
|
+
cancellation,
|
|
704
|
+
);
|
|
705
|
+
}
|
|
706
|
+
|
|
577
707
|
private async request<T>(
|
|
578
708
|
provider: Provider,
|
|
579
709
|
token: TokenWithInfo,
|
|
@@ -583,7 +713,7 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
583
713
|
scope: ScopedLogger | undefined,
|
|
584
714
|
cancellation?: AbortSignal | undefined,
|
|
585
715
|
): Promise<T | undefined> {
|
|
586
|
-
const { accessToken
|
|
716
|
+
const { accessToken } = token;
|
|
587
717
|
const url = baseUrl ? `${baseUrl}/${route}` : route;
|
|
588
718
|
|
|
589
719
|
let rsp: Response;
|
|
@@ -593,8 +723,8 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
593
723
|
try {
|
|
594
724
|
if (cancellation?.aborted) throw new CancellationError();
|
|
595
725
|
|
|
596
|
-
rsp = await this.
|
|
597
|
-
this.
|
|
726
|
+
rsp = await this.config.wrapForForcedInsecureSSL(provider.getIgnoreSSLErrors(), () =>
|
|
727
|
+
this.config.fetch(url, {
|
|
598
728
|
headers: {
|
|
599
729
|
Authorization: `Basic ${base64(`PAT:${accessToken}`)}`,
|
|
600
730
|
'Content-Type': 'application/json',
|
|
@@ -608,15 +738,16 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
608
738
|
return (await rsp.json()) as T;
|
|
609
739
|
}
|
|
610
740
|
|
|
611
|
-
|
|
741
|
+
// Reads the body so the 403 branch below can tell a throttled request from a permission failure.
|
|
742
|
+
throw await ProviderFetchError.fromResponse('AzureDevOps', rsp);
|
|
612
743
|
} finally {
|
|
613
744
|
sw?.stop();
|
|
614
745
|
}
|
|
615
746
|
} catch (ex) {
|
|
616
747
|
if (ex instanceof ProviderFetchError || ex.name === 'AbortError') {
|
|
617
|
-
this.handleRequestError(provider,
|
|
748
|
+
this.handleRequestError(provider, token, ex, scope);
|
|
618
749
|
} else if (Logger.isDebugging) {
|
|
619
|
-
this.
|
|
750
|
+
this.config.onError?.(`AzureDevOps request failed: ${ex.message}`);
|
|
620
751
|
}
|
|
621
752
|
|
|
622
753
|
throw ex;
|
|
@@ -625,12 +756,13 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
625
756
|
|
|
626
757
|
private handleRequestError(
|
|
627
758
|
provider: Provider | undefined,
|
|
628
|
-
|
|
759
|
+
token: TokenWithInfo,
|
|
629
760
|
ex: ProviderFetchError | (Error & { name: 'AbortError' }),
|
|
630
761
|
scope: ScopedLogger | undefined,
|
|
631
762
|
): void {
|
|
632
763
|
if (ex.name === 'AbortError' || !(ex instanceof ProviderFetchError)) throw new CancellationError(ex);
|
|
633
764
|
|
|
765
|
+
const { accessToken, ...tokenInfo } = token;
|
|
634
766
|
switch (ex.status) {
|
|
635
767
|
case 404: // Not found
|
|
636
768
|
case 410: // Gone
|
|
@@ -638,27 +770,21 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
638
770
|
throw new RequestNotFoundError(ex);
|
|
639
771
|
case 401: // Unauthorized
|
|
640
772
|
throw new AuthenticationError(tokenInfo, AuthenticationErrorReason.Unauthorized, ex);
|
|
773
|
+
case 429: // Too Many Requests
|
|
774
|
+
throw toRateLimitError(ex, accessToken);
|
|
641
775
|
case 403: // Forbidden
|
|
642
|
-
//
|
|
643
|
-
//
|
|
644
|
-
//
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
// resetAt = parseInt(reset, 10);
|
|
649
|
-
// if (Number.isNaN(resetAt)) {
|
|
650
|
-
// resetAt = undefined;
|
|
651
|
-
// }
|
|
652
|
-
// }
|
|
653
|
-
|
|
654
|
-
// throw new RequestRateLimitError(ex, token, resetAt);
|
|
655
|
-
// }
|
|
776
|
+
// Azure returns 403 for both a permission failure and a throttled request ("Request was blocked
|
|
777
|
+
// due to exceeding usage of resource 'RateLimit'"), so the message is the discriminant. Reporting
|
|
778
|
+
// a throttle as `auth` would prompt the user to re-authenticate a healthy connection instead of
|
|
779
|
+
// retrying (see `isRateLimitResponse`).
|
|
780
|
+
if (isRateLimitResponse(ex)) throw toRateLimitError(ex, accessToken);
|
|
781
|
+
|
|
656
782
|
throw new AuthenticationError(tokenInfo, AuthenticationErrorReason.Forbidden, ex);
|
|
657
783
|
case 500: // Internal Server Error
|
|
658
784
|
scope?.error(ex);
|
|
659
785
|
if (ex.response != null) {
|
|
660
786
|
provider?.trackRequestException();
|
|
661
|
-
this.
|
|
787
|
+
this.config.onRequestFailed?.(
|
|
662
788
|
`${provider?.name ?? 'AzureDevOps'} failed to respond and might be experiencing issues.${
|
|
663
789
|
provider == null || provider.id === 'azure'
|
|
664
790
|
? ' Please visit the [AzureDevOps status page](https://status.dev.azure.com) for more information.'
|
|
@@ -683,9 +809,14 @@ export class AzureDevOpsApi implements Disposable {
|
|
|
683
809
|
|
|
684
810
|
scope?.error(ex);
|
|
685
811
|
if (Logger.isDebugging) {
|
|
686
|
-
this.
|
|
812
|
+
this.config.onError?.(
|
|
687
813
|
`AzureDevOps request failed: ${(ex.response as any)?.errors?.[0]?.message ?? ex.message}`,
|
|
688
814
|
);
|
|
689
815
|
}
|
|
690
816
|
}
|
|
691
817
|
}
|
|
818
|
+
|
|
819
|
+
/** Wires an {@link AzureDevOpsApi} from the full runtime context, mapping `ctx` down to the narrow config. */
|
|
820
|
+
export function createAzureDevOpsApi(ctx: IntegrationServiceContext): AzureDevOpsApi {
|
|
821
|
+
return new AzureDevOpsApi(baseProviderApiConfig(ctx));
|
|
822
|
+
}
|